Как исправить завершение вкладки, чтобы она не скрывала записи?


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как» 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/issues/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.


0

Вы заметили, где он поместил ваш курсор? Поскольку все файлы заканчиваются на .R, он автоматически добавляет возможное предложение для вас.

Автозаполнение использует "оба конца", как описано Tshepang.

Попробуйте поместить файл в эту папку без имени .R, и вы увидите, что этот бит .R исчезнет.

Честно говоря, автозаполнению действительно нужно что-то, чтобы «завершить» не слепое предположение о каталоге.


0

Герт вполне может быть правильным для исправления. Однако я подозреваю, что причина неполного характера списка файлов (breakdowns.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.