W pewnym momencie mój Vim cofnie całe słowo, kiedy uderzę u
.
[i]typing some words[C-c][u]
Spowodowałoby to
typing some
Wydaje się jednak, że ziarnistość cofania zmieniła się na usuwanie jednej litery na raz.
[i]typing some words[C-c][u]
Prowadzi do
typing some word
Pamiętam, że czytałem o dostosowywaniu ziarnistości w Practical Vim, ale nie pamiętam, jak to kontrolować. Każda pomoc doceniona!
:help
plikach na ten temat ... Zobacz: Jak debugować mój plik vimrc? ... Również użycie,<C-c>
aby wyjść z trybu wstawiania, może mieć skutki uboczne ( zobacz to ) i może być częścią problemu ... Sugeruję użycieEsc
lub<C-[>
( zobacz to )Odpowiedzi:
Ręczne przerywanie sekwencji cofania
Możesz ręcznie przerwać sekwencję cofania w trybie wstawiania za pomocą
<C-G>u
. Z pomocy :Przykład
Zostawi Ci to tekst
Podział poleceń
Automatyczne rozwiązanie
Dokładniejsza kontrola cofania poziomu
Oto mały fragment kodu VimScript, który służy
<C-G>u
do tworzenia podziałów cofania po rozpoczęciu usuwania tekstu, a także po ponownym wprowadzeniu tekstu po usunięciu.Notatki
Będzie to działać dla
<BS>
,<C-W>
(usuń słowo) i<C-U>
(usuń do początku wiersza). Jeśli istnieje więcej sposobów usuwania w trybie wstawiania, można je obsłużyć, dodając dodatkoweinoremap
połączenia na końcu.źródło
<C-G>u
, a jest już za późno.i
po czym następuje długie zdanie, a następnie backspace, aby usunąć część tego, co napisałem (wszystko w trybie wstawiania). Potem zdaję sobie sprawę, że nie powinienem był cofać się i to, co napisałem, było w porządku. Cofam, ale następnie cały wstawiany tekst jest cofany. Więc albo nie zostało mi długie zdanie, albo część, która nie ma odstępu. Nie można odzyskać części z odstępem. Czy istnieje sposób, aby powiedzieć vimowi, aby przerwał sekwencję cofania na backspace? (Teraz, gdy to mówię,map
opcja backspace jest oczywiście opcją).inoremap <CR> <C-G>u<CR>
, aby każde cofnięcie było zawarte w jednym wierszu (nie cofam już całego akapitu, który wpisujesz bez przerwy).