vim插件

放假两天一直都在整vim插件的事情,把所有的东西整下 Conque Shell http://www.vim.org/scripts/script.php?script_id=2771 vim中分开一个窗口开shell,默认的是 insert模式,可以输入命令,esc到命令模式之后可以复制输出, :ConqueTerm <command> :ConqueTermSplit bash :ConqueTermVSplit bash :ConqueTermTab bash taglist http://www.vim.org/scripts/script.php?script_id=273 依赖系统软件ctags 在目录下执行ctags -R生成tags文件, WinManager http://www.vim.org/scripts/script.php?script_id=95 窗口管理器 在vimrc文件中配置 let g:winManagerWindowLayout='FileExplorer|TagList' nmap wm :WMToggle<cr> 在taglist中, 到左下边taglist显示的窗口中,移动到标签,回车可在右侧直接显示标签所在文件和行,空格只在下面显示,右侧不更新 在右边代码中<C-]>进入和<C-T><C-O>退出 MiniBufExplorer显示所有的buffer文件 http://www.vim.org/scripts/script.php?script_id=159 当打开多个buffer文件的时候,上面会显示各个文件名,C+W跳到这个窗口中去,tab可选择buffer,回车显示文件,d删除光标所在的buffer 自动补全 OmniCppComplete插件,应该是默认安装好的了 命令模式下输入 :set omnifunc? 如果得到的结果为:omnifunc=ccomplete#Complete,说明有必要进行以下的操作以实现针对c++的自动补全 创建stdc++ 对应的tags: A)首先下载经高手修改定制的libstdc++头文件,可以到这里下载: http://www.vim.org/scripts/script.php?script_id=2358 并将其解压 B) 运行以下命令 $ cd ~/tags $ ctags -R --sort=1 --c++-kinds=+p --fields=+iaS --extra=+q --language-force=C++ -f tags cpp_src 然后把整个文件夹(包含下载的cpp_src和生成的tags文件)放到一个可以访问的地方,比如 /home/yourname/.vim/self_add_tags_store/tags 然后在vimrc文件中把上面生成的tags文件添加进去 (另外把/usr/include/c++/4.6下面的我也生成了一个tags文件,都加入进去了) filetype plugin indent on  “打开文件检测 syntax enable syntax on set background=dark 默认选择之后看不清楚,用这个可以看清楚。 set tags=tags set tags+=/usr/include/c++/tags set tags+=/home/yourname/.vim/self_add_tags_store/tags set completeopt=longest,menu 默认的当有abc.   或者abc:: 就会去自动补全 如果不是上面的两种,可以写一部分然后C-X 加C-O就可以调出函数了, C-X C-P是补全文本。 参考 http://vim.wikia.com/wiki/C%2B%2B_code_completion C.Vim,可以添加很多默认的模版, 对其中的模版可以修改下,/home/yourname/.vim/c-support/templates/Templates/ SetMacro( 'AUTHOR',      'self_name' )这些玩意 每次新生成的文件和插入的函数,之类的模版可以在cpp.statements.template和c.statements.template这些文件中去改 具体的comments.template是注释模版 preprocessor.template是头文件include 那些东西 statements.template是if, for ,which这些 c.idioms.template是插入的main函数,emun,插入函数,for( x=0; x<n; x+=1 )这些东西 help csupport \if等命令插入的 <+argument_list+>这种东西,C+j可以删掉,而且是删掉一个自动跳到下一个 \rc一键编译,如果编译失败,自动跳出quickfix窗口, \rr一键编译运行 查找文件FuzzyFinder http://www.vim.org/scripts/script.php?script_id=1984 依赖vim插件L9 library map ,, :FufCoverageFile <cr> 按,,打开匹配文件窗口 Visual Mark 需要修改 安装 visualmark.vim 后,如果是在 Ubuntu 下做标记,会报一个“E197 不能设定语言为'en_US'"的错误 将visualmark.vim中的 exec ":lan mes en_US"更改为exec ":lan POSIX" mm标记,F2,跳到下一个标记,关闭vi之后标记失效 Grep 在当前目录下的文件中查找 :Grep quickfix 默认已经安装好了,在文件搞好之后,输入 :make之后,会编译文件,等待编译结束之后,按:cw就可以出来quickfix窗口,点击对应的错误信息,就可以自动跳到错误的地方了 :cn        // 切换到下一个结果 :cp        // 切换到上一个结果 如果你经常使用这两个命令, 你还可以给他们设定快捷键, 比如在~/.vimrc中增加: nmap <F6> :cn<cr> nmap <F7> :cp<cr> nmap <F5> :make<cr> 可以使用cvim插件生成makefile文件,vim tmp.c,\nr就可以导入模版,其中有 makefile模版,把其中的EXECUTABLE和SOURCES改掉就好,然后把文件重命名为Makefile 具体使用截图   自己的vimrc文件内容 set ts=4 set autoindent set expandtab set shiftwidth=4 set hlsearch syntax enable set cindent set nocompatible syntax on set background=dark "make so to insert new line and still in this line nmap so o<ESC>k nmap sO O<ESC>j " Smart way to move between windows nmap <C-j> <C-W>j nmap <C-k> <C-W>k nmap <C-h> <C-W>h nmap <C-l> <C-W>l nmap <F6> :cn<cr> nmap <F7> :cp<cr> nmap <F5> :make<cr> " when use sh , create new vsp  to do shell nmap sh :ConqueTermVSplit bash<cr> "set auto complete filetype plugin indent on set tags=tags set tags+=/usr/include/c++/tags set tags+=/home/youname/.vim/self_add_tags_store/tags set completeopt=longest,menu 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 " enable the global scope search let OmniCpp_DisplayMode=1 " Class scope completion mode: always show all members let OmniCpp_DefaultNamespaces=["std"] let OmniCpp_ShowScopeInAbbr=1 " show scope in abbreviation and remove the last column let OmniCpp_ShowAccess=1 "set for cscope :set cscopequickfix=s-,c-,d-,i-,t-,e- let g:winManagerWindowLayout='FileExplorer|TagList' nmap wm :WMToggle<cr> "set for FuzzFinder "can only match pattern file , but not use it ":let g:fuf_coveragefile_globPatterns=['*.java','*.cc','*.c','*.cpp','*.h','*.json','*.txt','*.xml','*.py'] nmap ,, :FufCoverageFile <cr> 有一个比较纠结的选项,set mouse=a  设置之后用鼠标会很方便,但是putty的鼠标选择复制没办法用了,两难啊 (解决  set mouse=nv 想要复制的时候就按个冒号,进入 command 模式, 然后就可以释放鼠标了。) 参考http://blog.csdn.net/namecyf/article/details/7787523 http://blog.csdn.net/liumengxinfly/article/details/6967687 http://my.oschina.net/alphajay/blog/51316 http://vim.wikia.com/wiki/C%2B%2B_code_completion

Published: November 11 2012