我听说过很多关于Vim的事,包括优点和缺点。
(作为一名开发人员)使用Vim确实应该比使用其他任何编辑器都要快。
我用Vim来做一些基本的事情,我用Vim最多只能减少10倍的效率。
当你谈论速度时,只有两件事你应该关心(你可能不够关心,但你应该关心):
左右交替使用的
用手是最快的方法
键盘。
永远不要碰鼠标
第二种方法是尽可能快。
你要花很长时间才能移动你的手,
抓住鼠标,移动它,把它带来
回到键盘上(你经常这样做
看看键盘,确保你
将你的手正确地回到正确的位置)
下面的两个例子说明了为什么我使用Vim效率低得多。
复制/剪切和粘贴。我一直都这么做。在所有当代编辑器中,你用左手按Shift键,用右手移动光标来选择文本。然后按Ctrl+C复制,移动光标,按Ctrl+V粘贴。
Vim的情况很糟糕:
Yy复制一行(你几乎不需要整行!)
[number xx]yy复制xx行到缓冲区。但你永远不知道你是否选择了你想要的。我经常要做[number xx]dd然后u来撤销!
另一个例子吗?搜索和替换。
在PSPad中:按Ctrl+f,然后输入你想要搜索的内容,然后按Enter。
在Vim: /中,然后输入你想要搜索的内容,然后如果有一些特殊字符,在每个特殊字符前放\,然后按Enter。
Vim的一切都是这样的:似乎我不知道如何正确处理它。
注:我已经读了Vim小抄:)
我的问题是:
与当代编辑器相比,您使用Vim的哪些方式使您的工作效率更高?
维姆插件
这里有很多很好的答案,其中一个关于vi的禅意的答案令人惊讶。我没有看到提到的一件事是vim可以通过插件进行极大的扩展。有脚本和插件可以让它做原作者从未考虑过的各种疯狂的事情。下面是一些非常好用的vim插件的例子:
rails.vim
Rails。Vim是tpope编写的插件。对于从事rails开发的人来说,这是一个不可思议的工具。它做了一些神奇的上下文敏感的事情,允许您轻松地从控制器中的方法跳转到相关视图,再跳转到模型,再向下跳转到该模型的单元测试。它为rails开发人员节省了数十甚至数百个小时的时间。
gist.vim
这个插件允许你在视觉模式下选择一个文本区域,然后输入一个快速命令将其发布到gi.github.com。这允许简单的pastebin访问,如果你通过IRC或IM与某人合作,这是非常方便的。
space.vim
这个插件为空格键提供了特殊的功能。它把空格键变成类似于周期的东西,但它不是重复动作,而是重复运动。这对于以动态定义的方式快速浏览文件非常方便。
surround.vim
这个插件使您能够处理以某种方式分隔的文本。它给出的对象表示括号内的东西,引号内的东西,等等。它可以在操作带分隔符的文本时派上用场。
supertab.vim
这个脚本为vim带来了花哨的选项卡补全功能。在vim的核心中已经有了自动完成的东西,但是这使它变成了一个快速的选项卡,而不是多个不同的多键快捷键。非常方便,而且使用起来非常有趣。虽然它不是VS的智能感知,但它是一个伟大的步骤,并带来了大量您希望从选项卡补全工具中期望的功能。
syntastic.vim
该工具将外部语法检查命令引入vim。我个人没有使用过它,但我听说过关于它的很棒的东西,而且它的概念很难被超越。无需手动检查语法可以极大地节省时间,并且可以帮助您在引入语法错误时捕获它们,而不是在最终停止测试时捕获它们。
fugitive.vim
从vim内部直接访问git。同样,我没有使用过这个插件,但我可以看到实用程序。不幸的是,在我所处的文化中,svn被认为是“新”的,所以我在很长一段时间内不太可能在工作中看到git。
nerdtree.vim
用于vim的树浏览器。我最近开始用这个,真的很方便。它可以让您在垂直分割中放置树视图,并轻松打开文件。这对于一个经常在许多源文件之间切换的项目非常有用。
FuzzyFinderTextmate.vim
这是一个未维护的插件,但仍然非常有用。它提供了使用“模糊”描述性语法打开文件的能力。这意味着在一个稀疏的文件树中,您只需要输入足够的字符来消除您感兴趣的文件与其余杂乱文件的歧义。
结论
有许多令人难以置信的工具可用于vim。我确信我在这里只触及了表面,寻找适用于您的领域的工具是非常值得的。结合了传统vi强大的工具集,vim的改进,以及进一步扩展vim的插件,它是有史以来最强大的编辑文本的方法之一。Vim与emacs、eclipse、visual studio和textmate一样强大。
谢谢
感谢duwanis的vim配置,从中我学到了很多,并借鉴了这里列出的大部分插件。
在代码中插入文本:
ctrl + v, (selecting text on multiple lines), I, (type something I want), ESC
记录一个宏来编辑文本并运行N次:
q, a (or some other letter), (do the things I want to record), q, ESC,
(type N, as in the number of times I want to run the macro), @, a