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

时间:2010-06-09 05:58:21

标签: vim customization indentation

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

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

3 个答案:

答案 0 :(得分:69)

cc将替换当前行的内容并在正确的缩进处输入插入模式 - 因此在空行上将完全按照您的要求执行。

我相信您描述的i行为是正确的,因为有许多用例,您希望在空白行的特定位置插入,而不是跳到任何地方vim猜想要插入。

答案 1 :(得分:13)

这实际上没有我想象的那么糟糕。实现此目的的一种方法是将以下内容添加到〜/ .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之前确保您的注册表没有被删除

答案 2 :(得分:7)

在空行中,要正确缩进输入插入模式,您只需使用s

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