如何在ZSH中的全屏编辑器中编辑命令行?


52

在bash中,使用vi模式,如果我打Escv我现在的命令行中所指定的编辑器中打开$EDITOR,我能够“拯救”的指令也可以返回到shell并执行之前在全屏幕编辑它。

如何在zsh中实现类似的行为?v尽管EDITOR设置了环境变量,但在命令模式下命中不会产生明显的影响。

Answers:


36

参见edit-command-linezshcontrib

bindkey -M vicmd v edit-command-line

13
(只是为了澄清):为了使edit-command-line“小部件”,你会需要这样的东西autoload edit-command-line; zle -N edit-command-line在你的一个zsh的初始化文件(见ZLE功能部分的的zshcontrib文档)。
克里斯·约翰森

一旦安装到位,如何激活它?emacs风格的答案中的bindkey对我来说很有意义。但是我找不到有关bindkey -M vicmd v设置的参考。
Mat Schaffer

@MatSchaffer与Bash相同:如果您处于vi模式下,请单击<ESC>以从插入模式进入命令模式,然后再v进入可视模式(Meta-v相同),或者只是v已经处于命令模式。如果您使用的是Emacs模式,则典型的绑定是C-x C-e
短暂

1
重新映射v键意味着您不能再使用可视模式,因此我更喜欢使用bindkey -M vicmd ' ' edit-command-line
gib


23

您可以fc用来编辑历史记录中的最后一条命令。这与编辑同一命令不同,但是快速按下Enter键会使当前命令成为历史记录中的最后一个命令。


14

这是我添加到~/.zshrcbash以获得相同行为的完整配置:

export VISUAL=vim
autoload edit-command-line; zle -N edit-command-line
bindkey -M vicmd v edit-command-line

根据之前的注释,如果您使用Oh my ZSHPrezto,则默认情况下将其配置。后者要求将editor模块加载vivim选择为命令模式。
AL X

我投票将其作为可接受的答案,它使用所有描述的配置解决了我的问题。谢谢。
洛朗
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.