Я использую 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
zsh
autocomplete
oh-my-zsh
Никола Кнежевич
источник
источник
breakdowns.R eventloop.R
неправильное завершение? Попробуйте отключить этуcompleteinword
опцию, поскольку это позволяет выполнять завершение с обоих концов курсора, слева и справа. Это означает, что если я наберу «pac
как»pacman
и будет вызвана командаarpac
, тоarpac
она будет в списке завершений, так как завершение происходит с обеих сторон курсора, а не только справа.breakdowns.R eventloop.R
это неправильное завершение, в смысле неполноты. Если вы внимательно посмотрите на список файлов, то здесь есть не только эти 2, заканчивающиеся на.R
.Ответы:
Проблема заключается в
zstyle
списке совпадений.Если вы добавите следующее к вашему
.zshrc
, это исправит это:e:
(Вместо значения по умолчаниюr:
) заставляет матч до конца строки.Подробную информацию об этих опциях можно найти в документах ZSH: Completion Matching Control.
источник
Вы заметили, где он поместил ваш курсор? Поскольку все файлы заканчиваются на .R, он автоматически добавляет возможное предложение для вас.
Автозаполнение использует "оба конца", как описано Tshepang.
Попробуйте поместить файл в эту папку без имени .R, и вы увидите, что этот бит .R исчезнет.
Честно говоря, автозаполнению действительно нужно что-то, чтобы «завершить» не слепое предположение о каталоге.
источник
Герт вполне может быть правильным для исправления. Однако я подозреваю, что причина неполного характера списка файлов (breakdowns.R и eventloop.R) заключается в том, что эти файлы являются единственными файлами в текущем рабочем каталоге, которые помечены как исполняемые. Вы можете подтвердить это с помощью "ls -l" и посмотреть разрешения для чего-то вроде rwx. Если у вас нет «./» или этого каталога явно в PATH, то я ожидаю, что эти два файла тоже не появятся.
источник