在Vim中使用smartindent的问题

6 vim auto-indent

在使用smartindent的vim中:

  1. Enter说完if语句后按
  2. 输入 {
  3. Enter两次
  4. 输入 }
  5. 如果您点击并转到上一行,则会从空行中删除缩进.

甚至vim文档都说:

如果您没有在新行上键入任何内容,除了<BS>CTRL-D然后键入<Esc>,CTRL-O或者<CR>,再次删除缩进.

有没有办法保留这个缩进而不删除它?

eph*_*ent 8

使用Shift+ S开始在空白行编辑(显然从命令模式).这将使用预期的缩进级别启动光标.


另一个没有回答问题的问题但总体来说是一个更好的解决方案:

在插入模式下键入左括号时,这将插入一组匹配的大括号,并将光标留在中间的新行上.

:imap { {<CR>}<Esc>O
Run Code Online (Sandbox Code Playgroud)

同样,这将自动插入匹配的parens和方括号.

:imap ( ()<Left>
:imap [ []<Left>
Run Code Online (Sandbox Code Playgroud)

(:添加时删除前导vimrc.)

正如我对Victor的答案所评论的那样,更改Vim的缩进行为会在整个文件中留下包含无关空间的"空"行.IMO,这是完全无法忍受的.

  • 我正在投票,部分原因是因为我之前从未听说过<kbd>标签. (2认同)