在编写大型应用程序时使用Vim


17

我开始学习Vim,并遵循stackexchange中此处给出的一些建议。我开始在一些玩具项目中使用它,对此我感到很高兴。
但是我开始想知道如何在不始终打开​​其他文件的情况下提高工作效率,只是想知道该类的名称如何,其他文件中包含的宏是什么,等等。

您可以提供哪些常见建议?


1
您肯定需要添加一些Vim脚本来提供帮助。我使用Vim进行很多编程,并且我总是使用ctags来帮助我浏览源代码。使用什么语言?
tehnyit 2011年

Answers:


10

从IDE到控制台/ xterm环境的经验丰富的程序员的一个方面是寻找替代源代码对象(函数名称,变量)的索引的方法。我相信用于Microsoft Visual Studio的通用术语是Intellisense或类似的东西。

在Unix / Linux世界中,例如vim ctags旺盛的ctags是 if 或流行的多语言Open Source实现所使用的一种工具。它不是vim特定的,并且受Unix,Linux,MS Windows,Mac OS文本编辑器的支持,包括Emacs,CRiSP,vile和其他许多vi克隆,nedit,gedit,JED,UltraEdit,BBEdit和DreamWeaver (其中一些通过第三方插件)。

除此之外,良好的设计和周到的分解,较大的项目的组织使项目易于管理,因为只有1-2个明显的潜在位置可以寻找任何给定的信息(typedefclass定义等)。

另外,我使用了多个vim实例(通常通过view来查看源文件的只读方式),以及每个vim实例有限地使用多个编辑缓冲区(主要用于在文件之间移动或重构代码)。我发现一次只使用几个打开的源文件可以以很小的方式帮助您,让我专注于手头的任务。


1
+1表示旺盛的标签
Attila O.

1
我发现仅仅组织起来有很大帮助。如果您可以查看源代码中的工件,然后说“必须在此位置定义”,那么事情会变得简单得多。从好的方面来说,启动vim会话是如此之快,以至于一次打开六打成为一件很正常的事
Zachary K

@ZacharyK半打?在一天结束之前,我通常会吃一
整顿

取决于一天
Zachary K

7

我无意参加VIM与IDE的辩论。我想那是个人喜好。但是我使用了很多VIM,这就是为什么我发现使用vim非常强大的原因

答案分为两部分:

