पूरा होने पर:
मुझे अपने सिस्टम पर गिट के फाइलनाम ऑटोकंप्लीटेशन से कठिनाई हो रही है। मैं ओएस एक्स (10.9.3) पर (1.9.3) के zsh
साथ (5.0.5) का उपयोग कर रहा हूं git
। दोनों zsh
और git
homebrew के माध्यम से स्थापित किया गया है। (पूर्ण संस्करण आउटपुट पोस्ट के निचले भाग में हैं।)
git
फ़ाइलनाम पूरा होने की जगह रिक्त स्थान नहीं डाल रहा है जैसे मुझे उम्मीद है। जब मैं नाम की जगह के साथ एक फ़ाइल का नाम टाइप करता हूं, तो शेल बिना रिक्त स्थान के फ़ाइल नाम सम्मिलित करता है। zsh
बिल्ट-इन पूर्णता ऐसा नहीं करता है, लेकिन git
करता है।
यहाँ एक उदाहरण है जो मैं देख रहा हूँ।
मेरे पास उनके नाम में रिक्त स्थान के साथ कुछ फाइलों के साथ एक भंडार है।
% ls -la
test
test four - latest.txt
test three.txt
test two
जब मैं फ़ाइल नाम सम्मिलित करने के लिए टैब पूर्णता का उपयोग करता हूं तो शेल बैकलैश फिल्म्स से बच जाता है।
% echo "testing" >> test<tab>
तीन बार टैब मारने के बाद इस पर ऑटोकंप्लीट्स।
% echo "testing" >> test\ four\ -\ latest.txt
––– file
test test\ four\ -\ latest.txt test\ three.txt test\ two
git status
इन फ़ाइलनामों को उद्धरणों में दिखाता है (यह पूरी तरह से समझ में आता है कि क्या है):
% git status --short
M test
M "test four - latest.txt"
M "test three.txt"
M "test two"
लेकिन जब मैं git add
टैब स्वतः पूर्णता के साथ प्रयास करता हूं , तो यह बग़ल में चला जाता है।
% git add test<tab>
तीन बार टैब मारने के बाद इसमें परिणाम:
% git add test four - latest.txt
test test four - latest.txt test three.txt test two
मैं इस एक सा regressing की कोशिश की है: मेरी dotfiles, संस्करण नियंत्रण में हैं तो मैं कोशिश की है zsh 4.3.15
, git 1.8.3
और एक साल पहले से मेरे dotfiles, जब मैं लगभग कुछ कर रहा हूँ इस काम किया। अजीब तरह से, यह सेटअप अभी भी टूट गया था।
मैं है यह करने के लिए नीचे संकुचित _git
पूरा होने फ़ाइल कि से प्राप्त की जा रही है /usr/local/share/zsh/site-functions
:
% echo $FPATH
/usr/local/share/zsh/site-functions:/usr/local/Cellar/zsh/5.0.5/share/zsh/functions
% ls -l /usr/local/share/zsh/site-functions
_git@ -> ../../../Cellar/git/1.9.3/share/zsh/site-functions/_git
_hg@ -> ../../../Cellar/mercurial/3.0/share/zsh/site-functions/_hg
_j@ -> ../../../Cellar/autojump/21.7.1/share/zsh/site-functions/_j
git-completion.bash@ -> ../../../Cellar/git/1.9.3/share/zsh/site-functions/git-completion.bash
go@ -> ../../../Cellar/go/HEAD/share/zsh/site-functions/go
अगर मैं $FPATH
अपने .zshrc
रन से पहले मैन्युअल रूप से बदल जाता हूं compinit
(या बस /usr/local/share/zsh/site-functions/_git
प्रतीकात्मक लिंक को हटा देता हूं ), तो पूर्णता वापस आती है zsh
और उम्मीद के मुताबिक काम करती है।
zsh
पूरा होने के बिना _git
:
% git add test<tab>
तीन बार टैब मारने से सही परिणाम मिलते हैं:
% git add test\ four\ -\ latest.txt
––– modified file
test test\ four\ -\ latest.txt test\ three.txt test\ two
साइड नोट: मैंने git-completion.bash
लिंक हटाने की कोशिश की है , और यह पूरी तरह से चीजों को तोड़ देता है:
% git add test<tab>
इस बस्ट-नेस का उत्पादन करता है:
% git add test__git_zsh_bash_func:9: command not found: __git_aliased_command
git add test
––– file
test test\ four\ -\ latest.txt test\ three.txt test\ two
मैं वास्तव में इसे ठीक से काम करना चाहता हूं : बाकी _git
पूर्णताएं बहुत अच्छी थीं क्योंकि वे zsh
लोगों की तुलना में अधिक रीपो-जागरूक होते हैं, लेकिन मुझे रिक्त स्थान या अन्य विशेष पात्रों के साथ फ़ाइल नाम की आवश्यकता होती है ताकि वे ठीक से बच सकें।
सॉफ्टवेयर संस्करण:
% zsh --version
zsh 5.0.5 (x86_64-apple-darwin13.0.0)
% git --version
git version 1.9.3
% sw_vers
ProductName: Mac OS X
ProductVersion: 10.9.3
BuildVersion: 13D65
मैंने फाइलें _git
और git-completion.bash
फाइलें अपलोड कर दी हैं : git- complete.bash और _git ( _git.sh
ताकि CloudApp का नाम बदलकर इसे ब्राउज़र में देखा जा सके।)
_git
। compadd -Q
अजीब दिखने के लिए कॉल : का -Q
अर्थ है "विशेष पात्रों को उद्धृत न करें"। कॉल -Q
से हटाने का प्रयास करें compadd
।
zsh
शब्द-विभाजन आदेश-प्रतिस्थापन परिणामों के डिफ़ॉल्ट व्यवहार के कारण है । वास्तव में - \bs
पलायन आवश्यक नहीं है - या आप इसे कैसे देखते हैं, इस पर निर्भर करता है। सेट "SH_WORD_SPLIT"
zsh.sourceforge.net/FAQ/zshfaq03.html
${=$(completion)}
या जो कुछ भी हो वह वापस आ जाए।