Bagaimana cara memperbaiki penyelesaian tab sehingga tidak menyembunyikan entri?

17

Saya menggunakan oh-my-zsh di Mac OS X dengan homebrew'ed zsh 4.3.12. Baru-baru ini saya menemukan masalah aneh. Dalam scripts/not-usedsaya punya beberapa .Rfile:

breakdowns.R             eventloop.R              process-largeclients.R   process-qt.R
reprocess-pinning.R      calculate-qt-error.R     generate_decision_tree.R process-net.R
process-scalingexp.R

Namun, ketika saya mencoba ls scripts/not-used/+ Tabpenyelesaian pertama adalah ls scripts/not-used/_.Rdi mana _merupakan posisi kursor. Jika saya menekan Tablagi, saya mendapatkan penyelesaian aneh ini:

$ ls scripts/not-used/.R                                                                          
breakdowns.R  eventloop.R

Bagaimana cara menghapus perilaku buruk (salah) ini?

Opsi yang ditetapkan adalah:

alwaystoend autocd autonamedirs autopushd cdablevars completeinword
correctall extendedglob extendedhistory noflowcontrol
histexpiredupsfirst histignoredups histignorespace histreduceblanks histverify
incappendhistory
interactive login longlistjobs monitor promptsubst 
pushdignoredups pushdminus pushdsilent pushdtohome
sharehistory shinstdin zle
Nikola Knezevic
sumber
2
bagaimana breakdowns.R eventloop.Rpenyelesaian yang salah? Coba hapus completeinwordpilihan, karena ini memungkinkan penyelesaian dilakukan dari kedua ujung kursor, kiri dan kanan. Itu berarti, bahwa jika saya mengetik pacseperti dalam pacman, dan ada perintah yang dipanggil arpac, maka arpacakan ada dalam daftar penyelesaian, karena penyelesaian terjadi di kedua sisi kursor, bukan hanya ke kanan.
Alexej Magura
Saya tidak menyadari pertanyaan ... Jadi, breakdowns.R eventloop.Radalah penyelesaian yang salah, dalam arti ketidaklengkapan. Jika Anda melihat dekat pada daftar file, ada lebih dari hanya 2, berakhir dengan .R.
Nikola Knezevic
Saya mencoba menyentuh keberadaan banyak file dengan nama yang sama dengan yang Anda daftarkan serta zR, az, .R dan z_test.R untuk tujuan pengujian - z_test.R tidak akan muncul mencoba melengkapinya secara otomatis, tapi z, .R akan. Mengira itu semacam kecelakaan regex
Dmitri DB
Ini mungkin terkait dengan github.com/robbyrussell/oh-my-zsh/issues/1398 , yang merupakan masalah lama, tetapi versi terbaru memiliki kode penyelesaian yang serupa. Saya tidak berusaha untuk mengonfirmasi.
rjewell

Jawaban:

1

Masalahnya terletak pada zstyledaftar pencocokan.

Jika Anda menambahkan yang berikut ini ke Anda .zshrc, itu akan memperbaikinya:

zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' 'e:|[._-]=* e:|=*' 'l:|=* e:|=*'

The e:(bukannya default r:) memaksa kecocokan ke akhir string.

Detail untuk opsi dapat ditemukan di ZSH: dokumen Kontrol Pencocokan Penyelesaian

Gert
sumber
0

Apakah Anda memperhatikan di mana kursor Anda diletakkan? Karena semua file diakhiri dengan .R, secara otomatis menambahkan saran yang mungkin untuk Anda.

Autocomplete menggunakan "kedua ujungnya" seperti yang dijelaskan oleh Tshepang.

Coba masukkan file ke folder ini tanpa nama .R, dan Anda akan melihat .R itu sedikit hilang.

Jujur, autocomplete sebenarnya membutuhkan sesuatu untuk "menyelesaikan" bukan asumsi direktori buta.

Bee Kay
sumber
0

Gert mungkin tepat untuk memperbaikinya. Namun, saya menduga alasan untuk sifat tidak lengkap dari daftar file (breakdowns.R dan eventloop.R) adalah karena file-file tersebut menjadi satu-satunya file dalam direktori kerja saat ini yang ditandai sebagai executable. Anda dapat mengonfirmasi ini dengan "ls-l" dan melihat izin untuk sesuatu seperti rwx. Jika Anda tidak memiliki "./" atau direktori itu secara eksplisit di PATH maka saya berharap kedua file tersebut tidak muncul juga.

 8 -rwxr--r-- 1 userbob    groupbob      4420 May 28 15:55 filebob.R
Voltaire
sumber