Re: [新手] tab的問題

看板Editor (編輯器(vim/emacs))作者 (c9s)時間15年前 (2010/02/05 23:09), 編輯推噓6(601)
留言7則, 6人參與, 最新討論串4/5 (看更多)
基本上可以使用 set shiftwidth=4 來設定 tab 寬。 而使用 set expandtab 來將 tab 轉成 space (實際存起來的檔案將會是以 space , not tab ) 如果要將既有的 <Tab> 轉成 space 可以再 expandtab 之後輸入: :retab! 來做轉換。 而 tabstop 是實際上讀到檔案的 \t (Tab 字元) 時,要解譯為幾個空白 通常設定為 4 set tabstop=4 另外 softtabstop 則是,你在編輯動作 (Backspace) 或是 (Tab) 時,對空白的解譯 譬如說: set noexpandtab set sw=4 set tabstop=4 set softtabstop=4 新加入的 Tab 都會是 \t , Tab 為 4 個 space ,讀取檔案的 \t 會被顯示為 4 個 space ,在操作 BS 的時候,4 個顯示的空白會被當作一個 tab 刪除。 實際上 softabstop 比較常用在 expandtab 的模式下: set expandtab set sw=4 set tabstop=4 " 怕檔案裡頭仍有 \t set softtabstop=4 如此被延展為空白的 space 也可以像是 tab 一樣被刪除固定的 space 數 (softtabstop=4) 附帶一題,由於 tab 每個人的用法都不一樣,而且變化很多 所以現在很多專案都只使用 space 而不使用 tab 了! 也就是: set et sw=4 ts=4 sts=4 設定是被建議的。 當然如果你寫 python 就不一樣。 :p 這邊順便引入 vim help 的 'tabstop' 章節: There are four main ways to use tabs in Vim: 1. Always keep 'tabstop' at 8, set 'softtabstop' and 'shiftwidth' to 4 (or 3 or whatever you prefer) and use 'noexpandtab'. Then Vim will use a mix of tabs and spaces, but typing <Tab> and <BS> will behave like a tab appears every 4 (or 3) characters. 2. Set 'tabstop' and 'shiftwidth' to whatever you prefer and use 'expandtab'. This way you will always insert spaces. The formatting will never be messed up when 'tabstop' is changed. 3. Set 'tabstop' and 'shiftwidth' to whatever you prefer and use a |modeline| to set these values when editing the file again. Only works when using Vim to edit the file. 4. Always set 'tabstop' and 'shiftwidth' to the same value, and 'noexpandtab'. This should then work (for initial indents only) for any tabstop setting that people use. It might be nice to have tabs after the first non-blank inserted as spaces if you do this though. Otherwise aligned comments will be wrong when 'tabstop' is changed. ※ 引述《shanmi (4/27視小中友之夜)》之銘言: : 我在寫fortran77 : 所以常常需要空個字元 : 我都按tab : 我用geditor 發現他可以設定tab=空幾格 : 所以是不是各家編輯器對tab的設定不同? : 或者等到程式compile時也會把一個tab讀成不同的空格數? : 這樣似乎要小心使用tab了 : 小弟剛開始寫程式 : 感謝各位 -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 113.61.198.68 ※ 編輯: kornelius 來自: 113.61.198.68 (02/05 23:10) ※ 編輯: kornelius 來自: 113.61.198.68 (02/05 23:12)

02/05 23:18, , 1F
補個小技巧,設了expandtab後,想插入tab時,在insert mode
02/05 23:18, 1F

02/05 23:19, , 2F
下,先按ctrl+v 再輸入tab就是真的tab了
02/05 23:19, 2F
※ 編輯: kornelius 來自: 113.61.198.68 (02/05 23:35)

02/08 16:42, , 3F
太感謝了! 請問set shiftwidth是vi的指令嗎?
02/08 16:42, 3F

02/09 01:53, , 4F
是的
02/09 01:53, 4F

02/09 22:39, , 5F
強! 受益良多~
02/09 22:39, 5F

03/25 10:30, , 6F
推!!
03/25 10:30, 6F

08/09 18:40, , 7F
推!!
08/09 18:40, 7F
文章代碼(AID): #1BR3IzuT (Editor)
討論串 (同標題文章)
本文引述了以下文章的的內容:
5
11
以下文章回應了本文
完整討論串 (本文為第 4 之 5 篇):
5
11
文章代碼(AID): #1BR3IzuT (Editor)