W końcu zdecydowałem się porzucić klawisze strzałek do nawigacji na korzyść hjkl
. Użyłem Vim hardmode
wtyczki, aby wyłączyć klawisze strzałek.
Przyzwyczaiłem się do nawigacji dość szybko, ale okazuje się, że nawigacja w trybie wstawiania nagle jest niemożliwa.
Czy jest na to jakieś rozwiązanie? (istniejący tryb wstawiania nie jest rozwiązaniem).
insert-mode
navigation
stdcall
źródło
źródło
Odpowiedzi:
Masz wiele opcji. Jedną z opcji, a IMO najrozsądniejszym i najłatwiejszym jest po prostu przestać wyłączać klawisze strzałek. Rozumiem, dlaczego wielu hardkorowych vimerów mówi takie rzeczy
(Oczywiście żartuję) Są jednak klawisze strzałek. Są niezwykle przydatne do nawigacji:
W trybie wstawiania
W wierszu poleceń
Zasadniczo, gdy ludzie mówią ci, abyś nie używał klawiszy strzałek, dzieje się tak dlatego, że chcą, abyś ponownie nauczył się nawigacji w bardziej vim-sposób. Jeśli czujesz się swobodnie
hjkl
i najczęściej używasz klawiszy strzałek w trybie wstawiania, nie ma powodu, aby zmuszać się do ich nieużywania.Opcja # 2 polega na zmianie mapowania,
ctrl-hjkl
aby działała jak klawisze kursora. Jest to miłe, ponieważ możesz pozostać na homerow i dobrze pasuje do pamięci mięśni, której nauczyłeś się jużhjkl
w trybie normalnym. W rzeczywistości to właśnie robię . Główną wadą tego podejścia jest to, że ustawienie w terminalu vim może być uciążliwe, ponieważ<C-j>
powoduje powstanieNUL
bajtu. Poradzę sobie z tym za pomocą Gvima. Nie wiem, czy istnieje łatwa poprawka dla konsoli vim, czy nie.Opcja # 3 służy
<C-o>
do wykonywania małych ruchów w trybie normalnym. Na przykład, jeśli piszeszi zdajesz sobie sprawę, że zapomniałeś przecinka, zamiast robić leftleftleftleftleftleft, możesz po prostu wykonać
<C-o>b<C-o>h
lub<C-o>2Fo
inną kombinację ruchów w trybie normalnym, którą lubisz.Oczywiście, inną opcją, którą bardzo lubię, jest po prostu użycie Esc, wykonaj kilka małych ruchów, zanim wrócisz do normalnego trybu. Wspomniałeś, że wolisz tego nie robić, ale czasami jest to naprawdę najbardziej efektywny sposób.
Prawdopodobnie istnieją też inne podejścia, ale te, które lubię, działały dla mnie.
źródło
<c-o>gk
i<c-o>gj
zamiast<Up>
i<Down>
. Dlaczego?gk
igj
wizualnie przechodź w górę i w dół linii, nawet jeśli linia jest owinięta.noremap <Up> <NOP>
...) . Spędzasz wystarczająco dużo czasu w trybie normalnym, aby nauczyć się języka HJKL, ale są tam, gdy ich potrzebujesz. A przynajmniej uważam, że jest to wygodny środek pomiędzy pozostawieniem ich zawsze wyłączonych lub zawsze włączonych i nie wymaga ponownego mapowania innych klawiszy (wiele osób takich jak Ctrl-HJKL do poruszania się między panelami).Lubię używać klawisza Control, aby zmienić
hjkl
klawisze ruchu w „uniwersalne” klawisze ruchu. Oto odpowiedni fragment mojego.vimrc
:Te
inoremap
stwierdzenia odnoszą się do trybu wstawiania, podczas gdycnoremap
te odnoszą się do trybu poleceń. (Używam tego mapowania od tak dawna, że zapomniałem, czy jest jakiś sposób na nawigację bez historii w trybie poleceń).(Edycja: Widzę, że inna odpowiedź wspomniała już o tej możliwości. Mimo to pomocne może być zobaczenie rzeczywistych poleceń mapowania.)
źródło
Naciśnij, esca następnie użyj hjkli wWbBinnych nawigacji, które chcesz wykonać. Istotą trybu trudnego jest nauczenie się nawigacji przy użyciu bardziej złożonych ruchów vima. Wprowadź niewielkie zmiany, a następnie przenieś się do nowej lokalizacji, używając trybu normalnego.
Jeśli nie chcesz nauczyć się szybszej nawigacji z włączonym trybem twardym, sprawdź moją odpowiedź z innego pytania na ten sam temat.
źródło
Jeśli chcesz przesunąć więcej niż JEDEN lub DWIE pozycje ...
... najlepszym wyborem jest uderzenie
ESC
, poruszanie się i powrót do trybu wstawiania.Nie ma sensu tworzyć mapowań, takich jak
<C-h>
przesuwanie się w lewo, a następnie uderzanie go zbyt wiele razy ... jako użytkownik vima nie powinieneś naciskać tego samego klawisza wiele razy, aby osiągnąć sprytny ruch.(Jeśli
ESC
klucz nie jest blisko twoich palców, dobrze byłoby utworzyć dla niego mapowanie).Jeśli chcesz przesunąć JEDNĄ lub DWIE pozycje w trybie wstawiania ...
... dobrym wyborem byłoby zdefiniowanie niektórych ruchów za pomocą
<Leader>
klucza:(Używam
,
jako<Leader>
klucza, ponieważ jest blisko i wygodnie dla moich palców)źródło
Jeśli potrzebujesz tylko zmodyfikować niewielką ilość tekstu lub słowa, możesz użyć
<Ctrl-O>h/j/k/l
.<Ctrl-O>
przenosi cię z powrotem do trybu normalnego tylko dla tego polecenia, a następnie przenosi z powrotem do trybu wstawiania, dzięki czemu oszczędzasz pewną liczbę naciśnięć klawiszy, jeśli chcesz przejść do trybu normalnego dla małego ruchu.Patrz: 1. http://vim.wikia.com/wiki/Use_Ctrl-O_instead_of_Esc_in_insert_mode_mappings
źródło