重新配了一下vim

本文介绍了Vim编辑器的高级配置方法,包括多种插件的安装与设置,如ctags、omnicppcomplete等,以提升代码编写效率。同时分享了具体的.vimrc配置文件内容,展示了如何实现代码自动补全、目录树显示等功能。

之前把vim弄得乱七八糟,这次重新弄了一下。

现在主要有以下功能和对应插件:

1 按 . 或 :: 或 -> 的自动补全,补全是根据自定义的类型以及C++标准库类型 ;快捷键跳转到函数定义: 插件ctags,插件omnicppcomplete

2 注释等快捷键:插件c-support

3 在输入代码时自动匹配,不用按快捷键,匹配语言关键字或是曾经输入的历史记录:插件autocomplpop

4 目录树显示:插件nerdtree

5 每个文件的函数名,等显示:插件taglist(依赖于ctags)

具体这些插件怎么安装,没时间写了,可以搜索这些插件的使用方法。


现把~/.vim文件夹下的目录结构截图:



配置文件~/.vimrc的内容如下:

配置文件日期:2013.04.21 21:36

colorscheme jungle
set hlsearch
set backspace=2
set autoindent
set ruler
set showmode
set bg=dark
set nobackup                " 覆盖文件时不备份
set autochdir               " 自动切换当前目录为当前文件所在的目录
"filetype plugin indent on   " 开启插件
set noerrorbells            " 关闭错误信息响铃
set novisualbell            " 关闭使用可视响铃代替呼叫
set t_vb=                   " 置空错误铃声的终端代码
set t_Co=256

"自动缩进的时候,缩进尺寸为4个空格
set sw=4

"Tab宽度为4个字符
set ts=4

"可以使用鼠标
set mouse=a

"使用C样式的缩进
set cindent

"为C程序提供自动缩进
set smartindent

"打开 C/C++ 风格的自动缩进。 打开了自动缩进后, 在编码的时候我们可以使用“V”命令选中一段文本后.
set cin
                                
" 设定默认解码
set fenc=utf-8
set fencs=utf-8,usc-bom,euc-jp,gb18030,gbk,gb2312,cp936

" 不要使用vi的键盘模式,而是vim自己的
set nocompatible

" history文件中需要记录的行数
set history=100

" 在处理未保存或只读文件的时候,弹出确认
set confirm

" 与windows共享剪贴板
set clipboard+=unnamed

" 侦测文件类型
filetype on

" 载入文件类型插件
filetype plugin on

" 为特定文件类型载入相关缩进文件
filetype indent on

"取消补全内容以分割子窗口形式出现,只显示补全列表
set completeopt=longest,menu

" 保存全局变量
set viminfo+=!

" 带有如下符号的单词不要被换行分割
set iskeyword+=_,$,@,%,#,-

" 语法高亮
syntax on

" 高亮字符,让其不受100列限制
:highlight OverLength ctermbg=red ctermfg=white guibg=red guifg=white
:match OverLength '\%101v.*'

" 状态行颜色
highlight StatusLine guifg=SlateBlue guibg=Yellow
highlight StatusLineNC guifg=Gray guibg=White



" C++的编译和运行
 map <F6> :call CompileRunGpp()<CR>
 func! CompileRunGpp()
 exec "w"
 exec "!g++ % -o %<"
 exec "! ./%<"
 endfunc

 " C的编译和运行
 map <F5> :call CompileRunGcc()<CR>
 func! CompileRunGcc()
 exec "w"
 exec "!gcc % -o %<"
 exec "! ./%<"
 endfunc



"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Autocommands
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 只在下列文件类型被侦测到的时候显示行号,普通文本文件不显示

if has("autocmd")
   autocmd FileType xml,html,c,cs,java,perl,shell,bash,cpp,python,vim,php,ruby,nc set number
   autocmd FileType xml,html vmap <C-o> <ESC>'<i<!--<ESC>o<ESC>'>o-->
   autocmd FileType java,c,cpp,nc,cs vmap <C-o> <ESC>'<o
   autocmd FileType html,text,php,vim,c,nc,java,xml,bash,shell,perl,python setlocal textwidth=100
   autocmd Filetype html,xml,xsl source $VIMRUNTIME/plugin/closetag.vim
