[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:

1
:set expandtab

控制插入 Tab 時所需要的空白鍵(Tab)字元數,例如用4個空白鍵取代 Tab:

1
:set tabstop=4

在我們設定完 expandtab 之後,所有的 Tab 鍵將會被 Space 所取代,但是原本在檔案文件中的 Tab 將不會改變,為了取代原有的 Tab 到新的設定,我們必須鍵入:

1
:retab

針對程式縮排所需要的 Space 個數,我們可以使用 shiftwidth 選項

1
:set shiftwidth=4

底下舉個例子:

  • 將文件中 Tab 取代成 Space
  • 所有 Tab 用4個 Space 取代
1
2
3
:set tabstop=4
:set shiftwidth=4
:set expandtab

Pspad 設定

Settings -> Programing Settings -> Editor (Part 2)

設定:

1
2
Tab Width:4
Indent Width:4

請勿勾選 Real Tab,如果要把既有的 Tab 轉換成 Space,可以使用:

編輯特殊轉換將 Tab 轉成空白 Edit->Special conversion->Convert Tabs to Spaces

Pspad

針對 Makefile 需要使用 Tab,我們必須在 .vimrc 裡面在加入底下:

1
autocmd FileType make setlocal noexpandtab

參考文章

Vim 

See also