Vim一直在改变expandtab设置

7
有时候Vim会改变我的expandtab设置。我希望对于特定的文件类型,总是使用空格,但有时,当我插入新行时,它会给我一个制表符而不是空格。
verb set expandtab?

告诉我在这个文件中设置了nonexpandtab
set autoindent
set expandtab
set shiftwidth=4
set numberwidth=4
set softtabstop=4
set smartindent
autocmd FileType ruby,php,vim,jade,erb,css,scss,html,coffee,javascript setlocal expandtab sw=2 sts=2
au FileType xml exe ":silent 1,$!XMLLINT_INDENT='    ' xmllint --format --recover - 2>/dev/null"
set backspace=indent,eol,start

" Command to set how many spaces
command! -nargs=1 SetSpace call s:SetSpace(<f-args>)
function! s:SetSpace(space)
  setlocal expandtab sta
  let &sw = a:space
  let &sts = a:space
endfunction

“set noexpandtab”具体在哪里设置的?

更新
我注意到当我输入新行时,如果该行缩进为8个空格,则Vim会将其转换为制表符。如何修复此问题?


这是什么文件?你的vimrc吗?一个ftplugin文件?其他文件? - FDinoff
这是我的.vimrc文件中的内容。它是一个单独的文件,我在.vimrc中调用它。 - BPm
你能分享一下你的vim配置吗?(可以放在github或其他地方) - FDinoff
1个回答

2
:verbose set 不能捕捉到所有实例,可能会给出错误的答案或者没有答案。你可以使用vim -V20vimlog来记录整个Vim会话的日志。退出Vim后,检查vimlog日志文件中的可疑命令。

它发生得相当随机。我试图记录Vim会话,但它崩溃了。我使用grep查找noexpand,唯一找到的是一个函数中的setlocal noexpandtab,除非我特别调用它,否则不会被调用。你知道还有哪些命令可能会影响制表符/空格设置吗? - BPm
必须通过:set[local]或等价的函数来实现。 - Ingo Karkat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接