2013-08-26 10 views
5

przypuśćmy, że chcemy wprowadzić multilinii polecenia za pośrednictwem bash Wiem, że mogę dołączyć \ na końcu linii, aby wprowadzić nową liniętekst do wywoływania polecenia bash

jednak jest to możliwe, aby wejść uzasadniony "tryb edytora tekstów", w którym nie musisz nawet wpisywać \ i wystarczy nacisnąć Enter wystarczyłoby

np. wpisujesz polecenie do linii poleceń, a następnie przed wpisaniem parametrów naciskasz jakiś magiczny przycisk, który pozwala ci aby wejść w tryb podobny do vi, wprowadzasz rzeczy do "trybu vi", a potem wychodzisz, a tekst wprowadzony w "trybie vi" zmienia się w parametry polecenia, następnie wciskasz enter, a następnie polecenie wykonuje

czy można to zrobić w wierszu poleceń Bash? jeśli tak, jak to zrobić?

Odpowiedz

5

Zobacz man bash:

edit-and-execute-command (C-xC-e) 
      Invoke an editor on the current command line, and execute the 
      result as shell commands. Bash attempts to invoke $VISUAL, 
      $EDITOR, and emacs as the editor, in that order. 

domyślnie bash jest skonfigurowany w trybie emacs, stąd emacsowi jak komendy C-XC-e.

Jeśli naprawdę lubisz vi, możesz również ustawić swój bash na tryb vi: set -o vi. Pozwala to na normalną edycję linii w vi bez wywoływania edytora jawnego.

+2

Należy zauważyć, że w trybie 'vi' polecenie' edit-and-execute-command' nie jest już domyślnie związane z 'C-xC-e' (lub czymkolwiek). – chepner

+1

@chepner nie " v" czy to w trybie vi? – FDinoff

+0

Kiedy uruchamiam 'bind -p', jest on oznaczony jako" nie związany "(dla dowolnej mapy klawiszy, którą mogę powiedzieć), ale z pewnością działa' ' v'. – chepner

1

atakujących może emulować tryb vim (chociaż nie bardzo dobrze) z:

set -o vi 
1

można edytować poprzednią komendę w vi lub domyślny edytor za pomocą polecenia fc. Spowoduje to otwarcie okna edytora, a po wyjściu uruchomi edytowane polecenie. Ten tryb mógł być wielokrotnie używany do edycji złożonego polecenia.

Powiązane problemy