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

这是我参与8月更文挑战的第7天,活动详情查看:8月更文挑战vim


0. 参考资料


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

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

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

2. 实例演示

默认设置oop

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

ts=8 sts=0 sw=8 expandtabpost

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

ts=8 sts=8 sw=8 expandtabspa

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

ts=8 sts=4 sw=4 expandtabcode

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

ts=8 sts=4 sw=4 noexpandtaborm

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

ts=4 sts=4 sw=4 noexpandtabip

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

同时设置 ts = sts = swget

  • 若是你不想让空格和制表符混在一块儿的话,须要保证 tabstop 等于 softtabstop
  • 若是你只想用空格而不是制表符的话,那么你须要让 softtabstop 等于 shiftwidth
  • 因此通常而言,同时设置这三个值,并让它们相等是比较好的作法。

完成于 2019.7.4it

相关文章
相关标签/搜索