vim - vim-设置自动缩进以用空格或制表符填充前导空间

标签 vim auto-indent tabstop

看来,如果我们启用“ 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/

相关文章:

ruby-on-rails - 在 Ruby 中的私有(private)/公共(public)/ protected 方法之后使 vim 缩进

WPF:如何在不同时禁用箭头键导航的情况下禁用选项卡导航?

c - Emacs 在 C 中的宏后缩进

c# - TabStop 和 Focus on GroupBox

html - 你如何在 HTML/CSS 中做制表位

vim - vim 正常模式下 g 键的使用

VIM:全局匹配行,删除此行和以下 2 行

vim - 使用 neoclide/coc.nvim 在 VIM 中找不到 Clangd

vim - 如何在 Vim 中左对齐 IO 流运算符 << 和 >>?

java - Intellij 格式化程序链式方法调用