Czy Bash ma podobne funkcje, takie jak autosugestie i wyróżnianie Fisha?


37

Niedawno zauważyłem 2 funkcje w Fish i zastanawiałem się, czy ktoś wiedział, czy są one również dostępne w Bash?

Podświetlanie składni

ss # 1

Specyfika:

  • Szybko zauważysz, że podczas pisania ryby podświetlają składnię. Nieprawidłowe polecenia mają domyślnie kolor czerwony:
  • Polecenie może być nieprawidłowe, ponieważ nie istnieje lub odnosi się do pliku, którego nie można wykonać. Kiedy polecenie staje się ważne, jest wyświetlane w innym kolorze
  • ryby będą podkreślać prawidłowe ścieżki plików podczas ich wpisywania
  • To mówi ci, że istnieje plik, który zaczyna się od „somefi”, co jest przydatne podczas pisania.

Autosugestie

ss # 2

Specyfika:

  • fish sugeruje polecenia podczas pisania i pokazuje sugestie po prawej stronie kursora, w kolorze szarym.
  • Wie o ścieżkach i opcjach
  • Aby zaakceptować autosugestię, naciśnij strzałkę w prawo lub Control-F. Jeśli autosugestia nie jest tym, czego chcesz, po prostu ją zignoruj.

4
O najbliższym analogu, który bashma autouzupełnianie. Niestety, fishskrypty są tak elementarne, że są bardzo marnym zamiennikiem tego, co robię rutynowo bash.
DopeGhoti

1
@DopeGhoti - stąd moje pytanie 8-)
slm

2
Wypróbuj to za pomocą linku ssh o dużym opóźnieniu, dość szybko zaczniesz nienawidzić wbudowanych funkcji.
llua

1
@slm Większość z nich to przypadki narożne, niektóre nieprzyjemne niż inne, ale może być całkiem źle, gdy jesteś wdrożony w wielu środowiskach. Te cechy „killer” do 4.3 są cd -@, wait -n, globasciiranges, i $BASH_COMPAT, co chciał dużo ludzi. Prawie cała reszta to tylko gaszenie pożarów.
Chris Down,

1
@strugee, jest wyróżnik składni zsh - github.com/zsh-users/zsh-syntax-highlighting , znalazłem go przez bardzo fajne oh-my-zsh.
Joe Block

Odpowiedzi:


2

Nie jestem pewien co do podświetlania Bash, ale funkcja automatycznego uzupełniania Bash prawdopodobnie automatycznie sugeruje, jak wspomniałeś.

Mimo że funkcja autouzupełniania Bash nie mogła wyświetlać sugestii tak, jak chcesz, ale faktycznie wypełnia zawartość po naciśnięciu [TAB]. Jeśli istnieje wiele opcji uzupełniania zawartości, naciśnij dwukrotnie [TAB], aby wyświetlić wszystkie opcje.

Na przykład:

$ cat /etc/pa[TAB]

=> nic się nie dzieje

$ cat /etc/pa[TAB][TAB]
pam.d/       passwd       paths        paths.d/

=> pokazuje, że wszystkie pliki / katalogi zaczynają się od „/ etc / pa”

Możesz skonfigurować automatyczne uzupełnianie za pomocą dowolnego polecenia, parametrów, plików / katalogów ... lub baw się nim, np. Programowaniem.
Więcej informacji: http://www.linuxjournal.com/content/more-using-bash-complete -dowództwo

Jeśli chcesz przejść do poprzedniego polecenia, naciśnij ^ R, a następnie wpisz znaki:

(reverse-i-search)`cd': cd ..

=> przejdź do ostatniego polecenia zaczynającego się od „cd”

Wiem, że nie jest to dokładnie to, czego chcesz, ale to prawie robi to samo i zapewnia wygodę.


8
Dziękujemy za poświęcenie czasu na udzielenie odpowiedzi i zaoferowanie tej sugestii. Znam tę funkcję i korzystam z niej codziennie. Chciałem, aby robiła to dynamicznie bez potrzeby naciskania [TAB] [TAB], aby ją zainicjować.
slm

2

Niestety nie. Ale przewiduję, że bash znacznie spowolni, jeśli spróbujesz wdrożyć te funkcje. Być może dlatego nikt jeszcze nie „przeniósł” tych funkcji.

Najbliższe, które znalazłem, to https://github.com/dvorka/hstr , pudełko na sugestie dotyczące powłoki


na bok uderzenie:

Nie testowałem tego, ale jedyna „przeniesiona alternatywa”, którą znalazłem, została napisana dla zsh: https://github.com/zsh-users/zsh-autosuggestions

Niektóre qwant'ing prowadzą mnie również do https://websetnet.com/shell-packs-power-python-bash/ i https://github.com/xonsh/xonsh alias http://xon.sh , być może również obsługuje to po wyjęciu z pudełka

... ale jestem pewien, że nie interesują Cię inne alternatywy dla bash, ponieważ wtedy możesz po prostu przejść na ryby;)

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.