Saya ingin kasus-sensitif selesai kabur untuk file dan direktori di zsh
. Setelah membaca manual selama beberapa jam, inilah yang saya dapatkan:
zstyle ':completion:*:*:*:*:globbed-files' matcher 'r:|?=** m:{a-z\-}={A-Z\_}'
zstyle ':completion:*:*:*:*:local-directories' matcher 'r:|?=** m:{a-z\-}={A-Z\_}'
zstyle ':completion:*:*:*:*:directories' matcher 'r:|?=** m:{a-z\-}={A-Z\_}'
Selain itu, saya ingin menekan TAB
sekali untuk menampilkan kemungkinan penyelesaian, hanya memodifikasi apa yang telah saya ketik jika ada satu penyelesaian. Kemudian menekan TAB
kedua kalinya harus menempatkan saya ke mode "penyelesaian menu". Berdasarkan manual, saya datang dengan ini:
zstyle ':completion:*' menu select
Sekarang semuanya berjalan sebagaimana mestinya kecuali dalam satu keadaan. Saya memiliki dua folder Desktop
dan .rstudio-desktop
di direktori home saya. Karena sudah setopt globdots
, saya berharap mengetik yang berikut ini:
$ cd ~/dktop<TAB>
untuk meninggalkan perintah saya seperti yang dimasukkan, dan ditampilkan sebagai kandidat penyelesaian Desktop
dan .rstudio-desktop
. Alih-alih, itu dihapus dktop
, meninggalkan saya dengan yang berikut:
$ cd ~/
Saya telah melihat semua manual, panduan, pertanyaan Stack Exchange yang relevan, dan berbagai sumber lainnya. Tapi apa pun yang saya lakukan, saya tidak bisa membuat ini berhasil.
Menariknya, jika saya berada di direktori home dan ketik yang berikut ini maka semuanya berfungsi seperti yang diharapkan:
$ cd dktop<TAB>
Artinya, ini hanya masalah dengan segmen jalur yang tidak mengarah (dan Anda dapat melihat C-x h
bahwa ini terkait dengan directories
tag daripada local-directories
tag yang digunakan).
Untuk kemudahan reproduksi, berikut adalah ~/.zshrc
yang akan mereproduksi situasi dan perilaku yang dijelaskan di atas (diuji pada mesin virtual El Capitan dengan zsh
dari Homebrew).
zsh 5.3.1
pada OS X masalah tidak mereproduksi. Sangat menarik bahwa ada perbedaan antara sistem operasi.
zsh 5.3.1
padaArch Linux
.cd ~/dktop<tab>
hasil panencd ~/Desktop
.