如何让 vim 的自动缩进不删除尾随空格?

如何让 vim 的自动缩进不删除尾随空格?

在某些文本编辑器(例如 Kate、gedit)中,当启用自动缩进时,按两次回车键将留下尾随空格(我想要的):

if (code) {
....
....|
}

而另一些则遵循编码标准,不允许出现尾随空格(即使在空白行中):

if (code) {

....|
}

让我恼火的是,如果我在自动缩进后按向上箭头,自动缩进就会丢失:

if (code) {
|
....
}

如果我运行 vim 和:set autoindent,我会得到后一种行为。

我的问题是,如何设置 vim 来保留尾随空格而不是在未使用时自动删除它们?

答案1

这个提示vimwiki 上了解如何正确缩进,即使对于空行也是如此。如果您只想保留之前的缩进(忽略vim计算出的正确缩进),请使用let ind = indent(prevnonblank(v:lnum - 1))同一 wiki 条目下的评论中解释的方法。

答案2

我发现此解决方案为我工作:

:inoremap <Return> <Space><BS><Return>

答案3

在我的.vimrc中:

" Change a blank line upon creation so that its leading spaces won't be removed
inoremap <Return> <Return><Space><BS>
nnoremap o o<Space><BS>
nnoremap O O<Space><BS>

相关内容