Git tamamlama:
Git'in dosya adı otomatik tamamlama sistemiyle ilgili sorun yaşıyorum. OS X (10.9.3) üzerinde (1.9.3) zsh
ile (5.0.5) kullanıyorum git
. Her ikisi de zsh
ve git
homebrew ile kuruldu. (Tam sürüm çıktısı yazının altındadır.)
git
adlı kişinin dosya adı tamamlaması beklediğim gibi boşluk eklemiyor. Adında boşluk bulunan bir dosyanın adını yazdığımda, kabuk boşluk bırakmadan dosya adını ekler. zsh
'ın yerleşik tamamlanması bunu yapmaz, ama git
yapar.
İşte gördüğüm şeyin bir örneği.
Adlarında boşluk bulunan birkaç dosya içeren bir havuzum var.
% ls -la
test
test four - latest.txt
test three.txt
test two
Kabuk ters eğik çizgi, dosya adını eklemek için sekme tamamlamayı kullandığımda dosya adlarından beklendiği gibi kaçıyor.
% echo "testing" >> test<tab>
sekmeye üç kez vurduktan sonra bunu otomatik olarak tamamlar.
% echo "testing" >> test\ four\ -\ latest.txt
––– file
test test\ four\ -\ latest.txt test\ three.txt test\ two
git status
bu dosya adlarını tırnak içinde gösterir (ne olduğunu tamamen anlar):
% git status --short
M test
M "test four - latest.txt"
M "test three.txt"
M "test two"
ancak git add
sekme otomatik tamamlama ile denediğimde , yanlara doğru gider.
% git add test<tab>
sekmeye üç kez vurduktan sonra bununla sonuçlanır:
% git add test four - latest.txt
test test four - latest.txt test three.txt test two
Bu biraz gerileme denedim: denedim yani benim dotfiles, sürüm kontrolü bulunmaktadır zsh 4.3.15
, git 1.8.3
neredeyse eminim ne zaman ve bir yıl önce benim dotfiles, bu çalıştı. Tuhaf bir şekilde, bu kurulum hala kırılmıştı.
Ben var aşağı Buna daralmış _git
kaynaklı ediliyor tamamlama dosyası /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
El ile değiştirirseniz $FPATH
benim önce .zshrc
ishal compinit
(veya basitçe kaldırmak /usr/local/share/zsh/site-functions/_git
simgesel bağlantı), sonra tamamlamalar geri düşmesi zsh
beklendiği gibi ve çalışma.
zsh
Tamamlanmadan _git
:
% git add test<tab>
sekmeye üç kez basmak doğru sonuçlar verir:
% git add test\ four\ -\ latest.txt
––– modified file
test test\ four\ -\ latest.txt test\ three.txt test\ two
Yan not: git-completion.bash
Bağlantıyı kaldırmayı denedim ve sadece tamamen kopuyor:
% git add test<tab>
bu baskınlığı üretir:
% 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
Ben gerçekten geri kalanı: Bu düzgün çalışmıyor almak istiyorum _git
daha Repo-farkında daha çünkü tamamlama harika zsh
olanlar, ancak boşluk veya diğer özel karakterler ile dosya adları düzgün kaçtı gerekmektedir.
Yazılım sürümleri:
% 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
Ve git-completion.bash
dosyalarını yükledim : git-completion.bash ve _git ( _git.sh
CloudApp'ın tarayıcıda görüntülenebilir olmasını sağlayacak şekilde yeniden adlandırıldı .)
_git
. compadd -Q
Tuhaf görünmek için yapılan çağrılar : -Q
“özel karakter alıntılama” anlamına gelir. Kaldırmayı deneyin -Q
gelen compadd
çağrılar.
zsh
kelime bölme komut değiştirme sonuçlarının varsayılan davranışı nedeniyle oldukça eminim . Aslında - \bs
kaçış gerekli değildir - ya da ona nasıl baktığınıza bağlı olarak boştur. Set "SH_WORD_SPLIT"
zsh.sourceforge.net/FAQ/zshfaq03.html
${=$(completion)}
, döndükleri gibi veya ne olursa olsun çıktı almak için düzenleyin .