当我在打开 cindent 或 vim-javascript 的 vim 中有以下内容时:
if(bla){
#
(# 显示光标)
我输入一个新行:
if(bla){
#
然后关闭}
if(bla){
}
问题是,现在我回到上一行
if(bla){
#
}
# 之后不再有缩进!现在您可能认为这并不烦人,但是当我处理具有多级制表符缩进的文件时,由于我的编码方式,它会破坏我的工作效率。有没有办法让关闭 } 不破坏行前的制表符缩进?
当我在打开 cindent 或 vim-javascript 的 vim 中有以下内容时:
if(bla){
#
(# 显示光标)
我输入一个新行:
if(bla){
#
然后关闭}
if(bla){
}
问题是,现在我回到上一行
if(bla){
#
}
# 之后不再有缩进!现在您可能认为这并不烦人,但是当我处理具有多级制表符缩进的文件时,由于我的编码方式,它会破坏我的工作效率。有没有办法让关闭 } 不破坏行前的制表符缩进?
该选项卡没有被删除,因为您关闭了{}
,它被删除了,因为您没有在该行输入任何文本。
几年来,我在我~/.vimrc
的“修复”该问题(等待更清洁的解决方案)中使用了以下映射的许多变体:
inoremap {<CR> {<CR>}<C-o>==<C-o>O
inoremap {; {<CR>};<C-o>==<C-o>O
两者都做同样的事情:它们关闭{}
并将光标放在它所属的位置。有很多自动关闭插件提供该功能,但从长远来看,我发现它们太烦人了。
你用什么来移动到空白行?方向键(有些人认为这是个坏习惯)?也许在你写完上面的东西之前你不需要放入右括号?您也可以不离开空行,点击右大括号,然后<esc>O
在上面键入打开。或者,如果您出于某种原因想保留空白行,只需使用S
重置缩进即可。