Jako przykład, powiedzmy, że wpisuję część nazwy:

$ vi partn                         <= here I press <tab><tab>
partname     partnook     partnum  <= these are the results

To jest standardowe zachowanie w bash i to jest w porządku, ale ostatnio pracuję na PowerShell, gdzie domyślne zachowanie jest takie, że jeśli naciśniesz Tab, cykle za pomocą nazw, wykonując każdą nazwę, a następnie naciskając zakładkę Ponownie przejdzie do następnego pliku, więc jeśli naciśnięta karta jeden raz, widzę vi ./partname, a następnie naciśnij ponownie zakładkę, patrz vi ./partnook, a następnie zakładka ponownie I Widzę vi ./partnum. Mam tendencję do preferowania tego zachowania, ponieważ jest mniejszy pisanie (wystarczy nacisnąć zakładkę, aby przejść do cyklu, aż otrzymasz nazwę pliku lub polecenia, którą chcesz).

Wszystko jest konfigurowalne w Linuksie, więc czy ktoś może doradzić, w jaki sposób mogę zmienić domyślne zachowanie domyślne bash

1
YorSubs 22 listopad 2020, 18:50

1 odpowiedź

Najlepsza odpowiedź

Aby uporać , wykonaj kartę nie wymagać Two Tab breloxpresses , gdy pojawiają się wiele dopasowanych zakończeń i zamiast cykl przez nich, in-line :

Opcja A: , jeśli masz już:

  • plik /etc/inputrc (stosuje się do szerokości systemu, modyfikacja wymaga sudo)
  • i / lub plik ~/.inputrc (specyficzny dla użytkownika)

I / lub

Planujesz dokładniej dostosować bibliotekę Readline i / lub chcesz dostosować konfigurację dla Skrypty , gdy zadzwonią read -e:

Dodaj linię:

"\C-i": menu-complete

Do , w zależności od tego, czy chcesz ustawienie, aby być skutecznym dla Użytkowników Wszystkie Użytkownicy Aktualny (Utwórz plik, w razie potrzeby) .

Uwaga: Alternatywnie , można po prostu wyłączyć potrzebę naciśnięcia Tab Dwukrotnie Dwukrotnie i wykazują standardowe zachowanie natychmiast , co oznacza wyświetlanie listy wielofunkcyjnej wszystkich możliwych wypełnionych , a następnie redisplaying linia wejściowa , aby umożliwić wpisanie dodatkowych znaków , aby całkowicie wypełnić argument lub na tyle jego wystarczająco dużo, aby następny zakładka jednoznacznie uzupełnia:

set show-all-if-ambiguous on

Opcja B: Alternatywnie możesz dodać polecenia Readline do pliku inicjalizacji specyficznej dla użytkownika (~/.bash_profile na MacOS, ~/.bashrc na Linux i innych platformach podobnych do UNIX), przechodząc Argument jako argumentu do bind Wbudowany:

bind '"\C-i": menu-complete'

Jeśli wolisz zachowanie serwisowe:

bind 'set show-all-if-ambiguous on'

Należy pamiętać, że bind polecenia w ~/.bash_profile / ~/.bashrc mają pierwszeństwo przed równoważnymi poleceniami w /etc/inputrc lub ~/.inputrc.

Jak sugerowano powyżej, skonfigurowanie Readline W ten sposób będzie Nie Wekuj w Skrypty , które nazywają read -e, aby aktywować obsługę readline do czytania wejścia użytkownika.

1
mklement0 22 listopad 2020, 17:00