vim 簡繁互轉

有聽過 vim 嗎?

vim 就像 windows 下的筆記本那樣,是一個文字編輯器。(雖然她的操作方式有點傲嬌)

我把 Vim 當作萬用編輯器來用,常常也會有想要簡繁互轉的時候,偏偏這麼常見的功能網路上竟然找不到。

到處亂查,也只能弄出這樣的答案:

本來是想透過新同文堂python專案來搞的,但是研究了半天,卻發現 vim 下只要把 unicode 字串塞進同文堂轉換器中就會報錯。(在 python shell 下卻沒問題,無法理解)

……反正同文堂方案這邊用不上就對了。

換了些想法,寫了下面的東西,總算把功能搗出來了。想用的人把它貼進 vimrc 裡面:

"===簡繁互轉===
":T2S轉簡體,:S2T轉繁體
command! T2S call T2S()
command! S2T call S2T()
fun T2S()
let winview = winsaveview()
let lnum = 0
for line in getline(1,'$')
let lnum = lnum + 1
call setline(lnum,iconv(iconv(iconv(line,"utf-8","big5"),"big5","gb2312"),"gb2312","utf-8"))
endfor
call winrestview(winview)
endfun
fun S2T()
let winview = winsaveview()
let lnum = 0
for line in getline(1,'$')
let lnum = lnum + 1
call setline(lnum,iconv(iconv(iconv(line,"utf-8","gb2312"),"gb2312","big5"),"big5","utf-8"))
endfor
call winrestview(winview)
endfun

然後您就可以用 :T2S 繁轉簡,或 :S2T 簡轉繁了。

特性如下:

  • 針對緩衝區進行變更,而不是檔案。如果要更新檔案別忘記:w存檔
  • 當前緩衝區必須使用 utf-8 格式
  • 沒有用到任何外部程式,都是 vim 內建的功能,因此理論上是能跨平台的,但我畢竟沒有去windows玩過,誰不能用給我吱個聲。

小心:

  • 這只是單字轉換而已,並不包括詞轉換功能。
  • 極少數沒有對應的字會出現問號

圖個方便而已,將就用吧!

希望:

  • 能夠自動偵測當前檔案是 utf8 繁體還是 utf8 簡體,一個指令搞定而不要分成兩個。
  • 還有少數該死的問號也最好能消滅掉。

誰知道這些東西怎麼弄別忘記告訴我!