Mapuj klawisz Escape na: q w vimie w trybie normalnym


0

Korzystam z vima jako przeglądarki w komendzie północy i chcę szybko przeglądać i zamykać plik. Jak mogę odwzorować klawisz Escape :qw trybie normalnym, aby vim zakończył działanie tylko wtedy, gdy nic się nie zmieni?


Dlaczego nie użyć rzeczywistej „przeglądarki” zamiast edytora?
— romainl

Ponieważ daje mi to znacznie więcej możliwości, takich jak konfigurowalne podświetlenie kodu. I mogę edytować plik w przypadku, który mi się podoba, i wyjść bez bólu, jeśli nie zostanie zmodyfikowany.
— Oxy

Odpowiedzi:


0

Aby to zrobić tylko dla bieżącej vimsesji, wpisz następujące polecenia (in vim). (Spacje są dodawane dla przejrzystości. Nie wpisuj spacji, chyba że wskazałem Space).

:  m  a  p  Space  Ctrl+ V  Esc  Space  :  q  Ctrl+V  Enter  Enter

Aby to zrobić tylko dla reszty bieżącej sesji terminalu, wpisz następujące polecenia (w terminalu, tj. Powłoka). (Podziały linii są dodawane dla zachowania przejrzystości. Wpisz następujące w jednym wierszu; nie pisz, Enterchyba że wskazałem Enter).

E  X  I  N  I  T  =
"  :  m  a  p  Space  Ctrl+ V  Esc  Space  :  q  Ctrl+V  Enter  "  Enter

i wtedy

export EXINITEnter

Aby zmiany były „trwałe” (tzn. Dopóki nie zmienisz plików), umieść powyższe polecenia ( EXINIT="…"i export EXINIT) w swoim .bash_profilei / lub .bashrc. (Możesz złożyć je razem w tym samym wierszu, oddzielając je ;. Możesz to skrócić, łącząc je w export EXINIT="…".) To nie zadziała, dopóki nie zalogujesz się ponownie, a nawet dopóki nie uruchomisz nowej powłoki, chyba że po prostu wpisz EXINITpolecenia lub sourceplik, w którym wstawiasz EXINITpolecenia.

Uwaga: jeśli nie używasz bash jako podstawowej powłoki, może być konieczne zmodyfikowanie powyższej powłoki.

Alternatywnie spróbuj wstawić :map …polecenie do .exrcpliku.


W przypadku, gdy nie jest to oczywiste,

: ciąg  mapy 1 ciąg 2

(w vi/ vim) tworzy mapowanie (tłumaczenie), dzięki czemu podczas pisania (w trybie komend) edytor zachowuje się tak, jak podczas pisania . A + to znak super-escape, który informuje zarówno / i powłokę (w rzeczywistości prawdopodobnie wszystkie programy lub przynajmniej większość z nich), że następujący znak ma być interpretowany jako dosłowny znak tekstowy, a nie jako kontrola postać. Zauważ, że +, po którym następuje znak powrotu karetki, często wyświetlany jako ; ale w tym jest to interpretowane jako .string1string2CtrlVvivimCtrlVEnter^M:map string2Enter


Dzięki G-Man. Pierwsze podejście działa doskonale (ale jak wiadomo, jest bezużyteczne). Drugi nie działa. Jestem na Mac OS. Czy masz pojęcie, dlaczego to nie działa?
— Oxy

Postępowałem zgodnie z tą samą procedurą dotyczącą ~/.exrcpliku i to również nie działa.
— Oxy

@Oxy: Zredagowałem odpowiedź, aby wyjaśnić możliwe nieporozumienia. Nie wiem, dlaczego to nie działa. Czy potrafisz wprowadzić inne polecenia za vimpomocą dowolnej z tych technik? Na przykład, czy masz już osobę, ~/.exrcktórej treść działa? Jeśli wpiszesz export EXINIT=":map q jjjj"; vim some_file, czy ( q) powoduje, że kursor przesuwa się o cztery linie w dół? Jeśli wpiszesz export EXINIT=":set list"; vim some_file, czy wyświetla się $na końcach linii (i czy wyświetla tabulatory jako ^I)?
— G-Man

Nie, nie ma. Dziwne!
— Oxy

Cóż, vipowinien być vina całym świecie, ale OS X to nie Linux. Spróbuj zbadać visystem OS X (zacznij od man vi, a następnie wyszukaj Super User, a następnie Google), aby sprawdzić, czy ma on inny sposób pozwalający ci przejść przez polecenia inicjalizacji.
— G-Man
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.