2

我最近一直在使用 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。

4

4 回答 4

2

Vim 有不同的补全机制来满足不同的需求:关键字补全、行补全、文件名补全……和全能补全,这可能是你需要的。不过, Vim 不做自动补全,但有许多插件提供该功能:AutoComplPopNeoCompleteYouCompleteMe ...</p>

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


您已经有了 Surround:这就是允许您用引号等包围(提示)文本的原因。你现在需要的是阅读:help surround。这是用双引号将当前行括起来的快捷方式:

yss"

虽然<%= %>使用缩写( )可以相对容易地完成这件事:help abbreviations

iabbrev etag <%= %><Left><Left><Left>

SnipMateUltiSnips这样的插件可以更好地处理这种事情。


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

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

祝你好运。

于 2013-06-20T20:32:38.437 回答
2

只要你有 vim-rails 和 vim-surround 你应该可以<c-s>=在插入模式下按下<%= %>. 请注意您可能需要在终端上执行的操作<c-g>s=

关闭标签可以通过ragtagclosetag插件完成。有关更多选项,请参阅这篇文章:如何在 Vim 中快速关闭 HTML 标记?

于 2013-06-20T20:08:24.237 回答
1

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

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

于 2013-06-20T20:08:54.647 回答
1

您应该认真尝试Snipmate。它允许您执行类似html然后按 TAB 的操作,它将为您提供完整的 HTML 标记,并将光标放在方便的编辑方式上。它支持多种语言,包括 ruby​​ 和 RoR。

于 2013-06-20T20:16:53.400 回答