Ulepszona funkcja autouzupełniania terminala (podobna do Matlaba)

18

Jeśli ktoś z was kiedykolwiek używał Matlaba, mógł zauważyć funkcję okna poleceń w tym programie. Zastanawiam się, czy można włączyć tę samą funkcjonalność w terminalu Mac.

Działa to tak: załóżmy, że wcześniej użyłeś dwóch poleceń w tej sesji terminala. Najpierw użyłeś a, cd ~a następnie a ls -la.

Jeśli w każdym terminalu * nix, w tym na Macu, naciśniesz Up Arrow, najpierw wyświetli ls -lapolecenie, a jeśli naciśniesz dwukrotnie, cd ~polecenie. To jest świetne. Ale w Matlabie, jeśli wpiszesz najpierw literę, ca następnie uderzysz Up Arrow, nie wyświetli się ls, ale zamiast tego przejdziesz bezpośrednio do cd ~. Oszczędza to dużo czasu, gdy masz duże polecenia i długą listę wcześniej używanych poleceń.

Czy to możliwe?

perr0
źródło

Odpowiedzi:

27

W powłoce Bash możesz nacisnąć Control+, Raby wykonać inteligentne wyszukiwanie wstecz w historii. Zacznij wpisywać polecenie, a powłoka automatycznie uzupełni się o wcześniej wprowadzone polecenia.

Następnie możesz albo nacisnąć, Enteraby wykonać polecenie ponownie, użyć strzałki w lewo lub w prawo, aby edytować polecenie, lub naciskać Control+, Raby przechodzić między innymi możliwymi uzupełnieniami.

Odwróć inteligentne wyszukiwanie

Gerry
źródło
9

Zapisz to jako ~ / .inputrc:

# make the up and down arrows cycle through commands that match the start of a line
"\e[A": history-search-backward
"\e[B": history-search-forward

Opcja byłaby \e\e[Ai kontrola-p \C-p. Możesz zobaczyć sekwencje specjalne innych kombinacji klawiszy, naciskając control-v.

Lri
źródło
1
Dla użytkowników, którzy jeszcze tego nie mają ~/.inputrc, po prostu stwórz jeden.
Sibbs Gambling
Powinna być zaakceptowana odpowiedź
ripper234
1
„\ e [A”: nie znaleziono polecenia
Louis,
2

Inną rzeczą, którą możesz zrobić, to wpisać, !a następnie pierwszą literę, a znajdzie ona najnowszą. IE: cd ~można uzyskać dostęp za pomocą!c

Mark Robinson
źródło
1

Jest to cecha powłoki. Control-R zrobi to, co opisujesz, ale zmiana na bardziej nowoczesną powłokę zapewni ci o wiele więcej. Spójrz na Z-shell (zsh), jest trochę krzywej uczenia się, ale jest bardzo potężny.

Ɱark Ƭ
źródło
Myślę, że masz na myśli Control-R.
Jmk
1

zsh wykona polecenia dokładnie tak, jak w twoim przykładzie. Nie musisz nawet robić nic innego niż używać go jako powłoki.

Chris
źródło
0

Dodaj je do swojego .cshrc (jeśli używasz tcsh) -

  bindkey -k up history-search-backward
  bindkey -k down history-search-forward

Następnie wykonaj source ~ / .cshrc, aby uzyskać dokładnie opisaną funkcjonalność.

Nie wiem, czy istnieje odpowiednik .profile.

możliwy
źródło