Vim:在空白行上input插入模式时,智能缩进?

当我打开一个新行(通过“o”)时,我的光标跳到下一行正确缩进的位置。 另一方面,当我的光标位于空白行时,进入插入模式不会将光标移动到正确缩进的位置。

在空白行input插入模式(通过i)时,如何使vim正确缩进光标?

cc将replace当前行的内容,并在正确的缩进处input插入模式 – 这样一个空行就可以完成你正在做的事情。

我相信你描述的i的行为是正确的,因为有很多用例,你想要插入到一个空白行的特定位置,而不是跳到vim想要插入的地方。

这实际上并没有我想象的那么糟糕。 一种方法是将以下内容添加到〜/ .vimrc中

 "smart indent when entering insert mode with i on empty lines function! IndentWithI() if len(getline('.')) == 0 return "\"_ccO" else return "i" endif endfunction nnoremap <expr> i IndentWithI() 

只要从插入模式中点击“i”,它就会检查一个空行。 如果你确实是空着的话,它会删除它,并打开一个新的,有效地利用工作的“开放线”行为。

注意:“cc之前确保您的注册不被擦除

在一个空行上,要正确input插入模式,可以简单地使用s

请注意, scl的同义词,所以如果实际上不在空行上,它将最终删除单个字符而不是缩进。 在那种情况下,你最好使用cc ,正如sml在18个月前提出的那样。 但是我经常使用这个捷径改进我在VimGolf的得分,所以我想我会提到它。 ;)