Czy istnieje sposób, aby bash był bardziej przyjazny dla TAB?

31

Używam basha zarówno na moim Macu, jak i na mojej powłoce cygwin. Ogólnie jestem z tego bardzo zadowolony.

Moją jedyną skargą jest to, że jej uzupełnienie TAB nie jest tak dobre, jak ukończenie wiersza poleceń Windows TAB.

Na przykład, jeśli są dwa pliki z tym samym prefiksem, bash po prostu wydaje mi sygnał dźwiękowy, gdy próbuję uzupełnić TAB. Jeśli będę wbijał TAB, to w końcu pokaże mi listę potencjalnych plików.

Zdecydowanie wolę, aby system Windows przechodził między potencjalnymi plikami bezpośrednio w wierszu poleceń.

Czy istnieje sposób, aby pod tym względem bash działał podobnie do Windows Command Line?

Jeśli nie ma (nie chcę przełączać powłok), czy brakuje mi czegoś o zakończeniu TAB w bashu? Czy jest bardziej skuteczny sposób z niego korzystać?

Frank Krueger
źródło

Odpowiedzi:

42

Aby uzyskać zachowanie „cykluj przez możliwe uzupełnienia”, skopiuj następujące dane w odpowiednie miejsce w pliku .bashrc:

[[ $- = *i* ]] && bind TAB:menu-complete

Również, ukończenie basha zapewnia wiele dodatkowych rodzajów uzupełnień oprócz uzupełniania nazw ścieżek. Na przykład kompletne menu działa poprawnie z modułem uzupełniania basha Gita, aby uzupełnić nazwy poleceń, nazwy opcji itp.

Chris Johnsen
źródło
jaka jest procedura wykonania tego dla terminalu OSx?
Alex
2
@Alex: Edytujesz plik .bashrc w katalogu domowym, aby zawierał określoną linię. Jeżeli twój .bash_profile plik (w tym samym katalogu) również nie ma linii source ~/.bashrc, a następnie powinieneś go także edytować, aby zawierał taką linię. Ustawienie będzie aktywne w nowym Terminal okna. Jeśli nie masz preferowanego edytora, możesz otworzyć plik w TextEdit za pomocą polecenia open -e ~/.bashrc; jeśli plik jeszcze nie istnieje, musisz go najpierw utworzyć za pomocą (np.) polecenia touch ~/.bashrc.
Chris Johnsen
1
@Alex, Bash to domyślna powłoka w wersji 10.3 i nowszych, w tym 10.7 (Lion). Pierwszy echo $SHELL. To będzie powłoka wybrana dla twojego konta użytkownika. Jeśli tego nie chcesz, musisz zmienić powłokę chpass -s /bin/bash (lub jakąkolwiek powłokę, którą chcesz). Jeśli $ SHELL jest w porządku, sprawdź Terminal & gt; Preferencje & gt; Uruchomienie & gt; Otwierane muszle: i Terminal & gt; Preferencje & gt; Ustawienia & gt; Profile & gt; Powłoka & gt; Uruchomienie aby sprawdzić, czy domyślna powłoka użytkownika została zastąpiona poleceniem niestandardowym.
Chris Page
5
Czy ktoś ma jakiś pomysł, co mam powiązać, aby przejść jedną opcją za pomocą Shift + Tab?
ppp
3
@ppp w Twoim .bashrc: bind '"\e[Z":menu-complete-backward'
vault