2010-09-01 5 views
15

Existe-t-il un moyen dans zsh ou bash d'avoir une ligne d'état? par exemple. dans VI, il vous indiquera que vous êtes en mode insertion avec - INSERT -Ligne d'état du mode zsh vi

Existe-t-il un équivalent pour la ligne de commande?

+0

[similaires] (http://stackoverflow.com/questions/1039713/different-bash-invite-pour-différent-vi-édition-mode) –

Répondre

20

Cela a déjà été répondu à Super User et Unix Stack Exchange. Pour l'intégralité de débordement de la pile:

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 

Et si vous voulez que l'indicateur en dessous de la ligne actuelle plutôt que vers la droite, 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 ... Maintenant je veux faire en sorte que ctrl + c tout en - INSERT - ne quitte pas la commande , mais quitte le mode NORMAL, puis finalement ctrl-c en mode NORMAL pour quitter la commande. – trusktr

+1

Vous pouvez définir différentes liaisons pour Ctrl + C en mode d'insertion et en mode normal, il suffit de passer l'option de droite à 'bindkey'. – Gilles

+0

Sweeet. J'ai hâte de faire ça. – trusktr