当前位置:  开发笔记 > 编程语言 > 正文

Vim和Ctags提示和技巧

如何解决《Vim和Ctags提示和技巧》经验,为你挑选了11个好方法。

我刚刚使用我的Vim(或者更确切地说是gVim)安装了Ctags(以帮助进行C++开发),并希望找到您最喜欢的命令,宏,快捷方式,以及随之而来的提示......

分享你最好的武器库.在Vim开发中你会推荐哪些其他Vim附加组件用于C++?

编辑您将与Ctags一起使用的其他附加组件?

EDIT2您使用哪个版本的gVim标签?这有什么不同吗?

EDIT3如何增强大型和小型项目的编程体验?



1> Amjith..:

Ctrl+ ]- 转到定义
Ctrl+ T- 从定义中跳回来.
Ctrl+ W Ctrl+ ]- 以水平分割打开定义

在vimrc中添加这些行
map :tab split:exec("tag ".expand(""))
map :vsp :exec("tag ".expand(""))

Ctrl+ \- 在新选项卡中打开定义
Alt+ ]- 以垂直拆分打开定义

生成标记后.您可以使用以下键标记和标记功能:

Ctrl+ Left MouseClick- 转到定义
Ctrl+ Right MouseClick- 从定义中跳回


`g C-]`非常有用.它会打开一个快速对话框,在多个定义之间选择一个.
C - ] =>(控制键)和]键C - T =>(控制键)和T键仅适用于新手到ctags.感谢您的新标签
类似地,在使用`Ctrl-w C-]分割窗口后,您可以执行`Cw T`(又名Shift-t)将该分割更改为新选项卡.
`g]`也很有用.您可以将光标放在标签名称上,然后按"g]"获取匹配标签列表.

2> uzi..:

一行总是在我的.vimrc中:

set tags=./tags;/

这将在当前目录中查找"tags",并将树向上处理,直到找到一个.IOW,你可以在源代码树的任何地方而不仅仅是它的根目录.


走向root是过分的.我建议只改为回家:标签+ =标签; $ HOME
我工作的源代码树并不总是在我的主目录中...并且$ HOME往往是远离root的两个目录...好吧,我可以再提供两个目录查找.:)
我同意w/uzi.如果我的cwd是/ home/me/programming/foo/bar/baz/bang/bam那只有8个目录查找.我想这取决于你对速度的容忍度,但查找1目录的时间与我机器上的8没有明显不同.

3> nimrodm..:

另一个用于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找到符号或函数的定义.Cscope可以找到所有调用函数的地方.使用它们都可以很容易地在大型源代码树中导航.
@Whaledawg是的,当我按下CTRL +]我的声卡在输出中发送"clap.wav":)

4> strager..:

您可以将目录添加到ctags查找中.例如,我有一个为Qt4构建的ctags索引,并在我的.vimrc中有这个:

set tags+=/usr/local/share/ctags/qt4



5> Johan..:

所有以上和......

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


我认为添加taglist.vim是最下载的vim插件会很好.

6> strager..:

我使用ALT-left和ALT-right来弹出/推送/到标签栈.

" Alt-right/left to navigate forward/backward in the tags stack
map  
map  

如果您使用hjkl移动,则可以映射不是.


我认为这比默认更直观,更清晰.

7> Heikki Naski..:

几个同名的定义

g在拆分中打开定义,但也:tjump可以转到定义,或者,如果有多个定义,则为您提供可供选择的定义列表.


与第一个命令类似,vim有一个`:ptag`命令可以在预览窗口中打开定义.

8> raimue..:

我最常使用的命令是C-],它跳转到光标下函数的定义.您可以更频繁地使用它来跟随更多呼叫.在那之后,Co将带你回到一个级别,Ci再次深入.


Ct返回C-]堆栈中的一个级别,而Co在移动后返回到前一个光标位置.因此,如果你C-]到一个函数然后向下翻页,Ct将立即返回,而Co将返回到函数的开头,*然后*回到调用.

9> Walter..:

我发现taglist插件是必备的.它在单独的窗口中列出了它所知道的所有标签(您已打开的文件),并且可以非常轻松地导航较大的文件.

我主要用它来进行Python开发,但它只能更好地用于C/C++.



10> Luc Hermitte..:

我已经在我的实验插件中封装了标签操作.

关于vim的C++开发,我已经回答了那里:我用我自己的套房,和其他几个插件.



11> Mykola Golub..:

我已经调整我的vim插件两年来支持足够大的c ++项目.你可以看一下它们.

他们使用ctags和cscsope.

http://www.vim.org/scripts/script.php?script_id=1638
http://www.vim.org/scripts/script.php?script_id=2507

推荐阅读
路人甲
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有