vim indent:关闭时不要删除标签缩进}

时间:2013-05-18 08:35:16

标签: vim

当我在打开cindent或vim-javascript的vim中有以下内容时:

if(bla){
    #

(#显示光标)

我输入一个新行:

if(bla){

    #

然后关闭}

if(bla){

}

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

if(bla){
#
}

#之后没有更多的缩进!现在你可能认为这并不烦人,但是当我处理具有多级标签缩进的文件时,由于我的编码方式,它会破坏我的工作效率。有没有办法让关闭a}不破坏行之前的标签缩进?

2 个答案:

答案 0 :(得分:2)

由于您关闭了{},因此未删除该标签,因为您未在该行中输入任何文字而将其删除。

我的~/.vimrc中有以下映射的多种变体来解决这个问题(等待更清洁的解决方案)几年:

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

两者都做同样的事情:他们关闭{}并将光标放在它所属的位置。有一堆自动插件提供了这个功能,但从长远来看,我发现它们太烦人了。

答案 1 :(得分:0)

你有什么用来升空线?箭头键(一个坏习惯,根据一些)?也许在你写完上面的东西之前你不需要放入右大括号?您也可以不留下空行,点击右括号,然后键入<esc>O以打开上方。或者,如果您因某些原因想留空行,只需使用S重置缩进。