看来,如果我们启用“ ai”,vim会用tabstop填充领先空间。
我可以用'et'填充空格。我不喜欢混合了空格和Tabstop的C文件。
我的vimrc:
set ts=4 et
set ai
set hlsearch
syntax on
filetype plugin indent on
autocmd FileType make setlocal noexpandtab
但是,在某些情况下,我确实需要在敲击键盘上的“ TAB”时输入tabstop,例如在makefile和其他文件中。
'autocmd FileType'命令不好:我无法在vimrc中添加所有文件类型。
我想要的很简单:
自动缩进以填充领先区域
空间;
在键盘上按“ TAB”时,制表符
输入,而不是空格(因此请不要输入“ et”)
怎么做?
最佳答案
inoremap <expr> <tab> ((getline('.')[:col('.')-2]=~'\S')?("\<C-v>\t"):(repeat(' ', &ts-((virtcol('.')-1)%&ts))))
如果我正确阅读,它的作用与@Lynch答案相同。
您也可以使用
<C-v><Tab>
:这将在不调用任何映射的情况下插入<Tab>
,并且会忽略expandtab,除非出于某种原因重新映射了<C-v>
或<C-v><Tab>
。如果只想插入制表符
inoremap <Tab> <C-v><Tab>
它将忽略expandtab设置。
关于vim - vim-设置自动缩进以用空格或制表符填充前导空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5878009/