我刚刚安装了Ctags(用于辅助C++开发),并希望了解您最喜欢的命令、宏、快捷键、技巧等...
分享您的最佳武器。您还建议为Vim上的C++开发使用哪些其他插件?
编辑 您会与Ctags一起使用哪些其他插件?
编辑2 您使用的gVim版本有何不同?是否有影响?
编辑3 您如何增强大型和小型项目的编程体验?
我刚刚安装了Ctags(用于辅助C++开发),并希望了解您最喜欢的命令、宏、快捷键、技巧等...
分享您的最佳武器。您还建议为Vim上的C++开发使用哪些其他插件?
编辑 您会与Ctags一起使用哪些其他插件?
编辑2 您使用的gVim版本有何不同?是否有影响?
编辑3 您如何增强大型和小型项目的编程体验?
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+左键单击
- 跳转到定义
Ctrl+右键单击
- 从定义处返回
Ctrl-w C-]
命令分割窗口后,你可以使用 C-w T
(即 Shift-t)将该窗口变成一个新的标签页。 - dash-tom-bangg]
也很有用。你可以将光标放在标签名称上,然后按下g]
键以获取匹配标签的列表。 - zeekvfu我 .vimrc 中必须要有的一行:
set tags=./tags;/
这将在当前目录中查找“tags”,并向上遍历树,直到找到一个为止。换句话说,您可以在源代码树的任何地方,而不仅仅是在其根目录中。
cscope
的东西? - szx/
。只需使用 ;
即可。 - danadam另一个有用的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和头文件列表。这样我只索引项目实际使用的文件。
find . -type f \( -iname "*.cpp" -o -iname "*.h" \)
。 - idbrii您可以将目录添加到ctags搜索中。例如,我已经为Qt4构建了一个ctags索引,并将其添加到我的.vimrc文件中:
set tags+=/usr/local/share/ctags/qt4
所有以上内容以及...
code_complete:函数参数完成、代码片段等等。
taglist.vim:源代码浏览器(支持C/C++,java,perl,python,tcl,sql,php等)
我使用 ALT-左箭头 和 ALT-右箭头 来从标签堆栈中弹出/推入。
" Alt-right/left to navigate forward/backward in the tags stack
map <M-Left> <C-T>
map <M-Right> <C-]>
如果你使用 hjkl
进行光标移动,你可以将其映射为 <M-h>
和 <M-l>
。
同名定义有多个
<C-w>g<C-]>
打开分区中的定义,并执行 :tjump
命令,如果只有一个定义,则直接跳转到该定义;如果有多个定义,则会显示可供选择的定义列表。
:ptag
命令,可以在预览窗口中打开定义。 - idbrii:h CursorHold-example
和ptag
,在可配置的超时时间后,在预览窗口中显示光标下项目的标签。 - dash-tom-bang:help
真的很棒... 请查看 :help CTRL-W_g}
和 :ptjump
。 - Andreas Fliesberg我最常使用的命令是C-],它可以跳转到光标下函数的定义。你可以更频繁地使用它来跟踪更多的调用。之后,C-o将带您返回上一层,C-i再次深入。
我发现taglist插件是必备的。它会在一个单独的窗口中列出所有已知的标签(您打开的文件),使得浏览大型文件变得非常容易。
我主要用它来进行Python开发,但对于C/C++来说也会更好用。