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

相關文章
相關標籤/搜索