पूरा होने पर:
मुझे अपने सिस्टम पर गिट के फाइलनाम ऑटोकंप्लीटेशन से कठिनाई हो रही है। मैं ओएस एक्स (10.9.3) पर (1.9.3) के zshसाथ (5.0.5) का उपयोग कर रहा हूं git। दोनों zshऔर githomebrew के माध्यम से स्थापित किया गया है। (पूर्ण संस्करण आउटपुट पोस्ट के निचले भाग में हैं।)
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)}या जो कुछ भी हो वह वापस आ जाए।