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.

Respostas:


36

Veja edit-command-lineem zshcontrib.

bindkey -M vicmd v edit-command-line

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

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.


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

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.