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


当前回答

gi

转到上次编辑的位置(如果你进行了一些搜索,然后想要返回编辑,这非常有用)

^P和^N

完成上一个(^P)或下一个(^N)文本。

^O和^I

转到前一个(^O -“O”为旧)位置或下一个(^I -“I”靠近“O”)位置。 当你执行搜索、编辑文件等时,你可以通过这些“跳转”向前和向后导航。

其他回答

<Ctrl> + W, V垂直分割屏幕 <Ctrl> + W, W在窗口之间移动

!python % [args]来运行我在此窗口中编辑的脚本

ZF在可视模式下折叠任意线条

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

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进入视觉模式(行),它会自动选择整行,无论光标在哪里。

使用内置的文件资源管理器!这个命令是:Explore,它允许你非常非常快地浏览源代码。我在我的。vimrc中有这些映射:

map <silent> <F8>   :Explore<CR>
map <silent> <S-F8> :sp +Explore<CR>

资源管理器还允许您修改文件。我将发布一些我最喜欢的键,按<F1>将给你完整的列表:

-:最有用的:更改到上目录(cd ..) mf:标记文件 D:如果没有标记,删除标记文件或光标所在的文件。 R:重命名光标所在的文件。 d:在当前目录下新建目录 %:在当前目录下创建一个新文件

In addition to the great reply about grokking vi, it should be noted that vim does add some very vi-like features that make using vi commands nicer. The one that comes to mind first are text objects: instead of {!}fmt to reformat the current paragraph, !apfmt does the same. It works by first specifying that we want to select a text object, which is the current paragraph. Similar, to change the current string literal (foo to bar for an example), instead of T"ct"bar (move to just after the previous ", change until just before the next ", insert bar), you can say ci"bar: change inside (innermost) quotes, inserting bar.

从文本对象而不是移动命令的角度思考是非常不错的。

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