Como editar a linha de comando no editor de tela cheia no ZSH?

52

No bash, usando o modo vi, se eu pressionar Esc, vminha linha de comando atual é aberta no editor especificado por $EDITORe eu posso editá-la em tela cheia antes de 'salvar' o comando a ser retornado ao shell e executado.

Como posso obter um comportamento semelhante no zsh? Bater vno modo de comando resulta em um sino e não tem efeito aparente, apesar da EDITORvariável de ambiente estar configurada.

Murali Suriar
fonte

Respostas:

36

Veja edit-command-lineem zshcontrib.

bindkey -M vicmd v edit-command-line
efémero
fonte
13
(Apenas para esclarecer): Para ativar o edit-command-line“widget”, você precisará de algo como autoload edit-command-line; zle -N edit-command-lineem um dos seus arquivos zsh init (consulte a seção Funções do ZLE da zshcontribdocumentação ).
Chris Johnsen
Como você ativa isso quando está no lugar? O bindkey na resposta no estilo emacs faz sentido para mim. Mas não consigo encontrar referência sobre o que bindkey -M vicmd vconfigura.
Mat Schaffer
11
@ MatSchaffer Igual ao Bash: se você estiver no modo vi, pressione <ESC>para entrar no modo de comando no modo de inserção e, em seguida, vno modo visual ( Meta-vé o mesmo), ou apenas vse você já estiver no modo de comando. Se você estiver usando o modo Emacs, a ligação típica é C-x C-e.
ephemient 25/05
11
Remapear a tecla v significa que você não pode mais usar o modo visual, então eu prefiro remapear a barra de espaço (que não faz nada útil no modo normal) combindkey -M vicmd ' ' edit-command-line
gib
37

Caso você prefira as combinações de teclas do Emacs:

autoload -z edit-command-line
zle -N edit-command-line
bindkey "^X^E" edit-command-line
Daniel Serodio
fonte
9
A ^x^eligação parece ser um padrão no .oh-my-zsh atual , o que é extremamente bom.
quodlibetor
^ x ^ e é exatamente o que eu estava procurando.
precisa saber é o seguinte
11
Configuração semelhante para o Prezto, desde que o editormódulo esteja carregado.
AL o
23

Você pode usar fcpara editar o último comando no histórico. Não é o mesmo que editar o mesmo comando, mas um toque rápido na tecla Enter faz do seu comando atual o último comando no histórico.

Christoph Wurm
fonte
15

Esta é a configuração completa que eu adicionei ao meu ~/.zshrcpara obter o mesmo comportamento do bash:

export VISUAL=vim
autoload edit-command-line; zle -N edit-command-line
bindkey -M vicmd v edit-command-line
Matt Hughes
fonte
Pelos comentários anteriores, isso é configurado por padrão se você estiver usando Oh my ZSH ou Prezto . Este último requer que o editormódulo seja carregado e / viou vimselecionado para o modo de comando.
AL o X
Eu votaria para fazer disso a resposta aceita, ele resolveu minha pergunta com todas as configurações descritas. Obrigado.
21716 Laurent