2010-09-01 24 views
15

Bir durum satırına sahip olmak için zsh veya bash'ın bir yolu var mı? Örneğin. VI, - INSERT -zsh vi modu durum satırı

ile ekleme modunda olduğunuzu bildirecektir. Komut satırı için bir eşdeğer var mı?

+0

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

cevap

20

Bu, daha önce Super User ve Unix Stack Exchange numaralı telefondan yanıtlanmıştır. Yığın taşması eksiksiz için:

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 

Ve Unix Stack Exchange güncel sınırının altında ziyade sağa göstergeyi, isterseniz:

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 ... Şimdi ctrl + c in - INSERT - komutunu bırakmayacak şekilde yapmak istiyorum ancak NORMAL moda çıkar, ardından komuttan çıkmak için NORMAL modundaki ctrl-c komutunu kullanın. – trusktr

+1

Ctrl + C için ekleme ve normal modda farklı bağlamalar ayarlayabilirsiniz, sadece sağ tuşa 'bindkey' değerini verin. – Gilles

+0

Sweeet. Bunu yapmak için sabırsızlanıyorum. – trusktr