c++ - Vim和Ctags提示和技巧

  显示原文与译文双语对照的内容

我刚刚安装了 Ctags ( 帮助 C++ 开发) 和我的Vim ( 或者更确切地说),并想找出你喜欢的命令,宏,快捷键和提示。

共享你的最佳库。你在Vim开发中推荐使用的其他 Vim add-ons?

编辑其他add-on你将与Ctags一起使用?

EDIT2 你使用标记的gVim版本? 这是否有区别?

EDIT3 如何提高大型和小型项目的编程体验?

时间:

Ctrl + ] -转到定义
位于 definition, Ctrl + T - 跳转回来,
在水平 split, Ctrl + WCtrl + ] - 打开该定义

在幻灯片中添加这些行
map <C-> :tab split<CR>:exec("tag".expand("<cword>"))<CR>
map <A-]> :vsp <CR>:exec("tag".expand("<cword>"))<CR>

在新 tab, Ctrl + - 打开该定义
在垂直 split, Alt + ] - 打开该定义

在生成标记之后。 可以使用以下键标记和标记函数:

Ctrl + Left MouseClick - 转到定义
在 definition, Ctrl + Right MouseClick - 回跳

一行总是放在我的。vimrc:

 
set tags=./tags;/

 

这将在当前目录中查找"标签",并将树向上移动到根目录,直到找到一个。 低,你可以在你的源代码树的任何地方,而不仅仅是它的根。

另一个用于C 开发的有用插件是 Cscope,就像Ctags让你跳转到定义,Cscope跳转到调用的函数。

如果你的~/bin/目录中有 cscope,请将以下内容添加到你的. vimrc,并使用g^]转到调用函数( 请参阅:帮助 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 和头文件列表。 这样我只索引项目实际使用的文件。

我使用ALT-left和ALT-right从/到标记堆栈进行弹出/push 。


" 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的,如果有定义,则向你提供一个定义列表,以便从定义中选择。

我已经在一个实验插件中封装了标记操作。

关于vim中的C++ 开发,我已经回答了 : 我使用自己的套件和一些其他插件。

...