[Vim] 將 Tab 轉換成 Space

Update 2010.08.28: Pspad 轉換既有 Tabs to Spaces by bootleq vim_header 為了統一 Windows 跟 Linux 底下的編輯器在使用 Tab 功能相同,所以調整了 VimPspad(我常用編輯器)的設定,底下是針對 Vim 及 Pspad 的解決方法。首先當大家使用 Vim 編輯器撰寫程式,常常會使用 Tab 來縮排程式碼,我們可以使用 expandtab 來插入空白鍵(Space)取代 Tab:
:set expandtab
控制插入 Tab 時所需要的空白鍵(Tab)字元數,例如用4個空白鍵取代 Tab:
:set tabstop=4
在我們設定完 expandtab 之後,所有的 Tab 鍵將會被 Space 所取代,但是原本在檔案文件中的 Tab 將不會改變,為了取代原有的 Tab 到新的設定,我們必須鍵入:
:retab
針對程式縮排所需要的 Space 個數,我們可以使用 shiftwidth 選項
:set shiftwidth=4
底下舉個例子:
  • 將文件中 Tab 取代成 Space
  • 所有 Tab 用4個 Space 取代
:set tabstop=4
:set shiftwidth=4
:set expandtab

Pspad 設定

Settings -> Programing Settings -> Editor (Part 2) 設定: Tab Width:4 Indent Width:4 請勿勾選 Real Tab 如果要把既有的 Tab 轉換成 Space,可以使用: 編輯特殊轉換將 Tab 轉成空白 Edit->Special conversion->Convert Tabs to Spaces Pspad 針對 Makefile 需要使用 Tab,我們必須在 .vimrc 裡面在加入底下:
autocmd FileType make setlocal noexpandtab
Ref: Converting tabs to spaces
  • 1. 我設了 expandtab,但 Makefile 似乎仍會自動設為 noexpantab。可以在編輯時下 :verbose set expandtab? 確認。

    2. 補充 PSPad 轉換既有 tab 的功能在「編輯→特殊轉換→將 Tab 轉成空白」

  • N.C

    感謝您分享這個小技巧
    有用到有推
    (從ppt@editor連過來的)

  • Pingback: [Linux] Vi and Vim tab function and width setting | SoftBlog()