Jak naprawić uzupełnianie tabulacji, aby nie ukrywało wpisów?


17

Używam oh-my-zsh na Mac OS X z homebrew'ed zsh 4.3.12. Ostatnio natknąłem się na dziwny problem. W scripts/not-usedMam kilka .Rplików:

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

Jednak gdy próbuję ls scripts/not-used/+, Tabpierwsze zakończenie jest ls scripts/not-used/_.Rtam, gdzie _reprezentuje pozycję kursora. Jeśli Tabponownie nacisnę, otrzymam to dziwne zakończenie:

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

Jak usunąć to brzydkie (złe) zachowanie?

Ustawione opcje to:

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
jak breakdowns.R eventloop.Rnieprawidłowe uzupełnienie? Spróbuj odznaczyć completeinwordopcję, ponieważ pozwala to na zakończenie z obu końców kursora, z lewej i prawej strony. Oznacza to, że jeśli wpiszesz pacjako in pacman, a zostanie wywołane polecenie arpac, arpacpojawi się na liście uzupełnień, ponieważ uzupełnianie następuje po obu stronach kursora zamiast tylko po prawej stronie.
Alexej Magura

Nie zdawałem sobie sprawy z pytania ... Więc breakdowns.R eventloop.Rjest to niepoprawne uzupełnienie w sensie niekompletności. Jeśli przyjrzysz się uważnie liście plików, jest ich więcej niż tylko 2, na końcu .R.
Nikola Knezevic

Próbowałem dotknąć istnienia kilku plików o tych samych nazwach, co te wymienione, a także zR, az, .R i z_test.R do celów testowych - z_test.R nie pojawiłby się podczas próby jego automatycznego uzupełnienia, ale z, .R by. Zgaduję, że to jakaś wpadka typu regex
Dmitri DB

Może to być związane z github.com/robbyrussell/oh-my-zsh/issues/1398 , co jest starym problemem, ale najnowsza wersja ma podobny kod zakończenia. Nie próbowałem obejść tego w celu potwierdzenia.
rjewell

Odpowiedzi:


1

Problem leży w liście zstylefor matcher.

Jeśli dodasz do tego .zshrc, to naprawi to:

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

e:(Zamiast domyślnego r:) zmusić meczu do końca łańcucha.

Szczegóły dotyczące opcji można znaleźć w dokumentach ZSH: Completion Matching Control


0

Czy zauważyłeś, gdzie umieścił kursor? Ponieważ wszystkie pliki kończą się rozszerzeniem .R, automatycznie dołącza możliwą sugestię.

Autouzupełnianie używa „obu końców” zgodnie z opisem Tshepanga.

Spróbuj upuścić plik do tego folderu bez nazwy .R, a zobaczysz, że bit .R zniknie.

Szczerze mówiąc, autouzupełnianie faktycznie potrzebuje czegoś do „uzupełnienia”, a nie ślepego założenia katalogu.


0

Gert może być odpowiedni do poprawki. Podejrzewam jednak, że przyczyną niekompletności listy plików (breakdowns.R i eventloop.R) jest to, że pliki te są jedynymi plikami w bieżącym katalogu roboczym, które są oznaczone jako pliki wykonywalne. Możesz to potwierdzić za pomocą „ls -l” i spojrzeć na uprawnienia dla czegoś takiego jak rwx. Jeśli nie masz „./” lub tego katalogu wyraźnie w PATH, oczekiwałbym, że te dwa pliki też się nie pojawią.

 8 -rwxr--r-- 1 userbob    groupbob      4420 May 28 15:55 filebob.R
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.