Команда 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 в режиме вставки.