当输入一个很长的命令时,我想首先在文本编辑器中编辑命令(例如vi),然后在打字错误的情况下执行。有没有办法直接在终端中编辑命令并运行而不是通过键入vi调用vi然后键入命令?
答案 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环境变量中设置的编辑器)