【发布时间】:2011-03-01 12:15:12
【问题描述】:
当我打开一个新行(通过“o”)时,我的光标会跳到下一行的正确缩进位置。另一方面,当光标位于空白行时进入插入模式不会将光标移动到正确缩进的位置。
在空白行进入插入模式(通过 i)时,如何让 vim 正确缩进光标?
【问题讨论】:
标签: vim customization indentation
当我打开一个新行(通过“o”)时,我的光标会跳到下一行的正确缩进位置。另一方面,当光标位于空白行时进入插入模式不会将光标移动到正确缩进的位置。
在空白行进入插入模式(通过 i)时,如何让 vim 正确缩进光标?
【问题讨论】:
标签: vim customization indentation
cc 将替换当前行的内容并在正确的缩进处进入插入模式 - 所以在空白行上将完全符合您的要求。
我相信您描述的 i 的行为是正确的,因为在许多用例中您想要在空白行的特定位置插入,而不是跳到 vim 猜测的任何地方你想插入。
【讨论】:
o 两次,因为你想要前一行和下一段代码之间的间距。)我仍然希望看到一种快速进入插入模式的方法,在 上一行实际代码.
cindent 后才开始为我工作,而smartindent cc 没有按描述工作。
其实这并没有我想象的那么糟糕。启用此功能的一种方法是将以下内容添加到您的 ~/.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”时,它只会检查空行。如果您确实在空行上,它将删除它并打开一个新行,有效地利用工作中的“打开行”行为。
注意:“抄送之前的_确保您的寄存器不会被擦除
【讨论】:
ccO也不起作用,但是ddko起作用了(删除当前行,转到上一行,添加新行)。
"\"_ccO" 更改为"\"_cc",它正在插入O,我不确定它为什么会在那里。否则超级有用的功能,谢谢。
a 而不是 i,这对我来说更合乎逻辑,因为我认为它们在不同的方面隐式缩进。所以i 像以前一样在最左边插入,a 在自动缩进之后追加。
在空行中,要正确缩进进入插入模式,您可以简单地使用s。
注意s 是cl 的同义词,所以如果您不是实际上是在一个空行上,它最终会删除一个字符而不是缩进。在这种情况下,您最好使用cc,正如 sml 大约 18 个月前建议的那样。但是我经常通过使用这个快捷方式提高我在 VimGolf 的分数,所以我想我会提到它。 ;)
【讨论】: