Saya memiliki fungsi Zsh khususg
:
function g() {
# Handle arguments [...]
}
Di dalamnya, saya menangani argumen pendek yang mengeksekusi perintah Git. Sebagai contoh:
g ls # Executes git ls-files ...
g g # Executes git grep ...
Saya harus bisa mengatur aturan pelengkapan otomatis ke aturan Git untuk argumen pendek tapi saya tidak yakin bagaimana melakukan ini.
Misalnya, saya perlu g ls <TAB>
melengkapi tab aturan git ls-files <TAB>
yang akan memberi saya argumen untuk git ls-files
:
$ g ls --<TAB>
--abbrev -- set minimum SHA1 display-length
--cached -- show cached files in output
--deleted -- show deleted files in output
# Etc...
Ini bukan hanya pengaturan g
untuk pelengkapan otomatis git
karena saya memetakan perintah pendek khusus saya ke perintah Git.
zsh
autocomplete
git
Erik Nomitch
sumber
sumber
man git-config
.Jawaban:
Saya menemukan
/usr/share/zsh/functions/Completion/Unix/_git
beberapa tips untuk alias seperti ini dan akhirnya mendefinisikan fungsi-fungsi ini untuk alias:Kemudian, saya melakukan yang lurus
compdef g=git
. Sistem autocomplete akan melihat bahwa Anda sedang menjalankan, misalnya,g ls
dan menggunakan_git-ls
fungsi autocomplete.Terima kasih kepada user67060 untuk mengarahkan saya ke arah yang benar.
sumber
Saya harus melakukan sesuatu yang sangat mirip sehingga kira-kira inilah yang seharusnya menyelesaikan masalah Anda.
Satu hal yang perlu diperhatikan adalah bahwa jika Anda mengubah jumlah argumen, Anda perlu menyesuaikan
$CURRENT
variabel.sumber
Inilah yang akan saya lakukan:
Namun, ini menggunakan penyelesaian Git, bukan penyelesaian zsh:
https://git.kernel.org/cgit/git/git.git/tree/contrib/completion/git-completion.zsh
sumber