Vim 中的 Tab 键与空格键相关配置项详解

Vim 中的 Tab 键与空格键相关配置项详解


文章目录

  • Vim 中的 Tab 键与空格键相关配置项详解
    • 0. 参考资料
    • 1. Tab 键与空格键的配置项
    • 2. 实例演示


0. 参考资料

  • Tabs and Spaces

1. Tab 键与空格键的配置项

Vim 针对空格提供了细粒度的配置项,一共有 4 项:

  • tabstop:指定一个 tab 字符的宽度,缩写为 ts
  • expandtab:激活该项会让空格代替 tab 字符,禁用该项需要使用 noexpandtab
  • softtabstop:指明用多少个空格来代替 tab 字符,缩写为 sts
  • shiftwidth:指明在普通模式下用缩进命令插入或删除的空格数量,缩写为 sw

2. 实例演示

默认设置

  • ts=8 sts=0 sw=8 noexpandtab
  • Vim 中默认设置用一个制表符 \t 来表示 tab 键,不使用空格替换
  • 插入模式中的退格键会删除制表符
  • 制表符的宽度为 8
  • 在普通模式下使用 < 或者 > 调整缩进时,相当于删除和增加制表符

ts=8 sts=0 sw=8 expandtab

  • 与默认设置的区别在于激活了 expandtab 选项
  • Vim 会用 8 个空格代替制表符
  • 插入模式中的退格键一次只会删除一个空格
  • 在普通模式下使用 < 或者 > 调整缩进时,一次性减少或添加 8 个空格

ts=8 sts=8 sw=8 expandtab

  • softtabstop 设置为 8,此时在插入模式中退格键可以一次性删除 8 个空格
  • 普通模式下的缩进行为与之前保持一致,因为没有修改 shiftwidth 选项
  • 一般情况下,softtabstop 需要与 shiftwidth 相等,这样在插入模式下使用 tab 和退格键时的行为就与在普通模式下使用 <> 调整缩进的行为一致了。

ts=8 sts=4 sw=4 expandtab

  • 激活了 expandtab 选项,所有插入的制表符都会用空格代替。
  • 插入模式下,由于 softtabstop 的设置,使用 tab 和退格键都是 4 个空格。
  • 同样,在普通模式下的缩进也是 4 个空格,这是由 shiftwidth 决定的。
  • 但是如果有现存的 \t 制表符,该符号会占据 8 个列宽。

ts=8 sts=4 sw=4 noexpandtab

  • 使用 noexpandtab 将不会用 tab 键代替空格。
  • softtabstop 设置为 4,它优先于 tabstop。所以在插入模式下我们键入 tab,首先将会输入 4 个空格,只有再按一次 tab,才会删除原先输入的 4 个空格,用一个占据 8 个列宽的制表符替换它。
  • 在普通模式下,由于 shiftwidth 设置为 4,所以使用缩进命令时的行为与插入模式中类似。

ts=4 sts=4 sw=4 noexpandtab

  • 减少 tabstop4,可以看到一个制表符占据 4 个列宽。
  • 在插入模式使用 tab 键和退格键、在普通模式使用缩进命令,都会对制表符进行操作。

同时设置 ts = sts = sw

  • 如果你不想让空格和制表符混在一起的话,需要保证 tabstop 等于 softtabstop
  • 如果你只想用空格而不是制表符的话,那么你需要让 softtabstop 等于 shiftwidth
  • 所以一般而言,同时设置这三个值,并让它们相等是比较好的做法。

完成于 2019.7.4

你可能感兴趣的:(先利其器)