"autocmd BufReadPost *
   \ if line("'"") > 0 && line("'"") <= line("$") |
   \   exe "normal g`"" |
   \ endif
endif " has("autocmd")


 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

 " => Plugin configuration

 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
 
 " NERDTree
 let NERDTreeMouseMode = 3        "单击打开文件和文件夹

 map <F8> :NERDTreeToggle<CR>

 " taglist
 let Tlist_Auto_Highlight_Tag = 1
 let Tlist_Auto_Open = 0
 let Tlist_Auto_Update = 1
 let Tlist_Close_On_Select = 0
 let Tlist_Compact_Format = 0
 let Tlist_Display_Prototype = 1
 let Tlist_Display_Tag_Scope = 0
 let Tlist_Enable_Fold_Column = 0
 let Tlist_Exit_OnlyWindow = 1
 let Tlist_File_Fold_Auto_Close = 0
 let Tlist_GainFocus_On_ToggleOpen = 1
 let Tlist_Hightlight_Tag_On_BufEnter = 1
 let Tlist_Inc_Winwidth = 0
 let Tlist_Use_Right_Window = 1    "在右侧窗口中显示taglist窗口
 let Tlist_Show_One_File = 1       "只显示一个文件的list
 let Tlist_Use_SingleClick = 1     "点击一次就显示成员或变量定义的位置

 map <F12> :TlistToggle<CR>



"""""""""""""""""""""""""""""""""""""""""""""""""""""
" => 自动补全
""""""""""""""""""""""""""""""""""""""""""""""""""""""
"au FileType php setlocal dict+=/etc/vim/php_funclist.txt

"php 中 一般是会在 $, ->, :: 后需要出现自动补全,在 .vimrc 中加入以下代码:

"if !exists('g:AutoComplPop_Behavior')
"    let g:AutoComplPop_Behavior = {}
"    let g:AutoComplPop_Behavior['php'] = []
"    call add(g:AutoComplPop_Behavior['php'], {
"         \   'command'   : "\<C-x>\<C-o>", 
"         \   'pattern'   : printf('\(->\|::\|\$\)\k\{%d,}$', 0),
"         \   'repeat'    : 0,
"         \})
"endif


"2013-4-15添加
"-- omnicppcomplete setting --
set completeopt=menu,menuone
let OmniCpp_MayCompleteDot = 1 " autocomplete with .
let OmniCpp_MayCompleteArrow = 1 " autocomplete with ->
let OmniCpp_MayCompleteScope = 1 " autocomplete with ::
let OmniCpp_SelectFirstItem = 2 " select first item (but don't insert)
let OmniCpp_NamespaceSearch = 2 " search namespaces in this and included files
let OmniCpp_ShowPrototypeInAbbr = 1 " show function prototype  in popup window
let OmniCpp_GlobalScopeSearch=1
let OmniCpp_DisplayMode=1
let OmniCpp_ShowAccess = 1
let OmniCpp_DefaultNamespaces=["std"]


" -- ctags setting  2013.4.16 11:06
set nocp
autocmd FileType c,cpp,cc set tags+=~/.vim/tags/cpptags
autocmd FileType nc set tags+=~/.vim/tags/nesCtags
au BufWritePost *.c,*.cpp,*.cc,*.nc,*.h !ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .



"在 Vim 中实现括号自动补全:

":inoremap ( ()<ESC>i
":inoremap ) <c-r>=ClosePair(')')<CR>
":inoremap { {}<ESC>i
":inoremap } <c-r>=ClosePair('}')<CR>
":inoremap [ []<ESC>i
":inoremap ] <c-r>=ClosePair(']')<CR>

"function ClosePair(char)
"    if getline('.')[col('.') - 1] == a:char
"        return "\<Right>"
"    else
"        return a:char
"    endif
"endf


" 查看方法输入:Man api_name
source $VIMRUNTIME/ftplugin/man.vim

" 映射之后就可以少按一下 Shift 键。
cmap man Man

" 在普通模式下按下 K (大写)即可启动 man 查看光标下的函数。
nmap K :Man <cword><CR>



"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => nesC配置
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
augroup filetypedetect  
      au! BufRead,BufNewFile *nc setfiletype nc  
augroup END







传一张最终的效果图:



无界云图(开源在线图片编辑器源码)是由四川爱趣五科技推出的一款类似可画、创客贴、图怪兽的在线图片编辑器。该项目采用了React Hooks、Typescript、Vite、Leaferjs等主流技术进行开发,旨在提供一个开箱即用的图片编辑解决方案。项目采用 MIT 协议,可免费商用。 无界云图提供了一系列强大的图片编辑功能,包括但不限于: 素材管理:支持用户上传、删除和批量管理素材。 操作便捷:提供右键菜单,支持撤销、重做、导出图层、删除、复制、剪切、锁定、上移一层、下移一层、置顶、置底等操作。 保存机制:支持定时保存,确保用户的工作不会丢失。 主题切换:提供黑白主题切换功能,满足不同用户的视觉偏好。 多语言支持:支持多种语言,方便全球用户使用。 快捷键操作:支持快捷键操作,提高工作效率。 产品特色 开箱即用:无界云图采用了先进的前端技术,用户无需进行复杂的置即可直接使用。 免费商用:项目采用MIT协议,用户可以免费使用和商用,降低了使用成本。 技术文档齐全:提供了详细的技术文档,包括技术文档、插件开发文档和SDK使用文档,方便开发者进行二次开发和集成。 社区支持:提供了微信技术交流群,用户可以在群里进行技术交流和问题讨论。 环境要求 Node.js:需要安装Node.js环境,用于运行和打包项目。 Yarn:建议使用Yarn作为包管理工具,用于安装项目依赖。 安装使用 // 安装依赖 yarn install // 启动项目 yarn dev // 打包项目 yarn build 总结 无界云图是一款功能强大且易于使用的开源在线图片编辑器。它不仅提供了丰富的图片编辑功能,还支持免费商用,极大地降低了用户的使用成本。同时,详细的文档和活跃的社区支持也为开发者提供了便利的二次开发和集成条件。无论是个人用户还是企业用户,都可以通过无界云图轻
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值