Chciałbym tcsh'ism, którego nie byłem w stanie znaleźć: w pustym wierszu bez treści chcę nacisnąć klawisz tab i zobaczyć odpowiednik ls. To znaczy, że chcę
$ <tab>
zrobić coś innego niż dać mi. Znalazłem fantastyczne zasoby do wykonywania poleceń, ale nie w tym przypadku podstawowym. Każda pomoc w tym zakresie byłaby świetna! Dzięki.
shell
configuration
zsh
kristopolous
źródło
źródło
Zachowanie Tabna początku linii jest kontrolowane przez styl . Istnieją jednak tylko dwa obsługiwane zachowania:
insert-tab
zstyle ':completion:*' insert-tab false
zstyle ':completion:*' insert-tab true
zstyle ':completion:*' insert-tab pending[=N]
Jeśli po prostu chcesz wykonać polecenia w tej pozycji,
zstyle ':completion:*' insert-tab true
zrobi to. Jeśli chcesz czegoś innego, na przykład umieszczenia plików w bieżącym katalogu, musisz zmodyfikować_main_complete
.Ostatni wątek na listę zsh-workers omówione
insert-tab
.źródło
_main_complete
jest częścią kodu zsh, który implementuje uzupełnianie. Jest wCompletion/Base/Core/_main_complete
drzewie źródłowym, zwykle instalowanym w lokalizacji takiej jak/usr/share/zsh/functions/Completion/Base/_main_complete
.-command-
nie powoduje, że <Tab> wyświetla listę plików w bieżącym katalogu. Wszystko, co zrobiłeś, to ograniczyć dopasowania, aby pominąć nazwy poleceń. Ale wymienione są tylko rzeczy, które zostałyby ukończone w tej pozycji, więc nie pliki w bieżącym katalogu (tylko katalogi i pliki wykonywalne w zależności odautocd
iPATH
).Oto pełna implementacja autolisty tcsh w zsh, gdy naciśniesz klawisz tabulacji w pustej linii
Oto on:
Jeśli chcesz dokładniej emulować tcsh, dodaj również to do swojego .zshrc:
źródło
Napisałem ten widżet Zsh, który poprawia użycie TAB, nie tylko w pustym wierszu, ale także podczas pisania polecenia.
W tych przypadkach można go skonfigurować tak, aby poprzedzał „cd” lub „./” zmienną globalną.
export TAB_LIST_FILES_PREFIX
źródło