Zsh içindeki otomatik tamamlama işlevine bir tetikleyici komutu ekleme


2

Gibi bir takma ad tanımladığınızda alias g=git, kabuk onu alır ve karşılık gelen otomatik tamamlama işlevini çalıştırır. Şimdi, orada bazı programlar hubgithub'a özgü işlevsellik ile temelde git'in süperseti olan bir program var . Kullanmak için önerilen yol hubetmektir alias git=hub. Elbette, bu mantıklı olan git için otomatik tamamlama işlevini tetiklemeyecek.

Şimdi, git'in hub için otomatik tamamlama tetikleyicisine sahip olmak istersem, bildiğim tek yol tetikleyici olarak ilk satıra düzenleme /usr/share/zsh/functions/Completion/Unix/_gitve eklemektir hub. Bu işe yararken pratik değildir, çünkü bu dosya bir sonraki zsh sürümüyle değiştirilecektir. Hub'ın yakın zamanda herhangi bir zamanda zsh tamamlama işlevi sağlamadığını varsayalım, git'in hubotomatik tamamlama işlevi için tetikleyici komutlara ekleme yapmanın başka bir yolu var mı?


Bunun SO ile ilgili bir soru için bir kopyası olduğu ortaya çıktı: stackoverflow.com/questions/4221239/…
mkaito

Yanıtlar:


-1

Özel tanımlarınızı içinde barındıran ek bir otomatik tamamlama klasörü tanımlayabilirsiniz. Varsayılan .zshrc'ye benzer bir şeyiniz varsa, autoload -Uz compinit işlevini çağırmadan önce $ fpath komutunu güncellemeniz gerekir .

Örnek:

...
zstyle ':completion:*' use-compctl true
zstyle ':completion:*' verbose true
zstyle :compinstall filename "$HOME/.zshrc"

fpath=($HOME/autocomplete $fpath)

autoload -Uz compinit
compinit
# End of lines added by compinstall
...

Ardından güncellenmiş _gitinizi kişisel otomatik tamamlama klasörünüze kopyalayabilmeniz gerekir ve orijinal yerine kullanılır.


Bu sadece git için hub tetikleyici tamamlama yapmaktan çok daha az pratiktir.
mkaito

Bir sonraki zsh sürümüyle üzerine yazılmayacak bir yöntem istediniz.
Matthew Franglen

Birini yazdıktan sonra bir program için otomatik tamamlamayı tetiklemenin bir yolunu istedim.
mkaito
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.