我听说过很多关于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的哪些方式使您的工作效率更高?


当前回答

实际上我总是丢失我的缓冲区,所以我通常复制一行的方式是把它写到一个临时文件,然后在适当的位置读入。

e.g.

Ka(设定标记)

”,。w !T(将标记中的所有内容复制到文件T)

. .移动你的光标。

:.rt(将t读入当前点)。

与使用缓冲区相比,这可能需要更少的击键,更容易跟踪,并且您可以拥有长期存在的粘贴文件。为了速度,我通常用一个字母来命名文件。

快速移动光标的关键原因是,你只需使用搜索函数“/”,如果你在到达你想去的地方之前遇到另一个模式,则使用“n”。

其他回答

CTRL + A增加你所站的数字。

特别是对于复制/剪切和粘贴,使用可视化模式更容易适应其他编辑器。我通常复制粘贴的方法是

Esc - exit Insert mode (skip if you are already in Normal mode) v - turn on visual mode move about the file to select the text you want - visual mode will show you what characters are selected. For a few words w, e and b are useful (move to start of next word, end of next word and start of this/previous word respectively). d - cut the text (use y if you want to copy the text) move about to where you want the text to go p - paste (this pastes after the current character, P pastes before the current character.

同样有用的是使用V进入视觉模式(行),它会自动选择整行,无论光标在哪里。

前几天我刚刚发现Vim的全功能完成,虽然我承认我有点模糊,但我已经获得了令人惊讶的好结果,只是混合Ctrl + x Ctrl + u或 Ctrl + n/Ctrl +p插入模式。这不是智能感知,但我还在学习。

试试吧!:帮助ins-completion

花30分钟做vim教程(在终端运行vimtutor而不是vim)。您将学习基本的动作和一些击键,这将使您使用vim至少与使用之前使用的文本编辑器一样高效。在那之后,好吧,再读一遍吉姆·丹尼斯的回答:)

你说的是文本选择和复制,我认为你应该看看Vim可视模式。

在可视模式下,您可以使用Vim命令选择文本,然后可以对所选内容做任何您想做的事情。

考虑以下常见场景:

您需要选择到下一个匹配的括号。

你可以这样做:

如果光标位于开始/结束括号上,则为V % 如果光标位于圆括号块内,则返回Vib

你想要在引号之间选择文本:

Vi”表示双引号 Vi '表示单引号

你想要选择一个大括号块(在c风格语言中非常常见):

viB vi {

你想要选择整个文件:

ggVG

可视化块选择是另一个非常有用的功能,它允许你选择一个矩形区域的文本,你只需要按Ctrl-V来启动它,然后选择你想要的文本块,并执行任何类型的操作,如拉拽,删除,粘贴,编辑等。编辑面向列的文本非常棒。