作者yuxio (征服世界中)
看板Editor
標題[vim ] 用 Vim 將不斷行文章轉為 BBS 格式
時間Thu Apr 19 21:28:16 2012
網頁版本:
http://goo.gl/cS6mC
----
我是一個鄉民。雖然大多數時間都在潛水,但偶爾也會浮上來寫些東西。

我不常在 BBS 上直接編輯,多半都是在習慣的編輯器上寫好再貼過去。不過問題
來了,我寫文章的習慣都是一直打字一直打字,直到段落結束才換行,這樣的文字
如果複製起來直接貼到 BBS 上發表,雖然還是能夠正常顯示,但在編輯與回文時
就會出現過長的文字而造成如上圖般糟糕的版面效果。
所以我在把文章貼到 BBS 上前,會先進行排版,將每行的字數限制在 72 字元以
下。一開始我還乖乖手動一行一行按 Enter,可是這勤勞樸實的作風太不符合以
Lazy Easy 為最高指導原則的程式設計師身分了。經過一番研究後,我用 Vim 來
做為我文章自動排版的工具。
要完成任務,首先得在 `.vimrc` 檔案裡加入以下設定:
set fo+=Mm set tw=72
說明一下,`tw` 是 `textwidth`,這邊的意思是每行長度為 72,你可以依個人喜
好調整數值。而 `fo` 則是 `formatoptions` 的縮寫,其中的 Mm 都是與
Multibyte 相關的選項。沒加的話,預設是會採用英文規則,也就把空白當做字的
間隔,因此一連串中文文字不會被斷開,那就達不到自動斷行的效果了。
接著,為了讓事情更方便些,可以加入以下的按鍵映射:
noremap <silent> <F7> gggqG
我把 <F7> 按鈕對應到 `gggqG`,這串指令可以分成三個部分:`gg`, `gq`, `G`
。
- `gg`: 將游標移至檔案最前頭
- `gq`:從游標開始處進行格式重排
- `G`:將游標移至檔案最尾端
所以以後只要在 Vim 寫好文章,或是把寫好的文字貼到 Vim 上,再按下 <F7>,
就可以立刻排成 BBS 所需要的格式囉。
只剩下一個問題......如果文章中有太長的連結,要是能自動縮網址那就更完美了
。
--
[雜想筆記]
不足稱博,故曰其雜
http://tzengyuxio.me
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 112.104.53.35
1F:推 mjsg:推一下,之前才為了不能自動斷行中文字覺得很煩,不過可惜我 04/20 17:42
2F:→ mjsg:也有找出來了 XD,另外就是這個方法好像無法避頭點,從原PO的 04/20 17:43
3F:→ mjsg:文章來看的話。 04/20 17:43
4F:→ mjsg:還有,似乎 fo+=B 會比 M 要好點(看他的描述的話) 04/20 17:45
5F:→ yuxio:避頭點是指「行首標點迴避」嗎?這個 Vim 可能就沒辦法了 04/21 04:04
6F:→ yuxio:再不就是專門寫個Vim Script來處理,不過光想就好累...XD 04/21 04:04
7F:→ yuxio:另外我試了一下,確實如你所說是選項B比M來得好 04/21 04:18
8F:推 mjsg:是啊,目前我也想不到方法來解決這問題。 04/21 16:07
9F:推 oversky0:用 fo+=a 就不用重排了。不管加字刪字都會自動排列。 04/22 00:54
10F:推 fengchu:感恩,以前查到的方法得寫繁瑣的script,這個簡潔多了 04/28 01:07