在 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.
中获取的样本变基
我是 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.
中获取的样本变基