现在在 Vim 中,当我换行时(或在正常模式下按 'p' 或 'o'),我得到一个可爱的自动缩进,如果我退出插入模式而不添加任何内容,它也会消失。
有没有办法在我退出插入模式之前绑定一些东西,例如插入一个幻像字符然后删除它?
现在在 Vim 中,当我换行时(或在正常模式下按 'p' 或 'o'),我得到一个可爱的自动缩进,如果我退出插入模式而不添加任何内容,它也会消失。
有没有办法在我退出插入模式之前绑定一些东西,例如插入一个幻像字符然后删除它?
尝试任一cc
或S
在正常模式下更改相对于缩进的行。不需要幻影字符。
:h cc
:h S
啊,我两天前刚读到这个确切的东西,但我不记得在哪里。
无论如何,诀窍是立即输入一个字符<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>
which 将您置于正确缩进级别的 INSERT 模式来跳过。
像下面这样的映射应该可以解决问题:
imap <esc> <esc>:s/\s\+$//<CR>
当您esc在插入模式下按下时,这会删除尾随字符。