Czasami w trybie wstawiania <CR>
trafiam przez pomyłkę i muszę kilkakrotnie uderzyć w backspace (zależy od wcięcia), aby wrócić tam, gdzie byłem.
na przykład
<div>
<p> This is some text []</p>
</div>
Kursor jest []
i uderzyłem <CR>
:
<div>
<p> This is some text
[]</p>
</div>
Teraz muszę dwukrotnie nacisnąć klawisz Backspace, aby wrócić do poprzedniej linii (ta sprawa nie jest taka zła, ale nie ma dużo wcięć).
Czy znasz lepszy sposób?
insert-mode
nobe4
źródło
źródło
ctrl+w
dwa razy wydaje się działać i być całkiem łatwymOdpowiedzi:
Co powiesz na:
<C-o>
wykona polecenie trybu normalnego (:left 0
), które usunie wszystkie wcięcia, spowoduje to również umieszczenie kursora na początku wiersza.<BS>
wróci do ostatniej linii.To jest trochę jak „wstecz
J
”.Niestety mapowanie Shift + Enter lub Ctrl + Enter nie wydaje się możliwe, więc wybrałem
<C-\>
jako „blisko wejścia”.źródło
<C-u>
zamiast<C-o>:left 0<CR>
?J
”: więcfoo<CR>bar<C-\>
zostawię cię zfoobar
. IMHO to bardziej przydatne, ale YMMV.<C-u>
(tj. I_CTRL-U ) powinien być taki sam jak<C-o>:left 0<CR>
.foo<CR>bar<C-u>
pozostawi Ci znakfoo<CR>
(+ wszelkie automatyczne wcięcia dodane przez Vima).<C-o>:left 0<CR>
zawsze będzie zachowywać się tak samo, niezależnie od pozycji kursora.Mam to w sobie
vimrc
, druga część jest istotna:Co to robi: za każdym razem, gdy naciskasz
Enter
w trybie wstawiania, „przerywa także sekwencję cofania, rozpoczyna nową zmianę” (patrzh: i_CTRL-G_u
). Oznacza to, że jeśli trafiszEnter
przez pomyłkę, to może teraz cofnąć zmiany bez usuwania poprzednich wstawione linie, albo zESC u a
, lubCtrl-o u
, jak zaproponowano Statox. Zasadniczo każdą linię można cofnąć osobno.źródło
EDYCJA / AKTUALIZACJA: Jeśli zdarzy ci się używać emulacji Vima w Emacs, czyli trybie zła , możesz użyć tego pakietu dla podobnego efektu.
źródło
<c-y>
odnosi się do wyskakującego menu.Ctrl-y
w trybie wstawiania dokończy bieżące zaznaczanie wyskakujących okienek, a powyższe mapowanie pozwoliEnter
również dokończyć."<c-g>u<cr>"
przez&paste ? "<cr>" : "<c-g>u<cr>"
, w przeciwnym razie następnym razem wkleić przez pomyłkę 200 linijek kodu HTML będziesz miał dużo zabawy odkręcenie go. :)paste
jest włączony, mapowania trybu wstawiania są wyłączone (zgodnie z pomocą Vima)backspace
opcji.Tak to robię Ctrl-wBackspace.
Ctrl-waby usunąć ostatnie słowo (zapomniałem, czy jest to standardowy vim, czy nie), a ponieważ są to tylko spacje, zabierze mnie z powrotem na początek wiersza. Następnie Backspacezabierze mnie z powrotem do poprzedniej linii, w której byłem.
źródło
Ctrl-w
użyciu w trybie wstawiania. Ale Carpetsmoker ♦ jest jeszcze szybszy. Zatem domyślne wiązanie Ctrl- \ nie wydaje się takie przydatne.:help i_CTRL-W
. I dwukrotne naciśnięcie wydaje się też załatwić sprawę?<C-u>
może być bardziej przydatna, ponieważ usuwa wszystkie znaki z nowej liniiMoje wyjście z tego jest (z trybu wstawiania) UpCtrl-oJDel. Być może nie jest to najskuteczniejsza kombinacja, ale robię to bez konieczności myślenia o tym.
źródło