阻止vim删除空行上的缩进

har*_*elt 15 vim indentation

当光标放在只包含空格字符的行的末尾时,当按下回车键时,vim将删除该空格.我觉得这很烦人,因为它打破了我选择缩进到同一级别的代码的脚本.我怎样才能阻止vim这样做呢?

在我的.vimrc(http://bjuhn.com/randomstuff/vimrc)中,我有以下内容:

filetype plugin on
set copyindent
Run Code Online (Sandbox Code Playgroud)

也就是说,我没有使用任何语法感知的自动缩进,因为我还没有找到一个能够满足我的喜好.

Pri*_*ash 15

Vim的维基表明这一点:

inoremap <CR> <CR>x<BS>
Run Code Online (Sandbox Code Playgroud)

因为如果在该行上输入了某些文本,即使已删除了缩进,也不会删除缩进.

[编辑 - 毫米]

完整解决方案中只缺少几件.您还需要重新映射o和O以及用于添加行的其他任何内容:

inoremap <CR> <CR>x<BS>
nnoremap o ox<BS>
nnoremap O Ox<BS>
Run Code Online (Sandbox Code Playgroud)

同样的想法,但vim更新的人可能不会很快解决它.

  • 有点骇人听闻,但我想它会起作用;) (2认同)
  • 如果只想对某些文件类型(例如Python文件)启用此行为,请记住“ autocmd FileType”命令。例如,“ autocmd FileType python inoremap &lt;CR&gt; &lt;CR&gt; x &lt;BS&gt;”满足了我的要求。 (2认同)