Dan*_*nor 39 vim customization indentation
当我打开一个新行(通过'o')时,我的光标跳到下一行的正确缩进位置.另一方面,当光标位于空行时进入插入模式不会将光标移动到正确缩进的位置.
在空行上进入插入模式(通过i)时,如何使vim正确缩进光标?
sml*_*sml 74
cc 将替换当前行的内容并在正确的缩进处进入插入模式 - 因此在空行上将完全按照您的要求进行操作.
我相信i您描述的行为是正确的,因为有许多用例要在空白行上的特定位置插入,而不是跳到要插入的vim猜测的任何位置.
Dan*_*nor 15
那实际上并没有我想象的那么糟糕.实现此目的的一种方法是将以下内容添加到〜/ .vimrc中
"smart indent when entering insert mode with i on empty lines
function! IndentWithI()
if len(getline('.')) == 0
return "\"_ccO"
else
return "i"
endif
endfunction
nnoremap <expr> i IndentWithI()
Run Code Online (Sandbox Code Playgroud)
当您从插入模式点击"i"时,它只会检查空行.如果你确实是一个空行,它将删除它并打开一个新行,有效地利用工作的"开放行"行为.
注意:"_在cc之前确保您的注册表没有被删除
在空行上,要正确缩进进入插入模式,您可以简单地使用s.
请注意,s是一个代名词cl,所以如果你没有真正在一个空行,它最终会删除单个字符,而不是缩进.在那种情况下,你最好使用cc,就像18个月前sml建议的那样.但是我经常使用这个快捷方式提高我在VimGolf的得分,所以我想提到它.;)