Widziałem wielu programistów używających tego polecenia, aby ustawić opcję vi. Nigdy nie zrozumiałem prawdziwego wykorzystania tego?
W przypadku korzystania z poleceń bash pomaga przejście na vi?
Ustawiając edycję readline na emacs (domyślną) lub vi ( set -o vi
), zasadniczo ujednolicasz swoje polecenia edycyjne w powłoce i wybranym edytorze 1 .
Tak więc, jeśli chcesz edytować polecenie w powłoce, używasz tych samych poleceń 2, które byś zrobił, gdybyś był w edytorze tekstu. Oznacza to, że musisz zapamiętać tylko jedną składnię poleceń i (jeśli nie byłoby to wystarczającą zaletą) prawdopodobnie spowodowałoby to, że edytowanie w obu środowiskach było szybsze i mniej podatne na błędy ...
Możesz dodatkowo wykorzystać tę relację w trybie vi, wyciągając dowolne polecenie z historii powłoki, naciskając, Escapeaby przejść do trybu poleceń, a następnie naciskając v, co otworzy edytor $ EDITOR z załadowanym poleceniem, umożliwiającym bardziej złożoną edycję z pełną mocą vima. Po zakończeniu edycji polecenia według własnego uznania, :wqa polecenie zostanie ponownie wykonane w powłoce.
1. Zakładając oczywiście, że używasz Emacsa lub Vi / m jako edytora.
2. Lub, dokładniej, jego podzbiór ...
set -o vi
których większość ludzi nie zna. Jest to szczególnie ważne, jeśli chcesz wydać to samo polecenie wiele razy z różnymi argumentami (jako wiele poleceń z wiersza poleceń).set -o vi
. Przy domyślnym ustawieniuset -o EMACS
Cx, Ce wyświetli okno emacsa (lub$EDITOR
, jeśli ustawione), w którym możesz edytować polecenie przed jego uruchomieniem.Tryb Vi to ogromna poprawa użyteczności, jeśli używasz mobilnego klienta SSH, takiego jak ConnectBot na Androida.
Wynika to ze zmniejszonego polegania na klawiszach modyfikujących.
Vim jest znacznie łatwiejszy w użyciu z wirtualną klawiaturą na smartfonie lub tablecie niż ... cokolwiek innego, w tym natywne metody edycji wbudowane w interfejs użytkownika Androida. Jak na ironię, łatwiej jest edytować źródła C za pomocą Vima w sesji SSH niż edytować, powiedzmy, wiadomość błyskawiczną z własnym widgetem edycji platformy w tym celu.
Tryb Shell vi zapewnia podobną korzyść.
źródło
Pozwala edytować rzeczy w linii poleceń za pomocą trybów i operacji vi.
Przykład pomoże uczynić go bardziej zrozumiałym:
Ty pisz
cp tmp/some_other_long_directory/file1.xt /tmp2/some_other_xtra_long_dir/
ale pojawia się błąd - nie powinieneś
file1.txt
pisaćfile1.xt
Bez tej opcji naciśniesz strzałkę w górę, a następnie strzałkę w lewo i pozwól, aby powtarzała się ... 35 razy, aż dojdziesz do,
.xt
a następnie wpiszesz dodatkowet
. Całkowita liczba naciśnięć klawiszy: 37 .Z tym zestawem opcji możesz (na przykład) nacisnąć raz strzałkę w górę, następnie Escape w trybie poleceń, 0, aby przejść na początek linii, a następnie
/xt[return]
przejść do,xt
a następnie możeszi
wpisać tryb wstawiania i wpisać brakujące t. To może wydawać się niezwykle skomplikowane pod pewnymi względami, ale jeśli jesteś użytkownikiem vima, to polecenie jest już bardzo dobrze znane. Łączna liczba naciśnięć klawiszy: 9źródło
Alt+B
s lub ACtrl+Alt+]
.
w trybie Emacsa, więc nie wydaje mi się to dobrym przykładem.Up
,Ctrl+Alt+]
,.
,Right
,t
,Enter
= 8. Vi mode:Up
,F
,.
,a
,t
,Enter
= 7. :)Esc
tam jesteś , to martwy żar.Nie jestem pewien, czy istnieje bezpośrednia korzyść. Jestem
vi
użytkownikiem od ponad 20 lat. Jestem takżescreen
użytkownikiem jeszcze dłużej i innych programów, które używająvi
kluczy. Naturalnie wolę ustawić tryb „vi” w bash. Ale pracuję również na setkach serwerów w mojej pracy, większość z nich jest ustawiona na domyślny tryb „emacs”. Więc muszę użyć obu trybów. Ale tak naprawdę to tylko kwestia preferencji.źródło
ssh
ing. Oczywiście to nie pomaga, gdy korzystam z lokalnej maszyny, na której nie ma moich.bashrc
rzeczy.Główną zaletą jest modalna edycja linii poleceń. Jeśli znasz Vima i lubisz jego filozofię, korzyści muszą być oczywiste. Jeśli masz z tym doświadczenie, pamięć mięśni palca sprawi, że będziesz edytować swoje błyskawiczne polecenia.
Uwaga : Jeśli nie lubisz edycji modalnej, powinieneś nauczyć się korzystać z (domyślnego) trybu emacs. Oto kilka fajnych skrótów klawiaturowych, które będą działać na każdym procesie
readline
, na przykładbash
.źródło
Jeśli się przyzwyczaisz
vi
, ustawisz tryb vi jako edytor powłoki. To byłby oczywisty powód. Drugi jest wtedy, gdybash
nie jest dostępna domyślnie w niektórych systemach operacyjnych (głównie UNIX jak AIX, Solaris), więc funkcja historia powłoka nie jest dostępny, więc sposób można uzyskać minione poleceń przez ustawienie edytora powłoki dovi
, i Esc, Ctrl+ Klub Ctrl+Lźródło
Pozwala na łatwą nawigację i edycję wiersza poleceń za pomocą skrótów vima, np. Szybkie przejście do jednego słowa w prawo, usunięcie słowa.
Według domyślnych skrótów, kiedy musisz przejść do końca linii, musisz Ctrl+ e, podczas gdy za pomocą
set -o vi
, po prostu naciskasz$
, jak w vimie.źródło
Prawdopodobnie późno na imprezę, ale dla mnie korzystanie z trybu vi polega bardziej na tworzeniu interaktywnych skryptów ... na przykład
bardzo prosty przykład tego, co może być dość skomplikowane .. użycie ESCkvpowoduje przejście do sesji vi, w której można zmodyfikować skrypt, a następnie
:wq
uruchamia się.źródło
vi
trybie, ale jest to zły przykład kodu bash. (1) Używanie danych wyjściowychls
jako danych wejściowych do dowolnego innego przetwarzania jest złym pomysłem. (2)$(…)
Składnia podstawiania poleceń jest powszechnie uważana za bardziej czytelną niż`…`
składnia. (3) Zawsze powinieneś cytować zmienne powłoki, chyba że masz dobry powód, aby tego nie robić i jesteś pewien, że wiesz, co robisz.