485 vim ctags vim-macros
我刚刚使用我的Vim(或者更确切地说是gVim)安装了Ctags(以帮助进行C++开发),并希望找到您最喜欢的命令,宏,快捷方式,以及随之而来的提示......
分享你最好的武器库.在Vim开发中你会推荐哪些其他Vim附加组件用于C++?
编辑您将与Ctags一起使用的其他附加组件?
EDIT2您使用哪个版本的gVim标签?这有什么不同吗?
EDIT3如何增强大型和小型项目的编程体验?
Amj*_*ith 394
Ctrl+ ]- 转到定义
Ctrl+ T- 从定义中跳回来.
Ctrl+ W Ctrl+ ]- 以水平分割打开定义
在vimrc中添加这些行
map <C-\> :tab split<CR>:exec("tag ".expand("<cword>"))<CR>
map <A-]> :vsp <CR>:exec("tag ".expand("<cword>"))<CR>
Ctrl+ \- 在新选项卡中打开定义
Alt+ ]- 以垂直拆分打开定义
生成标记后.您可以使用以下键标记和标记功能:
Ctrl+ Left MouseClick
- 转到定义
Ctrl+ Right MouseClick
- 从定义中跳回
uzi*_*uzi 176
一行总是在我的.vimrc中:
set tags=./tags;/
Run Code Online (Sandbox Code Playgroud)
这将在当前目录中查找"tags",并将树向上处理,直到找到一个.IOW,你可以在源代码树的任何地方而不仅仅是它的根目录.
nim*_*odm 45
另一个用于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
Run Code Online (Sandbox Code Playgroud)
几乎忘了......就像ctags一样 - 你必须生成(并定期更新)数据库.我使用以下脚本
select_files > cscope.files
ctags -L cscope.files
ctags -e -L cscope.files
cscope -ub -i cscope.files
Run Code Online (Sandbox Code Playgroud)
其中'select_files'是另一个从Makefile中提取C和头文件列表的脚本.这样我只索引项目实际使用的文件.
str*_*ger 27
您可以将目录添加到ctags查找中.例如,我有一个为Qt4构建的ctags索引,并在我的.vimrc中有这个:
set tags+=/usr/local/share/ctags/qt4
Run Code Online (Sandbox Code Playgroud)
Joh*_*han 23
所有以上和......
code_complete:函数参数完整,代码片段等等.
taglist.vim:源代码浏览器(支持C/C++,java,perl,python,tcl,sql,php等)
str*_*ger 16
我使用ALT-left和ALT-right来弹出/推送/到标签栈.
" Alt-right/left to navigate forward/backward in the tags stack
map <M-Left> <C-T>
map <M-Right> <C-]>
Run Code Online (Sandbox Code Playgroud)
如果您使用hjkl
移动,则可以映射<M-h>
而<M-l>
不是.
Hei*_*ski 10
几个同名的定义
<C-w>g<C-]>
在拆分中打开定义,但也:tjump
可以转到定义,或者,如果有多个定义,则为您提供可供选择的定义列表.
我最常使用的命令是C-],它跳转到光标下函数的定义.您可以更频繁地使用它来跟随更多呼叫.在那之后,Co将带你回到一个级别,Ci再次深入.
我已经调整我的vim插件两年来支持足够大的c ++项目.你可以看一下它们.
他们使用ctags和cscsope.
http://www.vim.org/scripts/script.php?script_id=1638
http://www.vim.org/scripts/script.php?script_id=2507