Estou usando o oh-my-zsh no Mac OS X com o zsh 4.3.12 homebrew'ed. Eu tropecei recentemente em um problema estranho. Em scripts/not-used
eu tenho vários .R
arquivos:
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
No entanto, quando tento ls scripts/not-used/
+ Taba primeira conclusão é ls scripts/not-used/_.R
onde _
representa a posição do cursor. Se eu pressionar Tabnovamente, recebo esta conclusão estranha:
$ ls scripts/not-used/.R
breakdowns.R eventloop.R
Como desabilitar esse comportamento feio (errado)?
As opções definidas são:
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
Nikola Knezevic
fonte
fonte
breakdowns.R eventloop.R
conclusão incorreta? Tente desabilitar acompleteinword
opção, pois isso permite que a conclusão seja feita nas duas extremidades do cursor, esquerda e direita. Isso significa que, se eu digitarpac
como empacman
e houver um comando chamadoarpac
, elearpac
estará na lista de conclusões, pois a conclusão ocorre nos dois lados do cursor e não apenas na direita.breakdowns.R eventloop.R
é uma conclusão incorreta, no sentido de incompletude. Se você olhar atentamente para a lista de arquivos, existem mais do que apenas esses 2, terminando com.R
.Respostas:
O problema está na
zstyle
lista de correspondência for.Se você adicionar o seguinte ao seu
.zshrc
, ele será corrigido:O
e:
(em vez do padrãor:
) força a correspondência até o final da sequência.Os detalhes para as opções podem ser encontrados nos documentos ZSH: Controle de correspondência de conclusão
fonte
Você notou onde ele colocou o cursor? Como todos os arquivos terminam com .R, é anexado automaticamente a possível sugestão.
O preenchimento automático está usando "as duas extremidades", conforme descrito por Tshepang.
Tente soltar um arquivo nessa pasta sem o nome .R e você verá que o bit .R desaparece.
Honestamente, o preenchimento automático realmente precisa de algo para "concluir", não uma suposição de diretório cego.
fonte
Gert pode muito bem estar certo para a correção. No entanto, suspeito que o motivo da natureza incompleta da lista de arquivos (avarias.R e eventloop.R) se deva a esses arquivos serem os únicos arquivos no diretório de trabalho atual marcados como executáveis. Você pode confirmar isso com um "ls -l" e verificar as permissões para algo como rwx. Se você não possui "./" ou esse diretório explicitamente no PATH, seria de esperar que esses dois arquivos também não aparecessem.
fonte