Jak zrobić autouzupełnianie terminala, gdy jest kilka plików / katalogów?
32
Jeśli mam kilka katalogów, takich jak:
afoo abar
czasami mój terminal odmawia autouzupełniania po naciśnięciu klawisza tab (np. „cd a”, a następnie tab) i wydrukowanie listy katalogów. Czasami nawet wydaje głośny, irytujący dźwięk. Masz pomysł, jak zrobić autouzupełnianie w takich przypadkach? Np. Może najpierw wyświetlić abar, a potem afoo, jeśli ponownie naciśniesz tab. Widziałem, że dzieje się tak w systemie Windows lub aprobacie w Ubuntu
Coś, co jest dla mnie ratowaniem życia, polega na tym, że zamiast wyświetlać głupią listę, przebijaj się przez możliwości.
Ponieważ bash korzysta readlinez automatycznego uzupełniania, dodaj następujące wiersze do~/.inputrc
Raz jesteś usatysfakcjonowany i zostały gruntownie przetestowane rozwiązania poniżej na kilka dni / tygodni, wycinania i wklejania (nie kopiować!) Z tych samych ustawień ~/.inputrcdo /etc/inputrcktórych zawiera ustawień systemowych, dzięki czemu jest dostępny dla wszystkich użytkowników w systemie (w tym gość).
Kod:
# mappings to have up and down arrow searching through history:"\e[A": history-search-backward
"\e[B": history-search-forward
# mappings to have left and right arrow go left and right: "\e[C": forward-char
"\e[D": backward-char
# mapping to have [Tab] and [Shift]+[Tab] to cycle through all the possible completions:"\t": menu-complete
"\e[Z": menu-complete-backward
następnie exittwój terminal (lub zdalny terminal jak kit) i otwórz go ponownie ...
Przykłady:
Gdy masz 3 pliki: file1, file2a file3i wpisać:
e fTabTabTab
przejdzie przez:
e file1
e file2
e file3
a jeśli chcesz jeździć wstecz, po prostu naciśnij Shift+Tab
Kiedy piszesz:
very-complicated-command with lots of command line parameters
i następnym razem, gdy będziesz potrzebować tego samego polecenia, po prostu wpisz:
very↑
i napisze dla Ciebie:
very-complicated-command with lots of command line parameters
To całkiem miłe, dziękuję (i mam moje głosowanie). Czy istnieje uniwersalny sposób na pokazanie opcji, przez które będzie przechodził, łączący to, co najlepsze z obu światów? Podoba mi się opcja tab + tab z folderami i podkomendami itp., Więc nie muszę pamiętać ich wszystkich (np git branch <tab through branches>. Gdybym widział listę i tabulację poprzez jej elementy, byłoby świetnie! Dla katalogów i plików lsjest opcja, aby zobaczyć, jakie elementy są dostępne. Jednak w przypadku podkomend nie jest to niestety takie łatwe lub oczywiste
Erik
Działa to również na PuTTy! Musiałem tylko raz go zrestartować :)
np8
@Erik: Najwyraźniej to, o co prosiłeś, jest możliwe, ale nie zamierzam edytować mojej odpowiedzi, aby zachować prostotę. (usunięto stary komentarz, że nie jest to możliwe)
Fabby
18
Po 1. tabmusisz wstawić więcej liter. Więc jeśli napiszesz
cd a
i uderzysz tab, nic nie dostaniesz, a po sekundzie tab(natychmiast po nim) otrzymasz listę nazwisk zaczynających się od, aa następnie musisz wstawić, faby automatycznie uzupełniała resztę, więc
IMHO: To jest właściwa droga. Osobiście uważam zachowanie systemu Windows za bardzo denerwujące. Rozważ przypadek, w którym masz wiele plików zaczynających się od ai potrzebujesz ostatniego. Gdy przypadkowo naciśniesz klawisz Tab po aprzejściu przez listę wszystkich możliwych uzupełnień, aby przejść do właściwego.
Tobias
@Tobias: gdy przypadkowo wcisnąłeś [Tab] zbyt wcześnie, używając innego systemu , nadal jest [Ctrl] [K] ... ;-)
~/.inputrc
może być lepsze niż/etc/inputrc
i 2. Myślę, że możesz ustawić tobash
bezpośrednio: unix.stackexchange.com/q/55203/70524 , unix.stackexchange.com/a/16926/70524git branch <tab through branches>
. Gdybym widział listę i tabulację poprzez jej elementy, byłoby świetnie! Dla katalogów i plikówls
jest opcja, aby zobaczyć, jakie elementy są dostępne. Jednak w przypadku podkomend nie jest to niestety takie łatwe lub oczywistePo 1. tabmusisz wstawić więcej liter. Więc jeśli napiszesz
i uderzysz tab, nic nie dostaniesz, a po sekundzie tab(natychmiast po nim) otrzymasz listę nazwisk zaczynających się od,
a
a następnie musisz wstawić,f
aby automatycznie uzupełniała resztę, więccd a
tabtabf
tabtabspowoduje
źródło
a
i potrzebujesz ostatniego. Gdy przypadkowo naciśniesz klawisz Tab poa
przejściu przez listę wszystkich możliwych uzupełnień, aby przejść do właściwego.