vim标识:don';t关闭时删除制表符缩进}

vim标识:don';t关闭时删除制表符缩进},vim,Vim,当我在启用cindent或vim javascript的情况下在vim中执行以下操作时: if(bla){ # (#显示光标) 我键入一个新行: if(bla){ # 然后关闭} if(bla){ } 问题是,现在我回到上一行 if(bla){ # } #之后不再缩进!现在,您可能认为这并不烦人,但当我在使用多级制表符缩进的文件时,由于我的编码方式,它会破坏我的工作效率。有没有办法使关闭a}不破坏行前的制表符缩进?制表符没有被删除,因为您关闭了{},它被删除了,因为您

当我在启用cindent或vim javascript的情况下在vim中执行以下操作时:

if(bla){
    #
(#显示光标)

我键入一个新行:

if(bla){

    #
然后关闭}

if(bla){

}
问题是,现在我回到上一行

if(bla){
#
}

#之后不再缩进!现在,您可能认为这并不烦人,但当我在使用多级制表符缩进的文件时,由于我的编码方式,它会破坏我的工作效率。有没有办法使关闭a}不破坏行前的制表符缩进?

制表符没有被删除,因为您关闭了
{}
,它被删除了,因为您没有在该行输入任何文本

几年来,我在
~/.vimrc
中使用了以下映射的许多变体来“修复”该问题(等待更干净的解决方案):

inoremap {<CR> {<CR>}<C-o>==<C-o>O
inoremap {; {<CR>};<C-o>==<C-o>O
inoremap{{}==O
inoremap{;{};==O

两个都做同样的事情:他们关闭<代码> {} /代码>并把光标放在它所属的地方。有一组自动关闭插件提供这个功能,但我发现它们在长期运行中太烦人了。

你用什么来移动到空白行?箭头键(一个坏习惯,根据一些)也许你不需要把它放在关闭的括号里,直到你把它写在上面,你也可以不离开空白行,点击关闭括号,然后键入<代码> o>代码>打开。或者,如果你想离开空白行,出于某种原因,只需使用<代码> s >代码>重置缩进。< /p>如果我想保留标签,我会怎么办?r一行没有文字?这是我的另一个习惯。。