答:VIM允许您执行IDE的大多数操作(我不是在尝试介绍所有功能,而只是尝试一些不明显的功能使vi看起来受到限制)

  1. 您可以ctags启用并遍历原型ctrl+{

  2. 您可以使用:sp'filename'命令同时打开多个窗口。当然,有时我只是打开多个终端以使生活更轻松。

  3. 强大的语法突出显示。默认以及其他内容。另外,与某些IDE不同,如果开括号,字符串不匹配或与闭括号不匹配,则会为您提供非常清晰的指示。它适用于大多数语言,而不是特定的。

  4. 您可以使用命令执行命令行,":!make"而不必离开窗口。

  5. 特拉弗斯快得多基于词的基础上,搜索(如果可用的Vi支持正则表达式),你可以遍历{}使用ESC %

  6. 在执行步骤调试并保留vi的同时,可以在GDB中进行工作(在其他窗口中进行代码处理)。当您决定更改文件时,可以再次进行制作并将其重新加载到GDB中。

B.在VIM中发现很多更好的东西

  1. 搜索和替换绝对更强大。

  2. 您可以创建自定义的外观和感觉(黑色+绿色,白色+蓝色),更重要的是您自己的强大命令。

  3. 垂直块选择。尝试ctrl+v垂直移动光标。这确实是不可想象的功能!

  4. 听起来有点麻烦-但请尝试剪切/复制一个块并将其粘贴30次!它只需要做1次就可以了。此外,尝试重做(而不是撤消)一项或多次活动。

  5. 自动缩进,制表符控制和自动将注释转换为块注释或特定样式的注释的方式。

  6. 与vimdiff有效合并冲突。

  7. 基于控制台的工作环境最重要的是,您永远都不会碰鼠标!因此,如果您使用快速键盘,则IDE不好。

  8. 同时在多台机器和服务器上工作!看起来并不明显,但有时在服务器上工作时,您直接登录多台计算机并执行操作。

如果对这些功能有严格的要求,将回答如何使用vi进行操作。请参阅此网站Vimcast。当然有很多。

但是,是的,大多数基于控制台的东西都是老式的,我绝不反对IDE。


小提示:vim :make内置有一个命令,您甚至不需要!(对于不使用vim的用户,可以在终端上执行命令)。我是在ctrl-v几周前才发现的,现在我不断使用它,它非常有用。
凯文

@Kevin-好吧,我对<code>:make </ code>一无所知!知道这真令人兴奋。使用VIM可以得到一种浪漫的感觉-永远无法列出VIM可以让您做的所有功能!它总是让您感到惊讶。谢谢。
Dipan Mehta

是的,那很棒。的优点:make是它会自动将您移至第一个错误,并且您可以使用cn和浏览它们cp,请参见:help make。直到我抬起头,我才真正意识到这一点。我通常在不同的窗口和pwd中进行创建,看来您必须与Makefile位于同一窗口中,尽管您可以将其中一个放置在src目录中只是为了移至根目录并在其中进行。
凯文

4

在我看来,Vim为您提供了一个非常强大的具有基本功能的编辑器,但是您可以使用在项目中最有可能使用的脚本/插件来为其增添趣味。根据您主要是编辑脚本,文档还是需要编译的文件,这些内容可能会有所不同。

例如,我zencoding偶尔进行html / css编辑,snipmate为的TextMate样片段,以及一对夫妇蟒蛇相关的附加组件(pyflakespep8vimpdbPython的编码,这是我做的最经常,等等)。

还有其他一些我不经常使用的插件,但我仍然发现它们偶尔还是有用的,例如 DpasteConqueTerm

对我来说,Vim最有用的功能还是内置的(基于时间的撤消,快速导航,范围过滤器等)-我找不到的东西(或者至少不是那么容易访问的东西) )。因此,一旦将Vim设置为具有您真正需要的一点点(snipmatectags...),就可以从IDE和控制台环境中受益。

我对Vim的使用仅限于控制台,所以我不能说这些工具对Gvim的帮助。

尽管所有的插件善良,但是,我仍然觉得自己运行!grep ...^Z + find ...飘飞。


3

我在vim中进行所有编程。实际上,我发现它比我使用过的任何IDE都容易。您甚至可以在同一屏幕上同时打开多个文件(查找选项卡和窗口)。我通常在X中工作,所以我打开了几(6)个xterm屏幕:一个用于vim中的c文件(在选项卡中是几个),另一个用于vim中的标头(也是选项卡),以及非vim窗口:构建,调试,配置等。即使在纯控制台上,我也可以使用选项卡,窗口和代码折叠来查看所需内容,并且可以在不退出vim的情况下构建甚至查看手册页,您只需要了解正确的命令。而且有很多,我敢肯定我还没有掌握其中的一半。而且很难击败vim的搜索和替换。


1

已经有很多大规模的应用程序(至少有两个;),我的猜测是,将有更多的应用程序完全用Vim编写。可以这么说,IDE本身仍是相当现代的创新

但是,缺少普通的香草vi(ouch)或Vim。了解Vim并以某种方式进行思考会有所帮助,而插件会有所帮助,而www.vim.org就是源源不断的信息。一些特定于您使用的语言的语言,以及一些通用的语言(用于注释,文件浏览,...),可以迅速将其转变为一个非常快速的开发环境。毕竟(有些人肯定会争论),IDE只是一个编辑器,其插件打包在一个更好的接口中。IDE中也没有太多图形化内容。

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.