Як виправити заповнення вкладки, щоб вона не приховувала записи?


17

Я використовую oh-my-zsh на Mac OS X з homebrew'ed zsh 4.3.12. Нещодавно я натрапив на дивну проблему. У scripts/not-usedмене є кілька .Rфайлів:

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

Однак, коли я намагаюся ls scripts/not-used/+, Tabперше завершення - це місце, ls scripts/not-used/_.Rде _представлено курсор. Якщо я натискаю Tabще раз, я отримую це дивне завершення:

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

Як скинути цю потворну (неправильну) поведінку?

Налаштовані варіанти:

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

2
як breakdowns.R eventloop.Rнеправильне завершення? Спробуйте скасувати completeinwordпараметр, оскільки це дозволяє виконати завершення з обох кінців курсору, зліва і справа. Це означає, що якщо я введіть pacяк in pacman, і є команда під назвою arpac, то arpacбуде у списку завершень, оскільки завершення відбувається по обидва боки курсору, а не лише праворуч.
Олексій Магура

Я не знав питання ... Отже, breakdowns.R eventloop.Rце неправильне завершення, в сенсі незавершеності. Якщо уважно придивитись до списку файлів, то існує лише 2, які закінчуються .R.
Микола Кнежевич

Я спробував торкнутися існування купи файлів з тими ж іменами, що і ті, що ви вказали, а також zR, az, .R та z_test.R для тестування - z_test.R не відображатиметься при спробі автозавершити його, але z, .R би Здогадавшись, що це якась невдача з регулярними виправленнями
Дмитро БД

Це може бути пов’язано з github.com/robbyrussell/oh-my-zsh/isissue/1398 , що є старою проблемою, але остання версія має аналогічний код завершення. Я не намагався підтвердити роботу.
rjewell

Відповіді:


1

Проблема полягає у списку zstyleматчерів.

Якщо ви додасте наступне до свого .zshrc, воно це виправить:

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

e:(Замість значення за замовчуванням r:) змушує матч до кінця рядка.

Детальну інформацію про параметри можна знайти в документах ZSH: Completion Matching Control Control


0

Ви помітили, куди він поклав курсор? Оскільки всі файли закінчуються .R, він автоматично додає можливі пропозиції для вас.

Автозаповнення використовує "обидва кінці", як описано Тхепаном.

Спробуйте скинути файл у цю папку без .R ім'я, і ​​ви побачите, що .R біт відійде.

Чесно кажучи, автозаповненню насправді потрібно щось для "завершення", а не припущення про сліпе каталогу.


0

Герт цілком може підійти для виправлення. Однак я підозрюю, що причина неповного характеру списку файлів (breakdownns.R та eventloop.R) пов’язана з тим, що ті файли є єдиними файлами в поточній робочій директорії, які позначені як виконувані. Ви можете підтвердити це за допомогою "ls -l" та переглянути дозволи на щось на зразок rwx. Якщо у вас немає "./" або цього каталогу, явно в PATH, я б очікував, що ці два файли також не з'являться.

 8 -rwxr--r-- 1 userbob    groupbob      4420 May 28 15:55 filebob.R
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.