[英]Issue with smartindent in Vim
在使用smartindent的vim中:
甚至vim文档都说:
如果除了<BS>
或CTRL-D
之外没有在新行上键入任何内容,然后键入<Esc>
, CTRL-O
或<CR>
,则会再次删除缩进。
有没有办法保留这个缩进而不删除它?
使用Shift + S开始编辑空白行(显然从命令模式)。 这将使用预期的缩进级别启动光标。
另一个没有回答问题的问题但总体来说是一个更好的解决方案:
在插入模式下键入左括号时,这将插入一组匹配的大括号,并将光标留在中间的新行上。
:imap { {<CR>}<Esc>O
同样,这将自动插入匹配的parens和方括号。
:imap ( ()<Left>
:imap [ []<Left>
(剥离前导:
添加到vimrc
。)
正如我对Victor的答案所评论的那样,更改Vim的缩进行为会在整个文件中留下包含无关空间的“空”行。 IMO,这是完全无法忍受的。
当我遇到这种情况时,我有时会使用ddko
(或ddO
)来删除没有足够空格的行,并使用正确的缩进打开一个新行。 或者,我只需按A
,然后按Tab
足够的时间以获得正确的缩进。
我首选的方法是{<CR>}<esc>shift+o
因为它超过{<CR><CR>}<esc>k shift+s
几次。 不过,我对它进入了一个车辙,并且当我应该使用S时,最终只使用o或O来抓住空的正确缩进线。
也就是说,设置你的支撑结构并打开上面的线:
if (true) {
}//cursor here, press shift-o
你得到了你期望的缩进。
开放式技巧并不比<up><end><cr>
更少的按键,但是如果重新映射转义并且转换为chorded,你可以非常快地抛出它。
另外,不要忘记您的手动缩进重置和块移动。 如果你在一个受损的大括号内,只需使用={
(或=i{
如果你在其中一个大括号上面)。 当我有一个需要尽快看文本的好主意时,我会使用它,而且在我休息之前我不担心任何格式化。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.