我使用Vim作为文本编辑器已有一段时间了,我觉得我在做任何事情上都走了很长的路。我使用ctags标记我的代码库以进行导航,并使用grep(尽管效率低下)来查找使用某些方法的位置。但是我觉得有一些我不知道的非常有用的工具可以使我的工作效率更高。
我可以用来补充Vim的通用编程的最佳软件堆栈是什么?您如何浏览代码库,运行make,将更改推送到源代码管理系统等?在Vim旁边是否打开了第二个控制台?
我使用Vim作为文本编辑器已有一段时间了,我觉得我在做任何事情上都走了很长的路。我使用ctags标记我的代码库以进行导航,并使用grep(尽管效率低下)来查找使用某些方法的位置。但是我觉得有一些我不知道的非常有用的工具可以使我的工作效率更高。
我可以用来补充Vim的通用编程的最佳软件堆栈是什么?您如何浏览代码库,运行make,将更改推送到源代码管理系统等?在Vim旁边是否打开了第二个控制台?
Answers:
我发现NERDtree对于浏览我的代码库必不可少。除此之外,花一些时间精通缓冲区/窗口也很值得。
无论使用哪种语言,您都想使用一种称为ctags的功能,该功能可以浏览源定义。这需要一个外部工具来生成TAGS文件,VIM使用该文件来发现项目中各种代码定义的位置。
获取旺盛的ctags工具,该工具可用于多种语言,并且易于使用。
从VIM :help ctags
ctags将在源树中创建所有标识符的索引。然后,您可以使用tag命令在源代码树中导航。见:help tag-commands
。最简单的方法是将光标置于关键字上,然后按CTRL- ]。要返回您的所在地,请按CTRL-T
除此以外,您可能还想看一下这里讨论的一些VIM技巧和改进,它是对某些事情的非常全面的讨论,这些事情可以改善Vimmer的体验。
Vim是一个非常强大的工具,我相信你们所有人都已经知道这一点。在几周内使用vim将开始提高工作效率。但是,您永远不会浸透对Vim的了解。因此,我一直在寻找Vim中新颖高效的处理方式。有一个叫Derek Wyatt的家伙,他对Vim的用法以及他使用的插件做了一些出色的截屏视频。
我使用的一些插件
command-t这使浏览文件变得轻而易举,并且非常智能。
Command-T插件提供了一种非常快速,直观的机制,可以以最少的击键次数打开文件。之所以命名为“ Command-T”,是因为它受到TextMate中与Command-T绑定的“转到文件”窗口的启发。
Fuzzyfinder我主要使用它来浏览缓冲区并更改当前目录。
FuzzyFinder提供了便捷的方法来快速到达所需的缓冲区/文件/命令/书签/标签。FuzzyFinder使用将输入的模式转换成的模糊/部分模式进行搜索
NERDTree这是vim最好的文件浏览器插件。
NERD树使您可以浏览文件系统并打开文件和目录。它以树的形式向您显示文件系统,您可以使用键盘和/或鼠标对其进行操作。它还允许您执行简单的文件系统操作。
XPTemplate世界上最好的模板插件。
Vim的代码片段引擎,带有片段库。XPTemplate使您可以流畅,快速和舒适地编写代码。
rails.vim如果您做rails dev的东西,这是必不可少的。
TextMate可能是开发Ruby on Rails应用程序的最新热潮,但Vim永远存在。该插件为Ruby on Rails应用程序开发提供以下功能。
NerdCommenter使在任何类型的代码中进行注释变得容易。
这些只是我使用的一些插件,要使用vimrc下载所有插件,请签出我的dotfiles
我最喜欢的是cscope。如果已编译了带有cscope支持的vim,则可以直接从VIM使用cscope命令。例如,搜索包含的文件,xyz函数调用的函数等。我已经在非常大的源代码存储库中进行过尝试。这很有帮助。
我通常screen
为每个项目设置一个会话。Vim在窗口0中,我将窗口1用于shell会话。如果我使用的是具有良好REPL的语言进行编码,则通常会在第2窗口中运行screen
该代码。您可以使用其他终端窗口或多标签终端中的标签进行操作。我确实发现screen
它比其他方法更稳定:如果您的终端应用程序崩溃,则可以启动另一个终端并重新连接到仍在运行的screen
会话。 screen
一旦学习了它,也可以非常快速地进行导航(就像vim本身一样)。
我最终最终将shell会话用于复杂的版本控制活动,例如重新定级或合并:可以从vim的命令行(例如:!git commit % -m 'Added info about
screen .'
)或使用逃犯的插件完成更简单的事情。我发现逃犯的逃犯:Gmove
(在vim和git索引中都重命名当前缓冲区)和:Gdiff
(在当前缓冲区中使用历史记录的前一点调用当前缓冲区的vimdiff)特别有用。您还可以执行以下操作,例如在暂存缓冲区中构建提交消息,从代码的各个部分复制文本,然后使用:%!git commit -F /dev/stdin
如果这适用于我正在处理的任何事情,例如,如果我正在编写命令行实用程序,我还将使用shell会话进行功能/集成测试。
Vim中的QuickFix功能对于调试非常有用,但有似乎是你可能想在工作的每一种语言需要不同的插件,他们似乎也采用多种调用技术,映射功能键或按键序列开始\
或,
,或自定义命令,或在保存缓冲区时自动调用。到目前为止,我还没有真正去烦恼这个问题,只是使用eg将单元测试或皮棉结果读取到暂存缓冲区中:r !python -m doctest whatever.py
。修改代码,切换回暂存缓冲区,u
进行撤消,然后:r
(大多数时候)单击和向上箭头以取回该命令。但是,根据您使用的语言,可能值得您花些时间为此找到一个插件。
对于流行的编译语言(如C,java等),:make
将进行构建,并且对quickfix列表的支持已经建立。因此,您可以随后:copen
显示quickfix缓冲区。它将显示错误列表,每行一个;点击Enter一行将使您的其他窗口跳至该文件中的该点。
如果您一次处理多个项目,则可以:lmake
安排将错误列表存储在位置列表中:这类似于快速修复列表,但与单个窗口相关联,而不是您内部的单个窗口vim实例。 :lopen
将打开当前窗口的位置列表。