2013-01-14 30 views
5

पर लाइन जोड़ने से पहले zsh स्पष्ट आरपीएस 1 मैं एक vim उपयोगकर्ता हूं, और हाल ही में शैल में vi मोड का उपयोग करने में सक्षम होने के लिए zsh के साथ खेलना शुरू कर दिया है (जो सम्मिलित/कमांड की कमी के कारण बाश में व्यावहारिक नहीं है मोड सूचक)। कुछ उदाहरण पढ़ने के बाद, मैं तदनुसार लाइन अद्यतन करने के लिए निम्नलिखित समारोह की स्थापना (मैं रंग-vim-powerline मिलान करने के लिए है, जो मैं भी उपयोग उठाया): के रूप में मैं और अधिक चलने वाले को छोड़करलाइनशफर

vim_ins_mode="%{$fg[white]%}%{$fg_bold[blue]$bg[white]%} INSERT %{$reset_color%}" 
vim_cmd_mode="%{$fg[green]%}%{$fg_bold[black]$bg[green]%} COMMAND %{$reset_color%}" 
vim_mode=$vim_ins_mode 
function zle-line-init zle-keymap-select { 
    RPS1="${${KEYMAP/vicmd/${vim_cmd_mode}}/(main|viins)/${vim_ins_mode}}" 
    RPS2=$RPS1 
    zle reset-prompt 
} 
zle -N zle-line-init 
zle -N zle-keymap-select 

यह अच्छा काम करता है आदेश, पिछले आदेशों से आरपीएस 1 स्क्रीन पर आउटपुट प्राप्त करता है। आप कल्पना कर सकते हैं, मेरे टर्मिनल के साथ इसने कई उज्ज्वल बक्से होने काफी ध्यान भंग हो सकता है: here is an example

मैं किसी भी तरह इस क्षेत्र को खाली करने के लिए आशा करती हूं कि इससे पहले कि यह पिछले आदेश के रूप में linebuffer में फेंक दिया जाता है, लेकिन अब तक न तो उदाहरण न ही zsh विषयों मैंने इसे करने से परेशान देखा। मेरी पुरानी .bashrc फ़ाइल में मेरे पास मेरे कमांड के रंग को रीसेट करने के लिए एक जाल सेटअप था ताकि आउटपुट रंग प्रभावित न हो, मैं सोच रहा हूं कि यहां कुछ ऐसा संभव होगा? या शायद zsh के साथ एक क्लीनर तरीका है?

उत्तर

9

निम्नलिखित कोड का प्रयास करें:

function _-accept-line() 
{ 
    emulate -L zsh 
    local SAVEDRPS1="$RPS1" 
    RPS1="" 
    zle reset-prompt 
    RPS1="$SAVEDRPS1" 
    zle .accept-line 
} 
zle -N accept-line _-accept-line 

इस कोड के बारे में भूल। जब एक कमांड लाइन को स्वीकार

setopt transientrprompt 

प्रदर्शन से किसी भी सही शीघ्र निकालें: Zsh व्यवहार आप चाहते हैं के लिए एक विकल्प है। यह टर्मिनलों के साथ अन्य कट/पेस्ट विधियों के साथ उपयोगी हो सकता है।

+0

बिल्कुल सही, मैं सिर्फ क्या चाहता था और इस विकल्प के बारे –

+1

@AlexanderTsepkov अजीब बात जाल के साथ खिलवाड़ की तुलना में बहुत क्लीनर कि मैं हमेशा '.zshrc' में यह था। लेकिन यह डिफ़ॉल्ट नहीं है इसलिए 'zsh -f' के साथ अपने कोड का परीक्षण करने से आपका व्यवहार पता चला। और यह उन छोटी सी सुविधाओं में से एक है जिन्हें आप तब तक नहीं देखते जब तक उन्हें हटाया नहीं जाता है, इसलिए मुझे याद नहीं आया कि वास्तव में उपर्युक्त कोड के बिना अनुरोधित व्यवहार है। – ZyX