¿Cómo editar la línea de comandos en el editor de pantalla completa en ZSH?


52

En bash, usando el modo vi, si presiono Esc, vmi línea de comando actual se abre en el editor especificado por $EDITORy puedo editarla en pantalla completa antes de 'guardar' el comando que se devolverá al shell y se ejecutará.

¿Cómo puedo lograr un comportamiento similar en zsh? Golpear ven el modo de comando resulta en una campana y no tiene ningún efecto aparente, a pesar de que EDITORse establezca la variable de entorno.

Respuestas:


36

Ver edit-command-lineen zshcontrib.

bindkey -M vicmd v edit-command-line

13
(Solo para aclarar): para habilitar el edit-command-line"widget", necesitará algo como autoload edit-command-line; zle -N edit-command-lineen uno de sus archivos zsh init (consulte la sección Funciones ZLE de la zshcontribdocumentación ).
Chris Johnsen el

¿Cómo se activa esto una vez que está en su lugar? El bindkey en la respuesta de estilo emacs tiene sentido para mí. Pero no puedo encontrar referencias sobre lo que bindkey -M vicmd vse configura.
Mat Schaffer

1
@MatSchaffer Igual que Bash: si está en modo vi, presione <ESC>para ingresar al modo de comando desde el modo de inserción y luego val modo visual ( Meta-ves el mismo), o simplemente vsi ya está en modo de comando. Si está utilizando el modo Emacs, el enlace típico es C-x C-e.
Ephemient

1
Reasignar la tecla v significa que ya no puede usar el modo visual, por lo que prefiero reasignar a la barra espaciadora (que no hace nada útil en modo normal) conbindkey -M vicmd ' ' edit-command-line
gib

37

En caso de que prefiera las combinaciones de teclas de Emacs:

autoload -z edit-command-line
zle -N edit-command-line
bindkey "^X^E" edit-command-line

99
El ^x^eenlace parece ser un valor predeterminado con .oh-my-zsh actual , que es extremadamente agradable.
quodlibetor

^ x ^ e es exactamente lo que estaba buscando.
jmreicha

1
Configuración similar para Prezto siempre que editorse cargue el módulo.
AL the X

23

Puede usar fcpara editar el último comando en el historial. No es lo mismo que editar el mismo comando, pero un golpe rápido en la tecla Intro hace que su comando actual sea el último comando en la historia.


15

Esta es la configuración completa que agregué a mi ~/.zshrcpara obtener el mismo comportamiento de bash:

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

Según los comentarios anteriores, esto se configura de manera predeterminada si está utilizando Oh my ZSH o Prezto . Este último requiere que el editormódulo se cargue vio se vimseleccione para el modo de comando.
AL X X

Yo votaría para que esta sea la respuesta aceptada, resolvió mi pregunta con toda la configuración descrita. Gracias.
Laurent
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.