Команда Vim Pre-Exit (Esc)?

Прямо сейчас в Vim, когда я перехожу на новую строку (или нажимаю 'p' или 'o' в обычном режиме), я получаю прекрасный автоматический отступ, который также исчезает, если я выхожу из режима вставки, не добавляя к нему ничего.

Есть ли способ привязать что-либо перед выходом из режима вставки, например, вставить фантомный символ и удалить его?

3 ответа

Решение

Я только что прочитал об этом, как два дня назад, но не могу вспомнить, где.

В любом случае, хитрость заключается в том, чтобы ввести символ сразу после <CR> и удалите его немедленно. Есть несколько способов сделать это:

<CR>a<Esc>x
<CR>a<C-w>
<CR>a<BS>

--EDIT--

Vim, будучи Vim, возможно, есть много других способов.

Чтобы автоматизировать их, вам нужно добавить отображение в ваш.vimrc:

inoremap <CR> <CR>a<BS> " insert mode mapping for <CR>
nnoremap o oa<BS>       " normal mode mapping for o

Но я не уверен, что вы должны перезаписывать значения по умолчанию.

--EDIT--

Однако, что раздражает поведение Vim по умолчанию, так это то, что вам может понадобиться <Tab><Tab><Tab><Tab> перед тем, как вводить какой-либо текст в строку без отступа или сделать == когда вы закончите или положитесь на правила автоматического отступления для вашего языка на следующем <CR>,

Все, что можно пропустить с помощью <S-S> который переводит вас в режим INSERT прямо на правильном уровне отступа.

Попробуйте либо cc или же S в обычном режиме изменить строку относительно отступа. Нет необходимости в фантомных персонажах.

:h cc
:h S

Сопоставление, подобное следующему, должно сработать:

imap <esc> <esc>:s/\s\+$//<CR>

Этот удаляет завершающие символы, когда вы нажимаете esc в режиме вставки.

Другие вопросы по тегам