在Vim中使用smartindent的问题

在使用smartindent的 vim中:

>在说出if语句后按Enter键
>输入{
>按两次Enter键
>输入}
>如果您点击↑并转到上一行,则会从空行中删除缩进.

甚至vim文档都说:

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

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

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

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

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

:imap { {<CR>}<Esc>O

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

:imap ( ()<Left>
:imap [ []<Left>

(剥离前导:添加到vimrc时.)

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

相关文章

解决方案:解决linux下vim乱码的情况:(修改vimrc的内容)全...
Linuxvi/vim所有的UnixLike系统都会内建vi文书编辑器,其他的...
      vim正则匹配:空行:/^$/  /^[\t]*$/注释...
$select-editorSelectaneditor.Tochangelater,run'sele...
上次手贱忘了保存,这次就简单做个备忘吧,把踩过的坑记一下...
Linux之文本编译器小结vim的优势所有的UNIX-LIKE习通都会内置...