在使用smartindent的vim中:
甚至vim文档都说:
如果您没有在<BS>
或CTRL-D
以外的新行中输入任何内容,然后输入<Esc>
,CTRL-O
或<CR>
,缩进再次删除。
有没有办法保留这个缩进而不删除它?
答案 0 :(得分:8)
使用 Shift + S 开始编辑空白行(显然是从命令模式)。这将使用预期的缩进级别启动光标。
另一个没有回答问题的问题但总的来说是一个更好的解决方案:
在插入模式下键入左括号时,将插入一组匹配的大括号 并将光标放在中间的新行上。
:imap { {<CR>}<Esc>O
同样,这将自动插入匹配的parens和方括号。
:imap ( ()<Left>
:imap [ []<Left>
(添加到:
时删除前导vimrc
。)
正如我对Victor的答案所评论的那样,更改Vim的缩进行为会在整个文件中留下包含无关空格的“空”行。 IMO,这是完全无法忍受的。
答案 1 :(得分:2)
当我遇到这种情况时,我有时会使用ddko
(或ddO
)删除没有足够空格的行,并使用正确的缩进打开一个新行。或者,我只需按A
然后按Tab
足够的时间以获得正确的缩进。
答案 2 :(得分:1)
文章here谈到你是一个非常相同的问题,以及要在vimrc中修复它的内容。
inoremap <CR> <CR><Space><BS>
nnoremap o o<Space><BS>
nnoremap O O<Space><BS>
我没有完全测试过这个。
同一篇文章也链接到较短的alternate solution。
答案 3 :(得分:1)
我首选的方法是{<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{
,如果你在其中一个大括号上)。当我有一个需要尽快看文本的好主意时,我会使用它,并且在我休息之前我不担心任何格式化。