7

有时 vim 的 smartindent 不会为下一行选择正确的缩进级别,一旦你按下回车,你想回到上一行的缩进级别,然后从那里开始。我知道你可以点击ctrl-d几次来实现这一点,但对于立即进入上述行的缩进级别的键会更有用。

4

4 回答 4

3

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

于 2013-05-08T07:11:32.080 回答
1

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

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

于 2013-05-07T05:42:18.247 回答
1

如果你懒得为这样一个简单的任务安装插件(我不能),试试这个简单的映射:

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

现在CtrlD在插入模式下将执行此操作:像上一行一样缩进当前行。

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

于 2013-05-08T16:50:10.520 回答
0

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

于 2013-05-07T06:46:36.430 回答