【问题标题】:Indented new line when creating a new block in C在 C 中创建新块时缩进新行
【发布时间】:2013-05-25 23:10:28
【问题描述】:

我在 Vim 中使用 AutoClose 插件。我想设置行为,以便当我处于状态时

while(i < N) {<cursor>}

然后当(且仅当)我按下回车键时,我会:

while(i < N) {
    <cursor>
}

这是 Sublime Text 中的行为。

这里有一个类似的问题:Automatically insert a matching brace in Vim 但是用户希望在创建左大括号后立即开始新行。而且它似乎对我来说不能正常工作。

如果我使用它,或者按照@WoLpH 的建议执行set cindent,结果是(只要我创建了左大括号)

while(i < N) {
     <cursor>
    }

第二个大括号缩进,光标缩进一个空格。我的 vimrc 设置是:

filetype indent on
set ts=4
set sw=4
set et

【问题讨论】:

    标签: c vim


    【解决方案1】:

    为此有一个内置功能,称为cindent

    http://vim.wikia.com/wiki/Indenting_source_code#.27smartindent.27_and_.27cindent.27

    所以,只需将其放入您的 .vimrc 即可:

    set cindent
    

    【讨论】:

    • 不完全是我所追求的——我会用那里发生的事情来更新问题
    • @MrE:是的,您还需要一些其他标志才能使其正常工作。在我的情况下,} 在输入后会自动消失。
    【解决方案2】:

    您所追求的功能包含在DelimitMate,另一个类似于 AutoClose 的插件。

    不管怎样,几个月前我已经停止使用任何自动关闭插件,但我在~/.vimrc 中保留了这一行的“括号扩展”功能:

    inoremap {<CR> {<CR>}<C-o>==<C-o>O
    

    【讨论】:

      【解决方案3】:

      我编辑了自动关闭脚本。函数OpenSpecial 现在包含:

      return "\<esc>a\<CR>\<tab>;\<CR>".a:cchar."\<esc>\"_xk$\"_xa"
      

      所以我通过输入 {{l 来获得我想要的行为,现在已经足够了

      【讨论】:

        猜你喜欢
        • 2018-09-08
        • 2010-09-15
        • 2011-08-31
        • 2015-02-19
        • 1970-01-01
        • 2021-09-29
        • 1970-01-01
        • 2019-04-05
        • 1970-01-01
        相关资源
        最近更新 更多