当我打开一个新行(通过'o')时,我的光标跳到下一行的正确缩进位置。另一方面,当光标位于空行时进入插入模式不会将光标移动到正确缩进的位置。
当在空白行上输入插入模式(通过i)时,如何使vim正确缩进光标?
答案 0 :(得分:69)
cc
将替换当前行的内容并在正确的缩进处输入插入模式 - 因此在空行上将完全按照您的要求执行。
我相信您描述的i
行为是正确的,因为有许多用例,您希望在空白行的特定位置插入,而不是跳到任何地方vim猜想要插入。
答案 1 :(得分:13)
这实际上没有我想象的那么糟糕。实现此目的的一种方法是将以下内容添加到〜/ .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()
当您从插入模式点击“i”时,它只会检查空行。如果你确实是一个空行,它将删除它并打开一个新行,有效地利用工作的“开放行”行为。
注意:“在cc之前确保您的注册表没有被删除
答案 2 :(得分:7)
在空行中,要正确缩进输入插入模式,您只需使用s
。
请注意s
是cl
的同义词,所以如果你 实际上是空行,它最终会删除一个字符而不是缩进。在这种情况下,你最好使用cc
,正如sml在18个月前提出的那样。但是我经常使用这个快捷方式提高我在VimGolf的分数,所以我想提到它。 ;)