我刚刚使用我的Vim(或者更确切地说是gVim)安装了Ctags(以帮助进行C++开发),并希望找到您最喜欢的命令,宏,快捷方式,以及随之而来的提示......
分享你最好的武器库.在Vim开发中你会推荐哪些其他Vim附加组件用于C++?
编辑您将与Ctags一起使用的其他附加组件?
EDIT2您使用哪个版本的gVim标签?这有什么不同吗?
EDIT3如何增强大型和小型项目的编程体验?
Ctrl+ ]- 转到定义
Ctrl+ T- 从定义中跳回来.
Ctrl+ W Ctrl+ ]- 以水平分割打开定义
在vimrc中添加这些行
map
map
Ctrl+ \- 在新选项卡中打开定义
Alt+ ]- 以垂直拆分打开定义
生成标记后.您可以使用以下键标记和标记功能:
Ctrl+ Left MouseClick
- 转到定义
Ctrl+ Right MouseClick
- 从定义中跳回
一行总是在我的.vimrc中:
set tags=./tags;/
这将在当前目录中查找"tags",并将树向上处理,直到找到一个.IOW,你可以在源代码树的任何地方而不仅仅是它的根目录.
另一个用于C开发的有用插件是cscope 正如Ctags允许你跳转到定义,Cscope跳转到调用函数.
如果在〜/ bin /目录中有cscope,请将以下内容添加到.vimrc并使用g ^]转到调用函数(请参阅:help cscope).
if has("cscope") set csprg=~/bin/cscope set csto=0 set cst set nocsverb " add any database in current directory if filereadable("cscope.out") cs add cscope.out " else add database pointed to by environment elseif $CSCOPE_DB != "" cs add $CSCOPE_DB endif endif
几乎忘了......就像ctags一样 - 你必须生成(并定期更新)数据库.我使用以下脚本
select_files > cscope.files ctags -L cscope.files ctags -e -L cscope.files cscope -ub -i cscope.files
其中'select_files'是另一个从Makefile中提取C和头文件列表的脚本.这样我只索引项目实际使用的文件.
您可以将目录添加到ctags查找中.例如,我有一个为Qt4构建的ctags索引,并在我的.vimrc中有这个:
set tags+=/usr/local/share/ctags/qt4
所有以上和......
code_complete:函数参数完整,代码片段等等.
http://www.vim.org/scripts/script.php?script_id=1764
taglist.vim:源代码浏览器(支持C/C++,java,perl,python,tcl,sql,php等)
http://www.vim.org/scripts/script.php?script_id=273
我使用ALT-left和ALT-right来弹出/推送/到标签栈.
" Alt-right/left to navigate forward/backward in the tags stack mapmap
如果您使用hjkl
移动,则可以映射
而
不是.
几个同名的定义
在拆分中打开定义,但也:tjump
可以转到定义,或者,如果有多个定义,则为您提供可供选择的定义列表.
我最常使用的命令是C-],它跳转到光标下函数的定义.您可以更频繁地使用它来跟随更多呼叫.在那之后,Co将带你回到一个级别,Ci再次深入.
我发现taglist插件是必备的.它在单独的窗口中列出了它所知道的所有标签(您已打开的文件),并且可以非常轻松地导航较大的文件.
我主要用它来进行Python开发,但它只能更好地用于C/C++.
我已经在我的实验插件中封装了标签操作.
关于vim的C++开发,我已经回答了那里:我用我自己的套房,和其他几个插件.
我已经调整我的vim插件两年来支持足够大的c ++项目.你可以看一下它们.
他们使用ctags和cscsope.
http://www.vim.org/scripts/script.php?script_id=1638
http://www.vim.org/scripts/script.php?script_id=2507