[vim ] 用 Vim 將不斷行文章轉為 BBS 格式

看板Editor (編輯器(vim/emacs))作者 (征服世界中)時間12年前 (2012/04/19 21:28), 編輯推噓4(406)
留言10則, 4人參與, 最新討論串1/1
網頁版本:http://goo.gl/cS6mC ---- 我是一個鄉民。雖然大多數時間都在潛水,但偶爾也會浮上來寫些東西。 ![ugly format in bbs](/images/2012/2012-04-19-ugly-format-in-bbs.png) 我不常在 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

04/20 17:42, , 1F
推一下,之前才為了不能自動斷行中文字覺得很煩,不過可惜我
04/20 17:42, 1F

04/20 17:43, , 2F
也有找出來了 XD,另外就是這個方法好像無法避頭點,從原PO的
04/20 17:43, 2F

04/20 17:43, , 3F
文章來看的話。
04/20 17:43, 3F

04/20 17:45, , 4F
還有,似乎 fo+=B 會比 M 要好點(看他的描述的話)
04/20 17:45, 4F

04/21 04:04, , 5F
避頭點是指「行首標點迴避」嗎?這個 Vim 可能就沒辦法了
04/21 04:04, 5F

04/21 04:04, , 6F
再不就是專門寫個Vim Script來處理,不過光想就好累...XD
04/21 04:04, 6F

04/21 04:18, , 7F
另外我試了一下,確實如你所說是選項B比M來得好
04/21 04:18, 7F

04/21 16:07, , 8F
是啊,目前我也想不到方法來解決這問題。
04/21 16:07, 8F

04/22 00:54, , 9F
用 fo+=a 就不用重排了。不管加字刪字都會自動排列。
04/22 00:54, 9F

04/28 01:07, , 10F
感恩,以前查到的方法得寫繁瑣的script,這個簡潔多了
04/28 01:07, 10F
文章代碼(AID): #1Fa1BqRG (Editor)
文章代碼(AID): #1Fa1BqRG (Editor)