Vim退出前(Esc Key)命令?

时间:2011-09-27 15:26:54

标签: vim indentation esc-key

现在我在Vim进入一个新行(或者在正常模式下按'p'或'o')我得到一个可爱的自动缩进,如果我退出插入模式而不添加任何内容,它也会消失。< / p>

在退出插入模式之前是否有办法绑定某些内容,例如插入幻像字符然后删除它?

3 个答案:

答案 0 :(得分:2)

哎呀,我刚刚读了两天前这个确切的事情,但我不记得在哪里。

无论如何,诀窍是在<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>语言的自动缩进规则。

使用{{1}}可以跳过所有这一切,这会使您在正确的缩进级别处于INSERT模式。

答案 1 :(得分:2)

在正常模式下尝试ccS来更改与缩进相关的行。不需要幻影字符。

:h cc
:h S

答案 2 :(得分:1)

如下所示的映射应该可以解决问题:

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

在插入模式下按 esc 时,会删除尾随字符。