Wybierz konkretny wynik z sugestii ukończenia

10

Powiedzmy, że mam 3 pliki w określonym katalogu: abc.txt, aww.txt, ant.txt

Jeśli zrobię: cat a(i naciśnij tab, aby zobaczyć opcje) terminal wyświetli 3 nazwy plików:abc.txt, aww.txt, ant.txt

Czy jest jakiś sposób na wybranie n-tego wyniku zamiast wpisywania go, określając numer indeksu w wynikach wyświetlanych przez terminal?

coś w stylu: cat a2uzyskać drugi plik ( aww.txt)?

samsamara
źródło
Nie, że jestem świadomy. W Zsh możesz iterować po wszystkich możliwych uzupełnieniach, uderzając TAB wiele razy (np. Uderzając TAB 4 razy, ukończymy ant.txt). Można go również skonfigurować tak, aby można było wykonać iterację do tyłu w celu lepszej nawigacji. To oczywiście oznacza zmianę powłoki na Zsh. Jeśli uważasz, że to wystarczająco dobra alternatywa, mogę na to napisać odpowiedź.
Kos

Odpowiedzi:

11

Zakładając, że używasz bash, dodaj albo ~/.bashrc:

bind '"\e[6~": menu-complete'
bind '"\e[5~": menu-complete-backward'

Lub, aby zmienić ustawienia domyślne dla wszystkich programów korzystających z biblioteki uzupełniania readline, a nie tylko bash, utwórz plik ~/.inputrczawierający:

$include /etc/inputrc
"\e[6~": menu-complete
"\e[5~": menu-complete-backward

Teraz, gdy otworzysz nowy terminal, możesz nacisnąć:

  • TAB jak zwykle, aby zobaczyć dostępne uzupełnienia.
  • Pg Dn aby wybrać pierwsze ukończenie lub przejść do następnego.
  • Pg Up aby wybrać ostatnie zakończenie lub zmienić na poprzednie.
  • Alt+ n, Pg Dnaby wybrać n-te ukończenie lub przejść do przodu n ukończeń.

Na przykład wpisz Pg DnPg Dnlub Alt+, 2Pg Dnaby uzyskać drugi plik aww.txt.

Martin Thornton
źródło
Udawajmy, że używasz cdi przeglądasz katalogi. Jakim klawiszem naciskasz, aby „wybrać” ten katalog i zacząć przeglądać zawartość tego katalogu? Czy jest coś jeszcze do ustawienia / powiązania?
Tony
Alternatywą, jeśli nie chcesz przesuwać rąk zbyt daleko od głównego rzędu klawiatury, jest użycie Ctrl + Alt + P zamiast PageUp i Ctrl + Alt + N zamiast PageDown, co można zrobić za pomocą bind '"\e\20": menu-complete-backward'i bind '"\e\16": menu-complete'.
Ruslan