VIM 设置缩进
VIM 设置缩进
- tabstop
- 只修改 Tab 字符的显示宽度
- 不修改按 Tab 键的行为
- softtabstop
- 修改按 Tab 键的行为
- 不修改 Tab 字符的显示宽度
- 具体行为跟 tabstop 选项值有关
- expandtab
- 把插入的 Tab 字符替换成特定数目的空格
- 具体空格数目跟 tabstop 选项值有关
TAB 替换为空格
set ts=4
set expandtab
# ! 表示处理所有 TAB 不然只处理行首
%retab!
# 转换后,需要再次输入 TAB 需要:Ctrl+V TAB
空格替换为 TAB
set ts=4
set noexpandtab
%retab!
展示字符
set list
set listchars=tab:>~,space:.
建议配置
" 自动缩进时,缩进长度为4
set shiftwidth=4
" 输入Tab字符时,自动替换成空格
set expandtab
" softtabstop的值为负数,会使用shiftwidth的值,两者保持一致,方便统一缩进.
set softtabstop=-1
- softtabstop=-1,即跟随 shiftwidth 设置
- 该配置统一了Tab和Backspace的行为,都是处理 4 个空格
demo
仅softtabstop=4
set softtabstop=4
此时 tabstop 未修改:tabstop=8
- 第一次点击 Tab,输入 4 个空格
- 第二次点击 Tab,将上次输入的空格,一并转为 Tab
- 第一次点击 Backspace,删除 Tab,留下 4 个空格
- 第二次点击 Backspace,删除剩下 4 个空格
At
当 softtabstop < tabstop,第一次按Tab,会插入 softtabstop 选项值相同数量的空格,当插入的空格个数达到 tabstop 指定的宽度时,会将这些空格转换成一个 Tab。
Backspace同上
softtabstop=4 tabstop=4
# 不建议 (其他软件上查看文件可能会出现排版异常)
set softtabstop=4
set tabstop=4
点击Tab,插入一个 Tab,不在插入空格
expandtab
set expandtab
- 设置后,会将一个 Tab 替换成 tabstop 选项值相同数量的空格
- 比如:tabstop=8,点击Tab,插入 8 个空格
At
expandtab 只改变新插入的 Tab
不改变文件已有的 Tab
参考链接:
https://www.jianshu.com/p/a5925aed4373
https://segmentfault.com/a/1190000021133524
C文件 vim配置
在命令模式
下逐个配置,或~/.vimrc
配置文件
# 指定文件内容
set filetype=c
# 开启行号
set number
# 缩写
set nu
# 设置自动缩进
set shiftwidth=4
# 缩写
set ts=4
# 设置缩进展示的宽度
set tabstop=4
# tab转空格
set expandtab