代码之家  ›  专栏  ›  技术社区  ›  keparo

在空行上进入插入模式时是否智能缩进?

  •  38
  • keparo  · 技术社区  · 16 年前

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

    如何使vim在空行上进入插入模式(via I)时正确缩进光标?

    3 回复  |  直到 16 年前
        1
  •  81
  •   sml    16 年前

    cc 将替换当前行的内容,并在正确的缩进处进入插入模式-因此在一个空行上将执行您所要执行的操作。

    我相信 i 希望

        2
  •  15
  •   Alex Celeste    11 年前

    其实这并没有我想象的那么糟。启用此功能的一种方法是将以下内容添加到~/.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”时,它只检查空行。如果您确实在一个空行上,它将删除它并打开一个新的,有效地利用了工作的“openline”行为。

    注意:“\在抄送之前确保您的寄存器不会被擦除

        3
  •  7
  •   Trevor Powell    14 年前

    在空行上,要正确缩进插入模式,只需使用 s .

    请注意 是的同义词 cl ,所以如果你 实际上,在空行中,它将删除单个字符而不是缩进。那样的话,你最好用 cc 正如18个月前sml建议的那样。但是我经常用这个捷径来提高我在VimGolf的成绩,所以我想我应该提一下