Jak edytować bieżące polecenie powłoki w VI


31

Widziałem na blogach na maszynach z systemem Linux, że możesz edytować bieżące polecenie powłoki bash w VI (lub cokolwiek, na co ustawiony jest EDYTOR), naciskając ctrl-x, ctrl-e.

Wydaje się, że to nie działa na 10.8. Wszelkie pomysły na edytowanie bieżącego polecenia bash w domyślnym edytorze?


To powinno działać w 10,8 (przynajmniej nie dla mnie). Czy próbowałeś rozbroić FCEDIT i EDITOR?
nohillside

Dokumentacja dla C-xC-e jest tutaj - co jest w twojej VISUALzmiennej?
glenn jackman

nie chodzi o 10,8. Mam 10.8 i działa dobrze ze mną. Nie zmieniłem niczego w moim pliku .bash_profile, aby to umożliwić.
Vincent


1
Właśnie zdałem sobie sprawę, że robię Ctrl + (x, e) (trzymając Ctrl, naciskając x, naciskając e, zwalniając kontrolę) - dlatego to nie działało dla mnie. Kiedy zmieniłem na naciśnięcie dwóch wyraźnych pociągnięć Ctrl-x, zwolnij Ctrl, Ctrl-e - wtedy wszystko zaczęło działać idealnie!
Dimitry K

Odpowiedzi:


32

Chcesz set -o vi(dodaj go do swojego ~/.bashrc). Następnie, aby edytować bieżący wiersz, wystarczy nacisnąć, Escaby przejść do trybu poleceń.

Zobacz http://www.gnu.org/software/bash/manual/bashref.html#Readline-vi-Mode

Aby edytować bieżące polecenie w edytorze pełnoekranowym, ustaw VISUALzmienną środowiskową na vim(zakładam, że chcesz vim), a następnie w trybie poleceń w bieżącym komentarzu naciśnij v.


5
naciśnięcie „v” to sekretny sos, którego mi brakowało. dzięki.
Scott Walter

2
Czy można uzyskać tę vkomendę w trybie emacs (non-vi)?
Alex Kahn

10
Po prostu zrób Ctrl-X, a następnie Ctrl-E.
albapa,

7

Twój tryb edit-and-execute-commandmoże nie być związany vi. Próbować:

bind -m vi-insert '"\C-x\C-e": edit-and-execute-command'

Aby było trwałe, dodaj tę linię do swojego ~/.inputrcpliku.

(dzięki tej odpowiedzi ; przypisanie do @unforgettableid dla linku)

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.