क्या मैं vi-hjkl कुंजियों के साथ zsh के टैब-पूर्ण मेनू को नेविगेट कर सकता हूं?


13

मैं zsh के मेनू-आधारित टैब पूर्णता का उपयोग करता हूं। मैं Tabएक बार दबाता हूं , और संभावित पूर्णताओं की एक सूची दिखाई देती है। यदि मैं Tabफिर से दबाता हूं , तो मैं इस सूची को तीर कुंजी के साथ नेविगेट कर सकता हूं। हालांकि, यह उन लोगों के साथ नेविगेट करने के लिए संभव है viकी तरह H, J, K, Lबजाय चाबियाँ?

मैं कमांड लाइन इनपुट के लिए Emacs मोड का उपयोग करें, साथ bindkey -eमें ~/.zshrc। मैं भी zim के साथ zim का उपयोग करता हूं। यदि प्रासंगिक है, तो टैब-पूरा करने वाली प्रणाली को निर्दिष्ट करने वाले कमांड यहां हैं

जवाबों:


16

हाँ, आप सक्षम कर सकते हैं menu select:

zstyle ':completion:*' menu select
zmodload zsh/complist
...
# use the vi navigation keys in menu completion
bindkey -M menuselect 'h' vi-backward-char
bindkey -M menuselect 'k' vi-up-line-or-history
bindkey -M menuselect 'l' vi-forward-char
bindkey -M menuselect 'j' vi-down-line-or-history

+1 यह अच्छी तरह से काम करता है अगर मैं मैन्युअल रूप से चलाने के bindkeyटर्मिनल में आदेशों, लेकिन यह सफल नहीं होता तो मैं के अंत में डाल ~/.zshrc, साथ /home/sparhawk/.zshrc:bindkey:186: no such keymap `menuselect'
स्पार्कहॉक

क्या आपने पूर्ण स्क्रिप्ट को सक्षम किया है? दीर्घवृत्त से पहले कमान देखें ...
jasonwryan

क्या आपका मतलब zstyleलाइन से है? हां, मेरे पास वह ~/.zshrcभी था।
स्पार्कहॉक १५'१६


जोड़ना autoload -Uz compinitऔर compinitकाम नहीं किया, लेकिन मुझे यकीन नहीं है कि अगर इसे सक्षम करना समस्या है, क्योंकि (ए) मेनू का चयन सामान्य अर्थों में ठीक काम करता है, और हमेशा होता है, और (बी) मैं bindkeyबाद में लाइनों को मैन्युअल रूप से चला सकता हूं , जो काम करता है। इसके अलावा, मुझे सिर्फ एहसास हुआ (बी) केवल तभी काम करता है जब मैं टैब को पहले दबाऊं, संभवत: पूरा होने वाले सिस्टम को इनिशियलाइज़ करने के लिए, फिर रन करें bindkey…। अन्यथा यह ऊपर ( bindkey: no such keymap `menuselect') के रूप में विफल रहता है ।
गौरव

4

निकटतम मैं इस पर आए हैं उपयोग कर रहा है CTRL- Nऔर CTRL- Pसंभव पूर्तियों की सूची के माध्यम से आगे और पीछे जाने के लिए, के बजाय Tabऔर Shift- Tab। यह है अधिक viकी तरह नेविगेशन।

एक विन्यास .zshफाइल में मैं इसे हासिल करता हूं:

bindkey '^n' expand-or-complete
bindkey '^p' reverse-menu-complete

और संबंधित:

bindkey '^k' up-history
bindkey '^j' down-history
bindkey '^h' backward-delete-char
bindkey '^w' backward-kill-word
bindkey '^r' history-incremental-search-backward

यहाँ बाइंडिंग के लिए डॉक्स हैं ।


2
यह बहुत अच्छा है, धन्यवाद। यहाँ भी मोड को प्रतिबंधित करने के -M menuselectलिए bindkeyकमांड में जोड़ा जा सकता है।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.