2010-09-01 66 views
15

zsh或bash中有沒有一種方法可以擁有狀態行?例如在VI中它會讓你知道你處於插入模式下 - INSERT -zsh vi模式狀態行

命令行是否有一個等價性?

+0

[類似](http://stackoverflow.com/questions/1039713/different-bash-prompt-for-different-vi-editing-mode) – 2010-09-02 02:16:30

回答

20

這已經在Super UserUnix Stack Exchange回答。堆棧溢出的完整性:

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 

如果你想在當前行下方,而不是右邊的指示燈,從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 ...現在我想讓它在ctrl + c的同時在 - INSERT - 不退出命令,但退出到NORMAL模式,然後在NORMAL模式下最後按ctrl-c退出該命令。 – trusktr 2013-11-09 22:44:17

+1

您可以在插入和正常模式下爲Ctrl + C設置不同的綁定,只需將正確的選項傳遞給'bindkey'即可。 – Gilles 2013-11-10 17:43:09

+0

Sweeet。我迫不及待想要做到這一點。 – trusktr 2013-11-11 08:30:21