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


当前回答

快速剪切和覆盖一行的一部分:

编辑一行时,一个非常常见的任务是从当前光标位置剪切到某个位置,然后覆盖新内容。

可以使用以下命令:

Ct <标识符>为正向切割。

cT<identifier>用于反向切割。

行中要剪切到的字符在哪里。

例子:假设这是你想编辑的行,你的光标在I。

嗨。我是一名程序员,我用Python和R编程。

你想切到:,然后用I am a programmer覆盖,你输入:ct:,然后输入I am a programmer。这将导致:你好。我是程序员:Python和R。

快速删除一行的部分:

就像上面的命令一样,从当前光标位置删除内容,直到'identifier'

Dt <identifier>用于前向删除

dT<identifier>用于反向删除

希望这对你也有用。

其他回答

我最有成效的vi/Vim技巧是:

:%s

我喜欢能够使用正则表达式来替换文件中我想要的任何内容。恕我直言,每个文本编辑器都应该支持正则表达式。

批量文本操作!

通过宏:

开始录音:qq 做的东西 停止录制:q 重复:@q(第一次),然后@@。 重复20次:20@@

或者通过正则表达式:

替换stuff::%s/[fo]+/bar/g

(但要注意的是:如果你选择后者,你会遇到两个问题:))

我最近发现q:。它会打开“命令窗口”,并显示您最近的前模式(命令模式)命令。您可以像往常一样在窗口内移动,并按下<CR>执行命令。你也可以编辑等等。当你在处理一些复杂的命令或正则表达式时,你不想重新输入整个东西,或者如果你想做的复杂的事情是3个命令返回,这是无价的。它几乎类似于bash的set -o vi,但是是针对vim本身的(嘿!)

参见:help q:获取更多有趣的来回操作。

提高编辑速度的第三个标准是所需的击键次数。我得说这比你的其他两个更重要。在vim中,几乎所有的操作都比我熟悉的任何其他编辑器需要更少的按键。

You mention that you are having trouble with cut & paste, but it sounds like you need more experience with general motion commands in vim. yank 3 words: y3w yank from the cursor to the next semi-colon: yf; yank to the next occurrence of your most recent search: yn All of those are much faster than trying to navigate with a mouse while holding down a modifier key. Also, as seen in some of the examples in CMS's response, vim's motion commands are highly optimized for efficient navigation in C and C++ source code.

至于“如何使用vim使我更有效率?”,我希望答案是“高效”。

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