作者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