2010-09-01 14 views
15

¿Hay alguna forma en zsh o bash de tener una línea de estado? p.ej. en el VI se le hará saber que usted está en el modo de inserción con - INSERT -línea de estado del modo zsh vi

¿Existe un eqivalent para la línea de comandos?

+0

[similares] (http://stackoverflow.com/questions/1039713/different-bash-prompt-for-different-vi-editing-mode) –

Respuesta

20

Esto ya ha sido respondido en Super User y Unix Stack Exchange. Para la integridad de desbordamiento de pila:

function zle-line-init zle-keymap-select { 
    RPS1="${${KEYMAP/vicmd/-- NORMAL --}/(main|viins)/-- INSERT --}" 
    RPS2=$RPS1 
    zle reset-prompt 
} 
zle -N zle-line-init 
zle -N zle-keymap-select 

Y si desea que el indicador por debajo de la línea actual en lugar de a la derecha, de Unix Stack Exchange:

terminfo_down_sc=$terminfo[cud1]$terminfo[cuu1]$terminfo[sc]$terminfo[cud1] 
function zle-line-init zle-keymap-select { 
    PS1_2="${${KEYMAP/vicmd/-- NORMAL --}/(main|viins)/-- INSERT --}" 
    PS1="%{$terminfo_down_sc$PS1_2$terminfo[rc]%}%~ %# " 
    zle reset-prompt 
} 
preexec() { print -rn -- $terminfo[el]; } 
+1

hmmmm ... Ahora quiero hacer que ctrl + c mientras esté en - INSERT - no salga del comando , pero sale al modo NORMAL, luego finalmente ctrl-c en modo NORMAL para salir del comando. – trusktr

+1

Puede establecer diferentes enlaces para Ctrl + C en modo insert y normal, simplemente pase la opción correcta a 'bindkey'. – Gilles

+0

Sweeet. No puedo esperar para hacer esto. – trusktr

Cuestiones relacionadas