如何在插入模式下返回上一个缩进级别?

时间:2013-05-07 05:07:59

标签: vim

有时候vim的smartindent在你点击Enter后没有为下一行选择正确的缩进级别,而你想回到前一行的缩进级别并从那里开始。我知道你可以多次点击ctrl-d来达到这个目的,但对于一个直接进入上一行缩进级别的密钥会更有用。

4 个答案:

答案 0 :(得分:3)

我不知道这是不是纯粹的巧合,但是Alexey Radev刚刚发布了prev_indent plugin,它提供了插入模式映射和:PrevIndent命令来将当前行移动到前一个缩进级别。

答案 1 :(得分:1)

在正常模式下,您可以使用<>来增加或减少缩进。它们按预期工作,包括移动,视觉选择以及当前行的>> <<。您也可以使用=来选择“正确的”缩进级别,再次按照预期的方式运行等。

所以我通常做的是在完成编辑后,通过块选择和使用=,然后使用<<和{{修复单个行来修复正常模式下的缩进错误1}}。

答案 2 :(得分:1)

如果您无法为这么简单的任务安装插件(我不能),请尝试这个简单的映射:

:inoremap <C-D> <Esc>:call setline(".",substitute(getline(line(".")),'^\s*',matchstr(getline(line(".")-1),'^\s*'),''))<CR>I

现在 Ctrl D 在插入模式下将执行契约:缩进当前行,就像上一行一样。

在开始在新行上键入之前,这种方法效果最好,因为它会将光标重置为刚好超过缩进。

答案 3 :(得分:0)

您可以使用<C-O>=G在插入模式下从光标缩进到文件末尾。或<C-O><<删除一个缩进级别。