Zostałem przekonany (w trakcie przepełnienia stosu) do korzystania z mojego ukochanego basha w trybie vi. Do tej pory całkiem się do tego przyzwyczaiłem i podoba mi się to.
Jednak tak naprawdę brakuje mi jednej funkcji: w trybie emacsa można wprowadzić ostatni parametr poprzedniego polecenia, naciskając „ESC”. (To znaczy, naciśnij klawisz Escape, a następnie.)
Czy istnieje domyślne powiązanie wstawiania ostatniego parametru w trybie vi? Nie udało mi się go znaleźć i naprawdę tęsknię za tym poleceniem ...
bindkey "\e." insert-last-word
history-search-backwards
jest nieocenione dla poważnych użytkowników linii poleceń.Istnieje (vi-yank-arg), domyślnie odwzorowany na „_”. To powinno zrobić, co chcesz (w trybie poleceń).
źródło
Niezupełnie to samo, ale w obu trybach możesz pisać
!$
, a zostanie zastąpione ostatnim słowem poprzedniego polecenia. Znajdź więcej takich rzeczy w instrukcji .źródło
Plik ~ / .inputrc może skonfigurować mapę kluczy (można ją wygenerować ręcznie, jeśli nie można jej znaleźć). Dodaj następujące polecenie do ~ / .inputrc :
Mój ~ / .inputrc to:
Możesz znaleźć szczegółowe informacje na temat readline i
bind -p
tutaj: http://linux.about.com/library/cmd/blcmdl3_readline.htmI kilka informacji o ślepych klawiszach Vi w bash i Ściągawka w trybie edycji Readline VI
źródło
Wewnątrz .bashrc dodaj te:
Przywrócą one domyślne zachowanie nie tylko kropki ESC - ale także Ctrl-A, Ctrl-E, Ctrl-W i Ctrl-L. Możesz więc cieszyć się normalnym trybem bash vi i nadal używać skrótów, które znasz i lubisz. Jeśli potrzebujesz więcej akcji, po prostu zaznacz „man bash”, aby znaleźć nazwę potrzebnej akcji readline (np. „Wyczyść ekran”, „koniec linii” itp.).
źródło
Możesz użyć,
$_
aby odwołać się do ostatniego argumentu poprzedniego polecenia.Wady to:
Nie możesz zweryfikować przed naciśnięciem klawisza Enter, że wstawiona rzecz jest rzeczą, którą chcesz wstawić.
Jeśli użyjesz PROMPT_COMMAND lub pułapki DEBUG (nie jestem pewien, co dokładnie powoduje problem; mam oba w moim .bashrc), aby zrobić wymyślne rzeczy, takie jak wstawienie uruchomionego polecenia w tytule xterm, to się zatnie
$_
.źródło