Como corrigir o preenchimento de guias para não ocultar entradas?

17

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-usedeu tenho vários .Rarquivos:

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/_.Ronde _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
Nikola Knezevic
fonte
2
como é a breakdowns.R eventloop.Rconclusão incorreta? Tente desabilitar a completeinwordopção, pois isso permite que a conclusão seja feita nas duas extremidades do cursor, esquerda e direita. Isso significa que, se eu digitar paccomo em pacmane houver um comando chamado arpac, ele arpacestará na lista de conclusões, pois a conclusão ocorre nos dois lados do cursor e não apenas na direita.
Alexej Magura
Eu não estava ciente da pergunta ... Então, 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.
Nikola Knezevic
Tentei criar um monte de arquivos com os mesmos nomes que você listou, além de um zR, az, .R e um z_test.R para fins de teste - o z_test.R não apareceria tentando preenchê-lo automaticamente, mas z, .R faria. Supondo que é algum tipo de acidente regex
Dmitri DB
Isso pode estar relacionado ao github.com/robbyrussell/oh-my-zsh/issues/1398 , que é um problema antigo, mas a versão mais recente possui um código de conclusão semelhante. Não tentei soluções alternativas para confirmar.
rjewell

Respostas:

1

O problema está na zstylelista de correspondência for.

Se você adicionar o seguinte ao seu .zshrc, ele será corrigido:

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

O e:(em vez do padrão r:) 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

Gert
fonte
0

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.

Bee Kay
fonte
0

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.

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