我碰巧在代码中工作,其中某些模块使用制表符进行缩进,而其他模块则使用空格。许多文本编辑器(例如Np++)具有某种自适应的制表符功能,如果前一行(或代码块)使用空格或制表符,则使用空格来缩进。
我还没有在Vim中看到过这样的东西。是否有任何这样的插件或设置?
最佳答案
我希望像下面的示例所示来设置我的环境。我制定了一个一般规则,即用空格替换制表符,并在需要覆盖该规则时使用augroup
。 Makefile是一个很好的例子,说明何时可能需要TABS,而cpp文件是何时需要空格。
" A tab produces a 4-space indentation
:set softtabstop=4
:set shiftwidth=4
:set expandtab
" replace tabs with spaces unless noted otherwise
" <snip>
augroup CPPprog
au!
"-----------------------------------
" GENERAL SETTINGS
"-----------------------------------
au BufRead,BufNewFile,BufEnter *.cpp,*.c,*.h,*.hpp set nolisp
au BufRead,BufNewFile,BufEnter *.cpp,*.c,*.h,*.hpp set filetype=cpp
au FileType * set nocindent smartindent
au FileType *.c,*.cpp set cindent
au BufRead,BufNewFile,BufEnter *.cpp let g:qt_syntax=1
" turn on qt syntax highlighting (a plugin)
au BufNewFile,BufRead,BufEnter *.c,*.h,*.cpp,*.hpp let c_space_errors=1
" trailing white space and spaces before a <Tab>
" <snip>
augroup END
" <snip>
augroup filetype
au! BufRead,BufNewFile,BufEnter *Makefile*,*makefile*,*.mk set filetype=make
augroup END
" In Makefiles, don't expand tabs to spaces, since we need the actual tabs
autocmd FileType make set noexpandtab
关于vim - vim中的自适应制表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6950063/