zl程序教程

您现在的位置是:首页 >  其他

当前栏目

VIM 设置缩进

2023-04-18 15:27:18 时间

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
  1. softtabstop=-1,即跟随 shiftwidth 设置
  2. 该配置统一了TabBackspace的行为,都是处理 4 个空格

demo

仅softtabstop=4
set softtabstop=4

此时 tabstop 未修改:tabstop=8

  1. 第一次点击 Tab,输入 4 个空格
  2. 第二次点击 Tab,将上次输入的空格,一并转为 Tab
  3. 第一次点击 Backspace,删除 Tab,留下 4 个空格
  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