Zauważyłem podczas edycji wzdłuż linii w pliku .txt w trybie wstawiania, kursor przesunie się na początek linii po zapisie przy użyciu sekwencji klawiszy:
<esc>:w
Chciałbym zmienić to zachowanie tak, aby kursor pozostał w pozycji po: napisz. czy to możliwe? Nie potrzebuję kursora, aby pozostać w trybie wstawiania, chciałbym tylko, aby utrzymał ostatnią pozycję po zapisie.
Używam gVim 7.4 na Windowsie. Mój .vimrc jest bardzo prosty, nie sądzę, aby moje ustawienia zakłócały to zachowanie. Usunąłem również pozyskiwanie mswin.vim i example.vim z mojego .vimrc (w pakiecie z oficjalnym instalatorem systemu Windows vim.org).
Po przeczytaniu poniższych komentarzy ponownie spojrzałem na problem i zdałem sobie sprawę, że kursor przesuwa się tylko w lewo po napisie na liniach, które składają się całkowicie z końcowych białych znaków. Innymi słowy, kursor przesuwa się tylko w lewo po naciśnięciu klawisza esc: w, gdy linia jest wiszącym wcięciem bez innych znaków poza spacjami . .Vimrc obsługuje zachowania wcięć przy następujących ustawieniach:
set tabstop=4
set softtabstop=4
set shiftwidth=4
set expandtab
set autoindent
Tak więc nowa linia utworzona poniżej linii wcięcia będzie zawierać 4 końcowe białe spacje jako pierwsze 4 spacje linii (którą chcę zachować). Po wciśnięciu klawisza „esc” kursor przesuwa się w lewą stronę bufora.
Czy istnieje sposób na zachowanie pozycji kursora po naciśnięciu „esc”, aby powrócić do normalnego trybu, na linii złożonej z końcowych białych spacji (jako wcięcie)?
gvim -u NONE -U NONE
(możesz użyć cmd.exe lub zrobić skrót)? Zapobiegnie to ładowaniu plików (g) vimrc.Odpowiedzi:
Przeglądając dokumentację dotyczącą autoindent, można znaleźć odpowiedź na pytanie, dlaczego i jak go obejść.
:help 'autoindent'
:Innymi słowy, jeśli chcesz, aby nie zgubił wcięcia, wpisz coś, a następnie wciśnij klawisz Backspace przed uderzeniem Esc, a wiodące miejsce pozostanie.
Alternatywnie, jeśli chcesz powrócić na poziom wcięcia, gdy wrócisz do trybu wstawiania i używasz
'cindent'
również, użyj Shift-Szamiast i, co spowoduje wyczyszczenie (już pustej) linii, i zacznij od odpowiedniego poziomu wcięcia. To nie jest tak ogólne rozwiązanie jak powyższe, ale wolę to, gdy piszę kod C, aby moje pliki nie były zapisywane z liniami tylko białych znaków.źródło
nnoremap o o <BS><Esc><DEL>
innoremap O O <BS><Esc><DEL>