2010-09-01 96 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