如何使用vi在Linux上编辑终端命令?

时间:2014-03-26 08:47:37

标签: linux vim terminal

当输入一个很长的命令时,我想首先在文本编辑器中编辑命令(例如vi),然后在打字错误的情况下执行。有没有办法直接在终端中编辑命令并运行而不是通过键入vi调用vi然后键入命令?

5 个答案:

答案 0 :(得分:11)

如果您正在使用bash,请尝试使用edit-and-execute-command命令。默认情况下,它被分配给Ctrl-x Ctrl-e(键入ctrl-x,然后键入ctrl-e)。

这应该打开您环境中指定的任何编辑器。退出时缓冲区中的任何内容都将在shell中执行 - 包括多行命令。

答案 1 :(得分:4)

您可以通过设置vi编辑模式。如果您使用的是bash,则可以输入:

set -o vi

然后,就像在vi中使用命令模式和插入模式一样。

答案 2 :(得分:2)

如果您使用zsh,则shell命令称为edit-command-line。它默认不受约束,因此请在配置中添加以下内容:

bindkey "^X^E" edit-command-line

现在 Ctrl + x Ctrl + e 的工作方式与bash相同,只是在返回之前没有执行命令被击中了。

答案 3 :(得分:1)

您是否尝试过内置 fc ("修复命令")shell? 1

默认情况下,它会打开编辑器中的最后一个命令,但您可以丢弃它并将其替换为您想要的任何命令,并在退出时执行。请参阅help fc

Tom Ryder在他的博客文章Vi mode in Bash中提出的想法。

(1)有鱼,zsh,bash,破折号,但也可能在其他地方。

答案 4 :(得分:0)

如果您使用的是鱼壳而不是bash,则可以使用以下命令在编辑器中打开当前命令:

Alt-v(使用VISUAL环境变量中设置的编辑器)

Alt-e(使用EDITOR环境变量中设置的编辑器)