Come correggere il completamento della scheda in modo che non nasconda le voci?


17

Sto usando oh-my-zsh su Mac OS X con zsh 4.3.12 homebrew. Di recente mi sono imbattuto in uno strano problema. In scripts/not-usedho diversi .Rfile:

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

Tuttavia, quando provo ls scripts/not-used/+ Tabil primo completamento è ls scripts/not-used/_.Rdove _rappresenta la posizione del cursore. Se premo di Tabnuovo, ottengo questo strano completamento:

$ ls scripts/not-used/.R                                                                          
breakdowns.R  eventloop.R

Come annullare questo brutto comportamento (sbagliato)?

Le opzioni impostate sono:

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
come è il breakdowns.R eventloop.Rcompletamento errato? Prova a deselezionare l' completeinwordopzione, in quanto ciò consente di completare il completamento da entrambe le estremità del cursore, sinistra e destra. Ciò significa che se digito paccome in pacmane c'è un comando chiamato arpac, allora arpacsarà nell'elenco dei completamenti, poiché il completamento avviene su entrambi i lati del cursore anziché solo a destra.
Alexej Magura,

Non ero a conoscenza della domanda ... Quindi, breakdowns.R eventloop.Rè un completamento errato, nel senso di incompletezza. Se osservi attentamente l'elenco dei file, ce ne sono molti di più di quelli 2, che terminano con .R.
Nikola Knezevic,

Ho provato a toccare un gruppo di file con gli stessi nomi di quelli che hai elencato, nonché zR, az, .R e z_test.R a scopo di test: z_test.R non si sarebbe mostrato cercando di completarlo automaticamente, ma z, .R sarebbe. Immagino che sia una specie di incidente regex
Dmitri DB,

Questo può essere correlato a github.com/robbyrussell/oh-my-zsh/issues/1398 , che è un vecchio problema, ma l'ultima versione ha un codice di completamento simile. Non ho tentato di aggirare il problema per confermare.
rjewell,

Risposte:


1

Il problema risiede nella zstylelista dei matcher.

Se aggiungi quanto segue al tuo .zshrc, lo risolverà:

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

Il e:(anziché il valore predefinito r:) forza la corrispondenza alla fine della stringa.

I dettagli per le opzioni sono disponibili nei documenti ZSH: Completion Matching Control


0

Hai notato dove ha messo il cursore? Poiché tutti i file finiscono con .R, aggiunge automaticamente il possibile suggerimento per te.

Il completamento automatico utilizza "entrambe le estremità" come descritto da Tshepang.

Prova a trascinare un file in questa cartella senza un nome .R e vedrai che il bit .R scompare.

Onestamente, il completamento automatico in realtà ha bisogno di qualcosa per "completare" non un'ipotesi di directory cieca.


0

Gert potrebbe anche essere giusto per la correzione. Tuttavia, sospetto che il motivo della natura incompleta dell'elenco dei file (breakdowns.R ed eventloop.R) sia dovuto al fatto che quei file sono gli unici file nella directory di lavoro corrente contrassegnati come eseguibili. Puoi confermarlo con un "ls -l" e guardare i permessi per qualcosa come rwx. Se non hai "./" o quella directory esplicitamente nel PERCORSO, mi aspetto che neanche questi due file vengano visualizzati.

 8 -rwxr--r-- 1 userbob    groupbob      4420 May 28 15:55 filebob.R
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.