Kiedyś miałem współpracownika, który był naprawdę dobry w UNIX.
Pokazał mi, jak używać skrótów klawiszowych Vi do edytowania poleceń powłoki.
Umieścił polecenie w pliku, który był uruchamiany przy każdym logowaniu.
Od tego czasu przeprowadziłem się do innego projektu.
Niestety nie pamiętam, jak to skonfigurować.
Czy jest tu ktoś, kto wie, jak używać powiązań klawiszy Vi do edytowania poleceń w terminalu?
Jak mogę ustawić to ustawienie na stałe?
vi bindings in the shell
najlepsza funkcja, jaką kiedykolwiek wymyślono!jj
z nimi związać,ESC
jak to zwykle robimy w vimie?Jeśli używasz basha, ponieważ jahroy i evil otto już odpowiedziały, możesz użyć
spowodować, aby bash używał poleceń edycji w stylu vi.
Gdy to zrobisz, możesz wpisać, Esc vaby uruchomić edytor vi z plikiem tymczasowym zawierającym kopię bieżącego wiersza poleceń. Możesz edytować polecenie, nawet zastępując je wieloma wierszami; po zapisaniu pliku (
:wq
) powłoka wykona edytowane polecenia.Jeśli wolisz
możesz użyć, Ctl-XCtl-Eaby zrobić to samo. Będzie używać preferowanego edytora
$EDITOR
, niekoniecznie emacsa.(Osobiście używam vi (właściwie vim) do większości moich edycji, ale wolę
set -o emacs
w powłoce; włączanie i wyłączanie trybu wstawiania jest świetne do edycji plików, ale niewygodne dla poleceń interaktywnych. YMMV.)źródło
set -o emacs
robi tego, co chcesz?Możesz użyć
set -o vi
do zmiany poleceń edycji wiersza, jak napisano @jahroy, ale możesz myśleć ofc
poleceniu (dostępne w bash i myślę, że ksh, ale prawdopodobnie nie tcsh), który umieści poprzednie polecenie w edytorze (FCEDIT lub EDITOR , który prawdopodobnie ustawiłeś na vi), a następnie wykonuje polecenie po wyjściu z edytora. Zobacz stronę podręcznika lubhelp fc
szczegóły, lub po prostu wypróbuj.źródło
alias r='fc -e -'
jest cennym aliasem do ponownego uruchomienia poprzednich poleceń.fc
sama w sobie pochodzi z powłoki Korna. Możesz określić polecenia według numeru (fc 123 129
aby edytować numery poleceń 123 do 129 w historii). Możesz podać liczby względne (fc -10 -1
aby edytować 10 ostatnio wprowadzonych poleceń). Możesz wyświetlić listę poprzednich poleceń za pomocąfc -l
. Możesz podać polecenie za pomocą prefiksu zr
aliasem (r make
uruchamia ostatnie wywołaniemake
; tak samo,r m
jeśli nie uruchomiłeśmv
polecenia od ostatniego uruchomieniamake
itp.).Aby edytować ostatnio używane polecenie w vimie i wywołać edytowaną wersję po zapisaniu i zamknięciu edytora, użyj
fc
wbudowanej powłoki. Bez żadnych argumentów wykona następujące czynności:/tmp
i wypełnia go ostatnio wpisanym poleceniem:cquit
).Polecenie działa zarówno w bash, jak i zsh.
źródło
Rzeczywiście, jest to w rzeczywistości największa funkcja w historii. Jest jednak więcej:
Utwórz plik o nazwie
zawierający linię
Editline , to biblioteka wersji na licencji BSD, która zapewnia usługi podobne do readline. To .editrc ustawi twoje skróty klawiszowe w tryb vi w powłoce wiersza poleceń MySQL lub w dowolnej aplikacji, która nie używa readline.
Z biegiem lat trochę zapomniałem, więc mój .zshrc pozyskuje niektóre opakowania dla trybu vi, aby pokazać mi, w jakim trybie jestem w wierszu poleceń. To miłe.
Wiem, że w Zsh możesz pisać
i uzyskaj listę skrótów klawiszowych. Jestem pewien, że bash musi mieć coś podobnego. Nie wszystkie klucze vi są domyślnie powiązane. Powiąż ich, jak uważasz za stosowne, i ruszasz do wyścigów.
źródło
w swoim terminalu wpisz
export EDITOR=vi
.Aby zapisać to ustawienie. umieść tę linię w pliku ~ / .profile
źródło
$EDITOR
)vi
. Nie pozwala edytować poleceń powłokivi
(przynajmniej nie bezpośrednio).$EDITOR
zawieravi
. Myślę, że to jedyna powłoka, która to robi.