阻止Vim在空行上删除缩进

21
当光标位于仅包含空格字符的行末时,当我按下回车键时,vim会删除这些空格。我发现这很烦人,因为它会破坏我的选择相同缩进级别的代码的脚本。如何阻止vim这样做?
在我的.vimrc文件中(http://bjuhn.com/randomstuff/vimrc),我有以下内容:
filetype plugin on
set copyindent

也就是说,我没有使用任何语法感知的自动缩进工具,因为我还没有找到一个完全符合我的要求的工具。
2个回答

19

Vim wiki建议使用以下方法:

inoremap <CR> <CR>x<BS>

如果某一行输入了文本,即使删除该文本,缩进也不会被移除。

[编辑 - milimetric]

完整解决方案还少了几个部分。你还需要为'o'和'O'等用于添加行的命令进行重新映射:

inoremap <CR> <CR>x<BS>
nnoremap o ox<BS>
nnoremap O Ox<BS>

相同的想法,但是对于新手来说可能不容易理解。


1
我同意,但它似乎足够安全。 - Prince Goulash
3
如果你只想针对某些文件类型(比如Python文件)启用这种行为,可以使用"autocmd FileType"命令。例如:"autocmd FileType python inoremap <CR> <CR>x<BS>" 就可以实现我需要的功能。 - nitsas

0

对我来说,这段代码是有效的:

inoremap <silent> <Esc> <C-O>:stopinsert<CR>

2
这部分是什么意思并且它的作用是什么? - lucidbrot

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接