Głównym powodem, dla którego lubię vima nad emacsem, jest to, że moja odległość ruchu ręki od domowego rzędu jest bardzo mała (nawet jako programista). Jednak moim głównym zadaniem jest opuszczenie trybu wstawiania przez naciśnięcie klawisza Escape.
Niedawno dowiedziałem się, że mogę również użyć Ctrl + C, aby wyjść z trybu wstawiania. Jednak tak naprawdę nie jest to poprawa.
Jak wyjść z trybu wstawiania bez opuszczania przez dłonie domowego rzędu i bez znacznego wpływu na to, co mam do pisania? Uwaga: używam głównie waniliowego vima z układem klawiatury dvorak, chociaż chciałbym usłyszeć również rozwiązania dla układu qwerty.
key-bindings
insert-mode
keyboard-layout
escape
durron597
źródło
źródło
Odpowiedzi:
Powszechnym wiązaniem, które zobaczysz, jest jj , ponieważ działa dobrze dla układów QWERTY, jeśli używasz pozycjonowania wiersza głównego.
W takim przypadku, aby wpisać literał
jj
- należy odczekać 1 sekundę (domyślnie) między wpisaniem drugiego znaku. (zobacz:help 'timeout'
szczegóły)Jest też
c-o
coś, co wyjmie cię z wkładki, umożliwiając wykonanie jednego normalnego polecenia, a następnie powrót z powrotem do wstawiania.http://vim.wikia.com/wiki/Avoid_the_escape_key
źródło
j
jestc
kluczem. Więc to nie byłoby takie złe (do pisaniacc
). Mógłbym również powiązaćhh
(qwertyj
key = dvorakh
), co uruchomiłoby mnie tylko, gdybym pisałshhhhhhh
lub coś takiego.jk
? Znajdź dwa klucze, które sąsiadują z Dvorakiem, ale nie są to popularne kombinacje w preferowanym języku.tn
, na przykład, jest pozycyjnym odpowiednikiemjk
.jk
/kj
wychodzę z trybu normalnego nawet w Dvorak; są to klawisze „c” i „v” na klawiaturze QWERTY, więc są łatwe dla mojego lewego wskaźnika i środkowych palców.ii
zamiast tego użyj . Tak, musisz odsunąć palce od rzędu domu, ale nadal jest to wygodne. Co ważniejsze, możesz przełączać się między trybami bez ruszania palcem.Oprócz wbudowanych rozwiązań alternatywnych
<C-[>
i<C-c>
do<Esc>
klucza cytowanego przez innych, innym popularnym rozwiązaniem jest przemapować<CapsLock>
jako dodatkowy Escape. Zarówno na klawiaturze Qwerty, jak i Dvorak.W ten sposób możesz bardzo łatwo nacisnąć Esc lewym palcem, bez zdejmowania rąk z HomeRow (nawiasem mówiąc, CapsLock to miejsce, w którym Escape był na klawiaturze, kiedy wynaleziono vi).
Ponowne mapowanie można wykonać:
w systemie Linux różni się w zależności od środowiska pulpitu. Na przykład w Linux Mint / Cinnamon wystarczy wybrać odpowiednią opcję w menu-> Klawiatura-> Układy klawiatury-> Zachowanie Caps Lock. Alternatywnie, ale mniej łatwo, można go ponownie mapować na poziomie Xorg za pomocą programu xmodmap i uruchomienia następującego
.Xmodmap
pliku:System można skonfigurować tak, aby automatycznie uruchamiał go przy każdym logowaniu, umieszczając strategicznie następujące wiersze skryptu powłoki (przypuśćmy, że w katalogu
.Xmodmap
domowym~
) w łańcuchu automatycznie pobieranych plików logowania:Jest to jednak trudne, ponieważ faktycznie pobierane pliki różnią się w zależności od używanego środowiska (komputerowego). Jako przykład mam xmodmap wywoływany jako wpis w Cinnamon „Startup Applications” (co pozwala mi robić więcej niż standardowe dostosowywanie mapowania klawiszy GUI).
Niektóre osoby idą jeszcze dalej i programują klawisz CapsLock, aby zachowywał się:
Ctrl
klawisz przez naciśnięcie i przytrzymanie,Esc
klawisz, naciskając i szybko zwalniając go.Można to zrobić w systemach Windows i Mac, odpowiednio ustawiając / programując odpowiednie narzędzie do remapowania (szczególnie wskazówki AutoHotkey można znaleźć tutaj, a sprawdzenie KeyRemap4MacBook tutaj ). W systemie Linux przy użyciu programu xcape .
źródło
Ctrl
klawisza (w normalnej pozycji) bez skręcania małego palca: możesz nacisnąć go zewnętrzną dłonią dłoni, jak to jest dobrze opisane tutaj (znalazłem tę fajną sprytną sztuczkę w sieci, czas, aby ją dać powrót :) i podziękowania dla tego, kto to wymyślił)Ctrl
naAlt
(Cmd
) i odwrotnie, to<C-[>
naprawdę będzie świecić. Pinky jest słaby, kciuk jest silny. W QWERTY nie musisz nawet wychodzić z tego wiersza, w Dvorak nie jest tak dobrze, ale do zaakceptowania.Używam mapowań:
W ten sposób możesz po prostu uderzyć ji kjednocześnie, nie martwiąc się o to, który wybierzesz jako pierwszy.
źródło
<C-[>
i<C-c>
są dwie natywne alternatywy dla<Esc>
.Zobacz
:help i_<esc>
i:help i_ctrl-c
która wyjaśnia różnicę między<C-c>
i<Esc>
.źródło
<C-[>
ma ładny symetrię do niej (zarówno małe palce poruszające się w przeciwnych kierunkach).<C-c>
nie jest dokładnie taki sam jak<Esc>
.<C-c>
może subtelnie psować wtyczki i autocmds.Można mapować Caps Lockdo Control bez użycia zewnętrznego programu :
setxkbmap -option caps:ctrl_modifier
To sprowadza Controlna rzędzie do domu, dzięki czemu łatwiej wcisnąć wszystkie kontrolne zmodyfikowany uderzeń, w tym Ctrl-[i Ctrl-Cktórych oba wyjścia trybie Insert w vim.
Alternatywnie, w dolnej części jego odpowiedź Giovanni sugeruje map Caps Lockwykonywać zarówno Control i Escape w zależności od długości prasy, ale to wymaga instalowania dodatkowego oprogramowania.
źródło
Sugeruję użycie mojej wtyczki vim-easyescape .
Problem z prostą sekwencją map
inoremap jj <ESC>
polega na tym, że Vim wstrzymuje się przy każdym wpisywaniu jlub kw trybie wstawiania (czeka na następny klawisz, aby ustalić, czy zastosować mapowanie). Pauza powoduje rozproszenie wzrokowe, które możesz zauważyć lub nie. vim-easyescape nie ma takiego problemu i obsługuje niestandardowy limit czasu.źródło
W terminalach vi i Vim alt+
single-normal-mode-key
będzie działać w celu szybkiej edycji w większości terminali.Działa to, ponieważ większość terminali wysyła modyfikator alt jako znak zmiany znaczenia. Na przykład po wpisaniu alt+kemulator terminala wysyła dwa znaki do uruchomionego programu:
esc
,k
. Vi i Vim interpretują to tak, jak można się spodziewać; opuszcza tryb wstawiania (z powodu ucieczki) i wykonuje polecenie trybu normalnego (w tym przykładzie przesuwa kursor w górę o jedną linię).Może to być wygodny sposób na wyjście z trybu wstawiania, jeśli klawiatura ma klawisz Alt obok spacji (tak, że można go nacisnąć kciukiem, pozostawiając palce na rzędzie głównym), o ile używasz emulatora terminala z takim zachowaniem i nie przeszkadza uruchamianie polecenia trybu normalnego.
źródło
single-normal-mode-key
? Masz na myśli Escape?FWIW używam:
Czuje się podobnie jak w przypadku Return. Używam również
;
jako lidera dla innych mapowań w trybie Insert.Jedyny raz, kiedy potrzebowałem pisać ';' + litera występuje podczas gry w golfa kodowego; W przeciwnym razie nie miałem żadnych konfliktów.
źródło
Używam Ctrl+ 3od dłuższego czasu, łatwiej mi pisać niż większość alternatyw i wydaje się, że działa dobrze (przynajmniej w Linuksie). Mój Caps Lockjest mapowany na Ctrl, więc bardzo wygodnie jest go wpisać.
Próbowałem używać Ctrl+ cprzez pewien czas, ale miałem z tym pewne problemy, których teraz nie pamiętam, ale nie uzyskałem dokładnie takiego samego zachowania Esc, jak teraz z Ctrl+ 3.
źródło
Esc
w waniliowym Vimie. Znalazłem to empirycznie, testując kombinacje, nie znam szczegółów na temat działania elementów wewnętrznych.Jeśli masz klawiaturę w języku angielskim, naciśnięcie Ctrl- [jest równoważne naciśnięciu Esc. Zapewnia to łatwy sposób na wyjście z trybu wstawiania. Alternatywnie użyj Ctrl- c.
Jeśli jesteś w trybie łatwym (
-y
), musisz nacisnąć Ctrl- l(Control-L), aby wyjść z trybu wstawiania.Jest też Ctrl+, októry tylko tymczasowo wyjdzie z trybu wstawiania, aby wykonać jedno polecenie i powrócić do trybu wstawiania (patrz
:help i_CTRL-O
:)Lub Ctrl+ r, ale to tylko do wstawiania zawartości rejestru lub wypowiedzi, np Ctrl+ r, =5*5(patrz
:help i_CTRL-R
,:help c_CTRL-R
a stackoverflow postu ).Czytaj więcej na: Unikaj klawisza Escape na stronie vim wikia
źródło
Ctrl+r
służy do wstawiania rejestrów (w tym wyrażenia=
reg). Jeśli chcesz tymczasowo wykonać jednorazowe polecenie, użyjCtrl+o
.Zdecydowałem się na
<A-e>
ucieczkę:Edycja: właśnie znalazłem informacje o tym,
<C-\><C\n>
który przesyła cię do normalnego trybu z dowolnego innego trybu. Ma również lepsze ogólne zachowanie. Mapowania stają się:źródło
Ponownie mapuję kartę, aby wyjść. Myślę, że historycznie tam był kiedyś klawisz esc, więc użyłem go i nigdy nie oglądałem się za siebie. Prawie nigdy nie muszę wstawiać tabulacji w dokumencie, a kiedy to robię, po prostu naciskam shift + tab. Nigdy nie przegapiłem oryginalnego wiązania tabulatorów.
źródło