在 Vim 中的何处输入命令

Where to input commands in Vim

我是 Vim 的新手,发现大多数用户都认为每个人都本能地知道如何使用它 ;)

我将它与 Git 一起使用,并试图找出如何在变基命令中向上或向下移动一行。

这个answer说我可以做以下事情

ddkP

但我不知道该怎么办。如果我直接输入,Vim 怎么知道我要移动哪一行?

感谢澄清!

这些是普通模式命令。普通模式是 Vim 与其他编辑器的不同之处。

例如,在“常规”编辑器中,如果您按 d,您将输入“d”字母;所以要删除当前行,您需要一些特殊的组合键,例如Ctrl-Y.

在Vim中你只需按下dd(没有任何控件,alts等)来删除当前行.缺点是您必须切换到特殊的插入模式才能键入字母。 (因此在某些时候也会从 Insert 切换回 Normal)。所以使用 Vim 有效地意味着“模式切换优化”,也就是说,一个 vimmer 应该有几十个(正常模式)技巧在他的“指尖”。事实上,对于任何应用程序的有经验的用户来说,这并不少见,但在 Vim 中,初学者真的很痛苦,直到他们能够不假思索地输入 ddkP 和其他简单的东西。

所以在普通模式下输入 ddkP 意味着:“删除(剪切)当​​前行”(dd);然后“向上移动光标”(k);然后“在当前光标(行)之前放置(粘贴)(最后剪切的)行”(P)。

另请注意,强烈建议初学者完成 vimtutor

ddkP

实际上是三个低级命令组合成一个高级命令,在正常模式下执行(默认模式):

  • dd 剪切当前行,
  • k 将光标向上移动一行,
  • P 将剪切的行放在当前行之上。

所以,您已经完成了 $ git rebase -i,它在正常模式下使用类似以下内容打开 Vim:

pick 07c5abd Introduce OpenPGP and teach basic usage <-- current line
pick de9b1eb Fix PostChecker::Post#urls
pick 3e7ee36 Hey kids, stop all the highlighting
pick fa20af3 git interactive rebase, squash, amend

并且您想向上移动 3e7ee36

这是通过使用 jj 将光标向下移动两次来完成的,使 3e7ee36 成为当前行:

pick 07c5abd Introduce OpenPGP and teach basic usage
pick de9b1eb Fix PostChecker::Post#urls
pick 3e7ee36 Hey kids, stop all the highlighting     <-- current line
pick fa20af3 git interactive rebase, squash, amend

然后用 dd 剪切行,使 fa20af3 成为当前行:

pick 07c5abd Introduce OpenPGP and teach basic usage
pick de9b1eb Fix PostChecker::Post#urls
pick fa20af3 git interactive rebase, squash, amend   <-- current line

然后将行移动到 k,使 de9b1eb 成为当前行:

pick 07c5abd Introduce OpenPGP and teach basic usage
pick de9b1eb Fix PostChecker::Post#urls              <-- current line
pick fa20af3 git interactive rebase, squash, amend

然后用 P 将先前剪切的线放在当前线的上方,有效地切换两条线,从而将 3e7ee36 向上移动:

pick 07c5abd Introduce OpenPGP and teach basic usage
pick 3e7ee36 Hey kids, stop all the highlighting     <-- current line
pick de9b1eb Fix PostChecker::Post#urls
pick fa20af3 git interactive rebase, squash, amend

仅此而已。

Vim 与 Photoshop 或 Blender 等其他专业工具没有什么不同。任何人都可以在没有任何经验的情况下启动它们并四处探索,但是需要一些学习和培训才能从中提取最大价值。

在 Vim 的情况下,您有两个宝贵的内置资源供您使用:

  • 如果你只是随便使用Vim,像$ git commit$ rebase -i这样的快速编辑,那么至少用一次$ vimtutor是非常需要。例如,给您带来麻烦的命令在第 3.1 课中有解释。

  • 如果您打算使用 Vim 作为您的主要编辑器,那么最明智的做法是开始积极阅读用户手册 :help user-manual。它实际上是一个详尽的教程,以非常易于理解的迭代方式将您从“菜鸟”带到“高级”。

如果您认为所有这些工作太多而收获太少,那么我建议您坚持使用 nano 或类似的、更舒适的编辑器。如果您不想付出必要的努力,那么选择一个众所周知的怪异和复杂的工具是没有意义的。


this article.

中获取的样本变基