To pokazuje, że domyślnym powiązaniem klawiszy Meta+Esc(i Ctrl+i) w trybie edycji wiersza poleceń Emacsa jest funkcja Readline complete. MetaKlucz jest zwykle Escna klawiszach bez wyraźnego Metaklucza. Dokumentacja Readline dla tej funkcji mówi
Próba wykonania uzupełnienia tekstu przed punktem. Rzeczywiste wykonane zakończenie jest specyficzne dla aplikacji. Na przykład Bash próbuje zakończyć traktowanie tekstu jako zmiennej (jeśli tekst zaczyna się od $), nazwy użytkownika (jeśli tekst zaczyna się od
~), nazwy hosta (jeśli tekst zaczyna się od @) lub polecenia (w tym aliasów i funkcji) z kolei. Jeśli żadna z nich nie odpowiada, podejmowana jest próba uzupełnienia nazwy pliku. Z drugiej strony, Gdb pozwala na uzupełnianie funkcji programu i zmiennych i jedynie w pewnych okolicznościach próbuje uzupełnić nazwę pliku.
Jeśli chodzi o twój komentarz do odpowiedzi Anthona : Nie, Escdwukrotne naciśnięcie nie jest tym samym, co Tabogólne naciśnięcie (chyba że jest to program, który odwzorowuje je obie na tę samą akcję, jak domyślnie Readline). Jednak Ctrl+ijest taki sam jak Tab, podobnie jak Ctrl+[jest taki sam jak Esc. Oznacza to, że możesz dokończyć za pomocą Ctrl+[Ctrl+[in, bashjeśli chcesz, pod warunkiem, że double Escjest powiązane z completefunkcją Readline . Jest to przydatne, jeśli pracujesz na przykład na terminalu VT220, który nie ma klawisza Escape:
Kusalananda, dziękuję za tę szczegółową odpowiedź. O twoim ostatnim punkcie: dlaczego Escdwukrotne naciśnięcie (lub \M-\e) nie jest takie samo jak Tabw bash, jeśli oba kończą?
flow2k
1
@ flow2k To samo, jeśli zarówno Esc-Esc, jak i Tab są powiązane z completefunkcją, którymi są domyślnie, ale ogólnie nie (tj. naciśnięcia klawiszy nie są „takie same”). Nie można zastąpić Tab klawiszem Esc-Esc wszędzie, tylko w programach obsługujących readline. Możesz jednak zastąpić Tab klawiszem Ctrl-i lub Esc klawiszem Ctrl- [gdziekolwiek.
Kusalananda
Dalsze, jeśli mogę: nie widzę Tabw danych wyjściowych bind -p. Dlaczego? Może dlatego, że Tabjest „zakodowany” i nie można go związać?
flow2k
1
@ flow2k Nie, Tab jest identyczny z Ctrl-i. Szukać \C-i. Jest to równoważność na poziomie sprzętowym.
Kusalananda
8
Nazywa się to uzupełnianiem plików, a jeśli nie masz żadnego poprzedniego polecenia w wierszu poleceń, bash zaoferuje ci wykonanie wszystkich poleceń, o których wie 2837, zarówno wbudowanych, jak i tych znajdujących się w twoim PATH
Esc
dwukrotne naciśnięcie (lub\M-\e
) nie jest takie samo jakTab
w bash, jeśli oba kończą?complete
funkcją, którymi są domyślnie, ale ogólnie nie (tj. naciśnięcia klawiszy nie są „takie same”). Nie można zastąpić Tab klawiszem Esc-Esc wszędzie, tylko w programach obsługujących readline. Możesz jednak zastąpić Tab klawiszem Ctrl-i lub Esc klawiszem Ctrl- [gdziekolwiek.Tab
w danych wyjściowychbind -p
. Dlaczego? Może dlatego, żeTab
jest „zakodowany” i nie można go związać?\C-i
. Jest to równoważność na poziomie sprzętowym.Nazywa się to uzupełnianiem plików, a jeśli nie masz żadnego poprzedniego polecenia w wierszu poleceń, bash zaoferuje ci wykonanie wszystkich poleceń, o których wie 2837, zarówno wbudowanych, jak i tych znajdujących się w twoim
PATH
Są prezentowane w posortowanej kolejności
źródło