Я заметил, при редактировании вдоль строки в текстовом файле в режиме вставки курсор переместится в начало строки следующего за записи с помощью последовательности клавиш:
<esc>:w
Я хотел бы изменить это поведение так , что курсор будет оставаться на месте после: напиши. Это возможно? Мне не нужно, чтобы курсор оставался в режиме вставки, я просто хотел бы, чтобы он сохранял свою последнюю позицию после записи.
Я использую gVim 7.4 на Windows. Мой .vimrc очень простой, я не верю, что какие-либо мои настройки мешают этому поведению. Я также удалил сорсинг mswin.vim и example.vim из моей .vimrc (в комплекте с официальным установщиком vim.org окна).
После прочтения комментариев ниже, я снова посмотрел на проблему и понял, что курсор только скользит в крайнее левое положение после строк записи, которые полностью состоят из конечного пробела. Другими словами, курсор перемещается в крайнее левое положение только после esc-: w, когда строка представляет собой висячий отступ без других символов, кроме пробелов . .Vimrc обрабатывает поведение отступа с этими настройками:
set tabstop=4
set softtabstop=4
set shiftwidth=4
set expandtab
set autoindent
Итак, новая строка, созданная ниже строки с отступом, будет содержать 4 пробела в качестве первых 4 пробелов строки (которые я хочу сохранить). После нажатия клавиши «esc» курсор перемещается в крайнее левое положение буфера.
Есть ли способ сохранить положение курсора при нажатии «esc» для возврата в нормальный режим на линии, состоящей из конечных пробелов (как отступ)?
источник
gvim -u NONE -U NONE
(вы можете использовать cmd.exe или создать ярлык)? Это предотвратит загрузку ваших (g) vimrc файлов.Ответы:
Просмотр документации для autoindent дает ответ о том, почему и как обойти это.
:help 'autoindent'
:Другими словами, если вы хотите, чтобы он не терял отступ, наберите что-нибудь, а затем нажмите клавишу «Назад» перед ударом Esc, и пробел останется.
В качестве альтернативы, если вы просто хотите вернуться на уровень отступа, когда вернетесь в режим вставки и также используете
'cindent'
, используйте Shift-Sвместо i, чтобы очистить (уже пустую) строку и начать с соответствующего уровня отступа. Это не такое общее решение, как приведенное выше, но я предпочитаю это, когда пишу код на C, чтобы мои файлы на самом деле не сохранялись с пустыми строками.источник
nnoremap o o <BS><Esc><DEL>
, иnnoremap O O <BS><Esc><DEL>