使用VIM有效地使用Ruby / Rails

我最近一直在使用VIM作为我的编辑选择,但是仍然没有发现自己比Sublime Text 2获得了更多的生产力。我已经阅读了“实用Vim”这本书的一半,并且得到了我几乎完全在正常模式,而不是插入模式。 偶尔使用Visual。

我的Vim插件如下:

➜ depot-app git:(master) ls -l ~/.vim/bundle total 84 drwxrwxr-x 5 richard richard 4096 Jun 9 17:31 bufexplorer drwxrwxr-x 4 richard richard 4096 Jun 8 23:48 jacinto.vim drwxrwxr-x 5 richard richard 4096 Jun 8 23:41 nerdcommenter drwxrwxr-x 9 richard richard 4096 Jun 8 23:39 nerdtree drwxrwxr-x 8 richard richard 4096 Jun 8 23:43 syntastic drwxrwxr-x 6 richard richard 4096 Jun 8 23:51 vim-bundler drwxrwxr-x 11 richard richard 4096 Jun 8 23:47 vim-coffee-script drwxrwxr-x 5 richard richard 4096 Jun 8 23:30 vim-commentary drwxrwxr-x 4 richard richard 4096 Jun 8 23:35 vim-endwise drwxrwxr-x 5 richard richard 4096 Jun 8 23:39 vim-eunuch drwxrwxr-x 8 richard richard 4096 Jun 8 23:46 vim-haml drwxrwxr-x 6 richard richard 4096 Jun 8 23:45 vim-markdown drwxrwxr-x 6 richard richard 4096 Jun 8 23:51 vim-rails drwxrwxr-x 4 richard richard 4096 Jun 8 23:36 vim-repeat drwxrwxr-x 13 richard richard 4096 Jun 8 23:50 vim-ruby drwxrwxr-x 8 richard richard 4096 Jun 8 23:52 vim-ruby-refactoring drwxrwxr-x 6 richard richard 4096 Jun 8 23:35 vim-speeddating drwxrwxr-x 5 richard richard 4096 Jun 8 23:37 vim-surround drwxrwxr-x 6 richard richard 4096 Jun 8 23:53 vim-textobj-rubyblock drwxrwxr-x 6 richard richard 4096 Jun 8 23:51 vim-textobj-user drwxrwxr-x 5 richard richard 4096 Jun 8 23:38 vim-unimpaired 

在崇高的文字2中,我可以按Alt +。 要快速关闭任何html标签,还有绑定用引号括起一行,或插入并将光标放在中间,这样我就不必自己输入eRuby标签了。 然后是缺乏自动完成,但我可以没有这个,至少现在。

我怎样才能在Vim中完成这些事情?

注意:我正在使用Ubuntu存储库中的最新版本的vim。

Vim有不同的完成机制来满足不同的需求:关键字完成,行完成,文件名完成……以及omni-completion,这可能就是你所需要的。 但是,Vim不会执行自动完成function,但是有许多插件可以提供该function: AutoComplPop , NeoComplete , YouCompleteMe ……

在尝试这些插件之前,我建议您阅读:help new-omni-completion (以及相关页面)并学习如何使用内置机制。 显然既不是自动的也不是非常舒适,但很容易重新映射到其他东西并起作用。


你已经拥有了Surround:这就是你可以用引号括起来(提示)文本的东西。 你现在需要的是:help surround 。 这是用于用双引号括住当前行的快捷方式:

 yss" 

虽然<%= %>可以通过缩写( :help abbreviations )相对容易地完成:

 iabbrev etag <%= %> 

像SnipMate或UltiSnips这样的插件可以更好地处理这种事情。


上面提到的omni-completion可以用来关闭HTML标签,但它并不是真正的最佳选择。 我倾向于使用SnipMate插入标签,但有许多标签关闭插件,如XML.vim 。

事实上,这个问题和etag可以通过单个插件RagTag轻松解决。

祝好运。

只要你有vim-rails和vim-surround就可以在<%= %>插入模式下按= 。 关于终端的注意事项您可能需要做s=

关闭标签可以通过ragtag或closetag插件完成。 有关更多选项,请参阅以下文章: 如何快速关闭Vim中的HTML标记?

听起来你的路很顺利。 查看以下一些链接,以解决您遇到的问题。 有很多方法可以在vim中插入需求。 我在以下方面取得了成功:

要快速关闭任何html标记/插入<%=%>,请尝试ragtag.vim( https://github.com/tpope/vim-ragtag )。 要用引号括起一行,请尝试使用surround.vim( https://github.com/tpope/vim-surround )。 Tim Pope(也是rails.vim插件的作者)有一些其他值得关注的简洁插件。 最后,对于自动完成,请参阅Vim自动完成 。 我发现将自动完成映射到选项卡很有用。

你应该认真尝试Snipmate 。 它允许你做类似html事情,然后按TAB,它将为你提供完整的HTML标签,并将光标放在方便的编辑方式。 它支持多种语言,包括ruby和RoR。