Ok, entonces finalmente hice el gran cambio. En mi .zshenv, cambié mi EDITOR:
export EDITOR=vim
Tengo un par de preguntas que tengo que son tan pequeñas que no quería comenzar preguntas separadas para ellas. Aquí están:
¿Cómo obtengo zsh para distinguir entre el modo de inserción y el modo de comando como en vim? Preferiblemente, esto cambiaría el cursor de un subrayado a un bloque como en vim, pero mostrar texto en la parte inferior también funcionaría.
¿Cómo consigo que actúe más como vim? Por ejemplo, prefiero que esté en modo comando por defecto y no salir después de un comando.
~
personaje que se inserta cuando presiono laDelete
teclazsh
. Hice una pregunta sobre ello aquí: superuser.com/questions/997593/...Respuestas:
1. ) (ver http://zshwiki.org/home/examples/zlewidgets y http://pthree.org/2009/03/28/add-vim-editing-mode-to-your-zsh-prompt/ ) :
Dónde:
"RPS" significa 'cadena de solicitud derecha' y define la solicitud que aparece en el lado derecho del terminal, y la sintaxis $ {variable / patrón / reemplazo} es la de 'expansión de parámetros', ver: http: // mywiki .wooledge.org / BashSheet # Parameter_Operations .
'zle -N' hace que los widgets definibles por el usuario 'zle-line-init' y 'zle-keymap-select' se unan (a funciones de shell de los mismos nombres), de modo que se invocarán cuando se inicialice el editor de línea y el mapa de teclas se cambia respectivamente, ver: http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#SEC125 .
2. ) sospecho que tienes que escribir otro widget de zsh para hacerlo, inspírate con el primero de los dos enlaces para el primer problema.
fuente
La solución de akira tiene el siguiente problema cuando se utilizan indicaciones de varias líneas: cuando se pasa del modo ins al modo cmd, el redibujo de la solicitud hace que se eliminen pocas líneas de la salida anterior (y la nueva solicitud se muestra algunas líneas arriba). La cantidad de líneas depende de cuántas líneas tenga en su solicitud.
La forma de lidiar con eso es usar
zle-line-finish
, sin usarzle reset-prompt
allí. Un ejemplo:Y luego puede agregarlo a su indicador derecho, por ejemplo:
Esto es directamente de mi publicación de blog al respecto:
fuente
zle-line-init
widget en vano. ¡Lo cambió para que coincida con lo que Pawel proporcionó y el bingo!RPROMPT2
también debe configurarse para que el estado se muestre en líneas de continuación. Además, al usar esto, es posible que desee hacerlosetopt transient_rprompt
para que no se muestren los modos de las líneas aceptadas previamente.bindkey -e
), todavía se muestra[INS]
.estas dos líneas aseguran que comience en modo comando
fuente
Lo siguiente lo configurará con un cursor modificado y un mensaje que muestra en qué modo se encuentra. Puede cambiar
DEFAULT_VI_MODE
a cualquieraviins
ovicmd
. Simplemente pegue el siguiente en un nuevo.zshrc
para comenzar:Nota: Solo probé esto en Terminal.app (2.7.3) en MacOS (10.12.6) con zsh (5.3.1). Además, si alguna vez agrega
edit-command-line
, el modo también se establecerá correctamente.fuente