2010-09-01 11 views
15

क्या स्थिति रेखा होने के लिए zsh या bash में कोई तरीका है? जैसे VI में यह आपको बताएगा कि आप के साथ सम्मिलित मोड में हैं - INSERT -zsh vi मोड स्थिति लाइन

क्या कमांड लाइन के लिए कोई एक्वाइवलेंट है?

+0

[इसी प्रकार] (http://stackoverflow.com/प्रश्न/1039713/अलग-बैश-प्रॉम्प्ट-फॉर-अलग-वी-संपादन-मोड) –

उत्तर

20

यह पहले से ही Super User और Unix 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

हम्मम्म ... अब मैं इसे बनाना चाहता हूं ताकि ctrl + c में - INSERT - कमांड को नहीं छोड़ता , लेकिन सामान्य मोड से बाहर निकलता है, फिर अंत में कमांड से बाहर निकलने के लिए सामान्य मोड में ctrl-c। – trusktr

+1

आप डालने और सामान्य मोड में Ctrl + C के लिए अलग-अलग बाइंडिंग सेट कर सकते हैं, बस 'bindkey' पर सही विकल्प पास करें। – Gilles

+0

स्वीट। मैं ऐसा करने के लिए इंतजार नहीं कर सकता। – trusktr