2012年3月11日 星期日

在Emacs裡統計中文字數

 2014/1/18更新:這篇的方法計算速度太慢且設定太麻煩了,請移駕至新站看用elisp寫的新版本。

http://kuanyui.github.io/2014/01/18/count-chinese-japanese-and-english-words-in-emacs/



這個寒假學了一點Emacs,嗯...在想要不要用習慣後再來"雙主修"vi,然後開evil-mode來保護小拇指...

總之,統計中文字數的主要目的是拿來應付學校報告。網路上找老半天沒看到在Emacs裡統計中文字數的方法,乾脆動手搞一個。於是拜託朋友Timothy Lin ( http://timothylin1.blogspot.com/ ) 寫了一個計算字數的Shell Script,然後把它整合到

這方法是調用外部程式來算,把Emacs的內容pipe出去,中英文分別算完後加在一起。


1.把下列shell script存成word-count-for-emacs丟到任一目錄(此處假設為~/Dropbox/scripts)在該目錄下chmod +x ./word-count-for-emacs

2.編輯~/.emacs,加上下列:

;;執行Shell外部程式的搜尋路徑(意同$PATH)
;;如出錯或找不到路徑的話,請自行改成絕對路徑
(setq exec-path (append exec-path '("~/Dropbox/scripts/")))
(setenv "PATH" (concat (getenv "PATH") ":~/Dropbox/scripts/"))

;;調用word-count-for-emacs來計算字數 (能正確計算中英文夾雜文件的字數)
(global-set-key (kbd "C-c w c") 'word-count)
(defun word-count nil "Count words in buffer (include CJK characters)" (interactive)
(shell-command-on-region (point-min) (point-max) "word-count-for-emacs"))
3.存檔收工。

順利的話以後直接按C-c w c就會顯示字數。此方法在Mint12+Emacs23上測試過。

(已解決-20120315)
目前還有一些bug,像是org-mode會大量使用到的*星號也會被算進字數這點不知該如何處理...歡迎強者指點。

0 個回應: