VIM
1、安装 c++ 的 man 文档(此不是VIM插件)
"设置编码 if v:lang =~ "utf8$" || v:lang =~ "UTF-8$" set fileencodings=utf-8,latin1 endif "去掉vi一致性 set nocompatible "set nocp "配色方案选择,所有配色方案文件在 /usr/share/vim/vim70/colors 目录下 "colorscheme default colorscheme desert "让backspace回退键可用 set backspace=indent,eol,start "语法高亮显示 syntax on "syntax enable "把当前行的对齐格式应用到下一行 set autoindent "开启智能缩进,比如使用左大括号后回车会缩进 set smartindent "自动缩进长度,包括<< 与 >> 命令移动的长度 set shiftwidth=4 "se sw=4 "TAB长度 set tabstop=4 "显示行号 set nu "显示匹配,即输入一个右括号时,光标会迅速匹配一下左括号 "set showmatch "在编辑过程中,在右下角显示光标位置的状态行 set ruler "修改一个文件后,自动进行备份,备份的文件名为原文件名加“~“后缀 "set nobackup "set backup "解决复制后格式乱的问题,但该命令不建议写到配置文件里,因为它会取消自动缩进 "可以在粘贴时先 :set paste 粘贴完之后 :set nopaste "set paste "设置手动折叠 "set foldmethod=manual "打开文件类型自动检测功能 filetype on "设置vim记录的历史数,即输入:命令,按上方向键保存的命令数 set history=10 "搜索时忽略大小写 set ignorecase "设置一键编译 map <F6> :make<CR> "开启高亮显示查找结果 set hlsearch "搜索到文件两端时不重新搜索 set nowrapscan "突出显示当前行,即在当前行下面加下划线 "set cursorline "命令行的高度,默认为1 set cmdheight=1 "为特定的文件类型允许插件文件的载入, "如OmniCppComplete等插件,就必须开启此功能 filetype plugin on "设置 tags 的路径 set tags+=tags set tags+=/usr/share/vim/vim70/tags/libc.tags set tags+=/usr/share/vim/vim70/tags/susv2.tags set tags+=/usr/share/vim/vim70/tags/glib.tags set tags+=/usr/share/vim/vim70/tags/cpp.tags "OmniCppComplete 插件设置 let OmniCpp_NamespaceSearch = 1 let OmniCpp_GlobalScopeSearch = 1 let OmniCpp_ShowAccess = 1 let OmniCpp_ShowPrototypeInAbbr = 1 " show function parameters let OmniCpp_MayCompleteDot = 1 " autocomplete after . let OmniCpp_MayCompleteArrow = 1 " autocomplete after -> let OmniCpp_MayCompleteScope = 1 " autocomplete after :: let OmniCpp_DefaultNamespaces = ["std", "_GLIBCXX_STD"]
如果用VIM打开文件有中文乱码,可以在配置文件中加上如下:
set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936 set termencoding=utf-8 set encoding=utf-8
5、OmniCppComplete补全插件
很多年没更新了,最新版本是2007年的,下载地址是 http://www.vim.org/scripts/script.php?script_id=1520 ,不过仍然还是很好用的。
下载之后,放到 $HOME/.vim/目录下解压即可。然后在VIM配置文件里进行配置,配置见第4条。
该插件是利用 tags 来补全的,所以要先生成 tags 文件,并在配置文件里添加该文件路径。
ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .
新时代的Vim C++自动补全插件 clang_complete
http://www.cnblogs.com/Jiajun/p/3307979.html
下载地址:http://www.vim.org/scripts/script.php?script_id=3302
下载后将执行下面的语句即可完成安装:
vim clang_complete.vmb -c 'so %' -c 'q'
或者直接把下载的 clang_complete.vmb 复制到家目录下.vim/plugin 下
这时候编写一般的C++代码应该有智能提示了 ,不过对于C++11相关的代码却没有,比如智能指针,这时编辑 /etc/vimrc 文件,加上:
let g:clang_complete_copen=1
let g:clang_periodic_quickfix=1
let g:clang_snippets=1
let g:clang_close_preview=1
let g:clang_use_library=1
let g:clang_user_options='-std=c++11 -Imyinclude'
老实说,前面我都不知道什么意思,最后一句作用很大,引入c++11,和自己指定的头文件目录(如果出现找不到的话)
参考:http://www.cnblogs.com/egmkang/archive/2011/02/20/clang_complete.html
- 使用 Ctrl + N 强制打开补全列表
- 分别使用 Ctrl + N 和 Ctrl + P 来下翻和上翻
二、配置VIM语法文件:
VIM语法文件一般位于(如vim72):/usr/share/vim/vim72/syntax/ 文件夹下,如 c.vim、cpp.vim 等,也可以在家目录下新建 ~/.vim/syntax/c.vim 等。
1、添加自定义关键字,如自定义的类:
" User Defined DataType syn keyword cType User Room Game user_ptr
2、添加函数
3、添加操作符
"======================================================== " Highlight All Function "======================================================== syn match cFunction "/<[a-zA-Z_][a-zA-Z_0-9]*/>[^()]*)("me=e-2 syn match cFunction "/<[a-zA-Z_][a-zA-Z_0-9]*/>/s*("me=e-1 hi cFunction gui=NONE guifg=#B5A1FF "======================================================== " Highlight All Math Operator "======================================================== "C math operators syn match cMathOperator display "[-+/*/%=]" " C pointer operators syn match cPointerOperator display "->/|/." " C logical operators - boolean results syn match cLogicalOperator display "[!<>]=/=" syn match cLogicalOperator display "==" " C bit operators syn match cBinaryOperator display "/(&/||/|/^/|<</|>>/)=/=" "syn match cBinaryOperator display "/~" "syn match cBinaryOperatorError display "/~=" " More C logical operators - highlight in preference to binary syn match cLogicalOperator display "&&/|||" syn match cLogicalOperatorError display "/(&&/|||/)=" " Math Operator hi cMathOperator guifg=#3EFFE2 hi cPointerOperator guifg=#3EFFE2 hi cLogicalOperator guifg=#3EFFE2 hi cBinaryOperator guifg=#3EFFE2 hi cBinaryOperatorError guifg=#3EFFE2 hi cLogicalOperator guifg=#3EFFE2 hi cLogicalOperatorError guifg=#3EFFE2 "======================================================== " My Own DataType "======================================================== syn keyword cType User Room Game
在 cpp.vim 中如下设置颜色:
hi cPointerOperator guifg=#3EFFE2 ctermfg=132
其中,guifg 表示GUI的前景色,ctermfg表示彩色终端前景色。(相应的还有guibg,ctermbg,还有设置属性的如 gui 和 cterm ,其值可以为 bold,underline 。
export TERM=xterm-256color 设置终端使用256色.
从 http://www.vim.org/scripts/script.php?script_id=3412 下载 xterm-color-table.vim.tar.gz 然后解压后,把 plugin/xterm-color-table.vim 放到 vim 的插件目录,然后在VIM里执行 :XtermColorTable 即可显示下面图片:
光标在一个单词上,按 gd ,会高亮显示此文件中所有此单词,并跳到定义处;按 * 键会跳到下一个;按 # 键会跳到上一个。
http://blog.csdn.net/fbfsber008/article/details/7055842
ctags:
Ctrl + ] 跳转到定义处,Ctrl + T 回到上一个跳转处。
每个参数解释如下:
-R:ctags循环生成子目录的tags
--c++-kinds=+px :ctags记录c++文件中的函数声明和各种外部和前向声明
--fields=+iaS :ctags要求描述的信息,其中i表示如果有继承,则标识出父类;a表示如果元素是类成员的话,要标明其调用权限(即是public还是private);S表示如果是函数,则标识函数的signature。
--extra=+q:强制要求ctags做如下操作—如果某个语法元素是类的一个成员,ctags默认会给其记录一行,可以要求ctags对同一个语法元素再记一行,这样可以保证在VIM中多个同名函数可以通过路径不同来区分。
参考:http://www.vimer.cn/2009/10/%E5%9C%A8vim%E4%B8%AD%E4%BD%BF%E7%94%A8ctags.html
VIM同时编辑多个文件:
http://blog.sina.com.cn/s/blog_6c9d65a10100nj76.html