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

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


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.


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.