什么是补充Vim的最佳通用编程工具?[关闭]


22

我使用Vim作为文本编辑器已有一段时间了,我觉得我在做任何事情上都走了很长的路。我使用ctags标记我的代码库以进行导航,并使用grep(尽管效率低下)来查找使用某些方法的位置。但是我觉得有一些我不知道的非常有用的工具可以使我的工作效率更高。

我可以用来补充Vim的通用编程的最佳软件堆栈是什么?您如何浏览代码库,运行make,将更改推送到源代码管理系统等?在Vim旁边是否打开了第二个控制台?


2
Vim本身。也许您没有使用正确的插件/脚本来完成工作。这取决于您正在执行的编程类型,语言,所需的其他工具等等。
bitek 2010年

我没有指定任何语言,以免影响我得到的答复。我不是真的在寻找Vim插件,尽管它们很有用。
路易·萨林


我将此设为社区Wiki。我意识到对我的问题没有最好的答案。感谢大家的回答!
路易·萨林

Answers:


8

vim的一大特色是易于与现有的shell命令集成。一些最有用的外部工具是coreutils和其他简单文本操作工具中包含的工具。例如,我们可以使用以下命令获取文件中的行数:

:! wc -l %

或字数:

:! wc -w %

在Shell上运行的所有命令都将在此处运行。可以与:read:r)命令强大地结合使用,以将命令的输出放入文件中。例如:

:r !wc -l %

将字线数放入正在编辑的文件中。

这样做的另一个优点是用其中一个命令的输出替换了当前正在编辑的文本。例如,您可以par通过执行以下命令来格式化整个文件:

:% !par


4

无论使用哪种语言,您都想使用一种称为ctags的功能,该功能可以浏览源定义。这需要一个外部工具来生成TAGS文件,VIM使用该文件来发现项目中各种代码定义的位置。

获取旺盛的ctags工具,该工具可用于多种语言,并且易于使用。

从VIM :help ctags

ctags将在源树中创建所有标识符的索引。然后,您可以使用tag命令在源代码树中导航。见:help tag-commands。最简单的方法是将光标置于关键字上,然后按CTRL- ]。要返回您的所在地,请按CTRL-T

除此以外,您可能还想看一下这里讨论的一些VIM技巧和改进,它是对某些事情的非常全面的讨论,这些事情可以改善Vimmer的体验。


我确实在我的问题中提到我正在使用ctags,但是无论如何,感谢您的回答!:)
路易·萨林

4

Vim是一个非常强大的工具,我相信你们所有人都已经知道这一点。在几周内使用vim将开始提高工作效率。但是,您永远不会浸透对Vim的了解。因此,我一直在寻找Vim中新颖高效的处理方式。有一个叫Derek Wyatt的家伙,他对Vim的用法以及他使用的插件做了一些出色的截屏视频

我使用的一些插件

  1. command-t这使浏览文件变得轻而易举,并且非常智能

    Command-T插件提供了一种非常快速,直观的机制,可以以最少的击键次数打开文件。之所以命名为“ Command-T”,是因为它受到TextMate中与Command-T绑定的“转到文件”窗口的启发。

  2. Fuzzyfinder我主要使用它来浏览缓冲区并更改当前目录。

    FuzzyFinder提供了便捷的方法来快速到达所需的缓冲区/文件/命令/书签/标签。FuzzyFinder使用将输入的模式转换成的模糊/部分模式进行搜索

  3. NERDTree这是vim最好的文件浏览器插件。

    NERD树使您可以浏览文件系统并打开文件和目录。它以树的形式向您显示文件系统,您可以使用键盘和/或鼠标对其进行操作。它还允许您执行简单的文件系统操作。

  4. XPTemplate世界上最好的模板插件。

    Vim的代码片段引擎,带有片段库。XPTemplate使您可以流畅,快速和舒适地编写代码。

  5. rails.vim如果您做rails dev的东西,这是必不可少的。

    TextMate可能是开发Ruby on Rails应用程序的最新热潮,但Vim永远存在。该插件为Ruby on Rails应用程序开发提供以下功能。

  6. NerdCommenter使在任何类型的代码中进行注释变得容易。

这些只是我使用的一些插件,要使用vimrc下载所有插件,请签出我的dotfiles


3

VIM有一个很棒的插件,可以执行语法检查Syntastic。还有许多其他工具可用于文件管理,构建等。在freenode.net上的IRC #vim中,有很多有用的人。



1

如果您使用GCC支持的任何语言(C,C ++,Java,Fortran)编程,那么Clewn是一个很棒的插件,它将GDB调试器集成到VIM中。实际上,我发现它是存在的GDB的最佳接口之一。


0

我通常screen为每个项目设置一个会话。Vim在窗口0中,我将窗口1用于shell会话。如果我使用的是具有良好REPL的语言进行编码,则通常会在第2窗口中运行screen该代码。您可以使用其他终端窗口或多标签终端中的标签进行操作。我确实发现screen它比其他方法更稳定:如果您的终端应用程序崩溃,则可以启动另一个终端并重新连接到仍在运行的screen会话。 screen一旦学习了它,也可以非常快速地进行导航(就像vim本身一样)。

我最终最终将shell会话用于复杂的版本控制活动,例如重新定级或合并:可以从vim的命令行(例如:!git commit % -m 'Added info aboutscreen .')或使用逃犯的插件完成更简单的事情。我发现逃犯的逃犯: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将打开当前窗口的位置列表。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.