如何在vim中只使用一个标签自动缩进分割线?

时间:2018-02-24 23:40:15

标签: c vim

启用cindent后,如果在“不完整”语句中插入换行符,则会自动缩进(例如来自here):

a = b + 9 *
    █

但是如果你在任何带括号的内容中执行它,比如函数调用或if语句,它会自动缩进,使你的'shiftwidth'加倍:

printf("%s %d\n", "this is a number"
        █

我希望它只插入一个'shiftwidth',就像第一个例子一样。

此外,+N cinoption无效:如果我执行:set cinoptions+=+0,虽然它会停止自动缩进第一个示例,但仍会将'shiftwidth'加倍{括号中。

我的.vimrc

set ts=4 sw=4   
set softtabstop=4
"set expandtab
color vim-material
set guifont=Consolas:h11:cANSI:qDRAFT
set nu
syntax on
set backspace=indent,eol,start
set ruler
set relativenumber
set hidden
set wildmenu
filetype plugin indent on
"set autoindent
set formatoptions-=cro
set rulerformat=%l,%v
set cinoptions+=:0

1 个答案:

答案 0 :(得分:1)

您未正确选择了SO网站。我从https://vi.stackexchange.com/questions/5818/what-is-the-difference-between-autoindent-and-smartindent-in-vimrc

的信息中找到了答案
  

autoindent基本上告诉vim将当前行的缩进应用于下一行(通过在 insert 模式下按 enter 或使用 O创建正常模式下的 o

     

smartindent会对您正在编辑的代码的语法/样式做出反应(特别是对于C)。在 on 时,您还应该在上使用autoindent

     

:help autoindent还提到了两个替代设置:cindentindentexpr,这两个设置都会使vim忽略smartindent的值。

我想从那里你应该使用以下选项

:set autoindent
:set nosmartindent

也许

:set noindentexpr