启用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
答案 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
还提到了两个替代设置:cindent
和indentexpr
,这两个设置都会使vim忽略smartindent
的值。
我想从那里你应该使用以下选项
:set autoindent
:set nosmartindent
也许
:set noindentexpr