文字数をカウントする
M-x count-matches
とかで。実行すると、"How many matches for"とか出るので、そこにカウントしたい文字を入れることで、その文字数をカウントできる。ここでは正規表現が使用できるので、例えば、すべての文字数をカウントしたければ
How many matches for : .
とかすればカウントする。(改行文字はカウントしないよ。)結果はしたのステータスバーの所にでる。
■同でも良い感想
xyzzyって大抵のことは出来るんだけど、それがどうやったら出来るかはかなり分かり難い。xyzzyを眺めているだけでは見つからないし付属のlispを読めば少しは分かるけど、それはそれなりに面倒だ。xyzzyのWikiかMLを調べれは殆どは分かるはずだけど、其れに気づいて検索できる人が、そんなに多くはないような気がする。普通にやりそうだけど、少し変わっている要望を実現するには、他の一般的なWindowsエディタよりかなり面倒かもしれない。
■以下分かる人向けの2016年になって今頃追記
実はいくつも文字数を数えるlispがあるので、.xyzzyの使い方に慣れているなら適当に追加してキー割り当てを設定すればボタン一発で様々な文字の数え方が出来る。lispが分かるなら自分流の文字の数え方も設定できる。
キャレットの位置がどこにあってもバッファ全体の文字数を数える
(defun count-buffer-char() (interactive) (save-excursion (goto-char (point-min)) (count-matches ".")))
セレクションがあればセレクション内の、なければバッファ全体の改行以外の文字数をカウントする。
(defun count-buffer-char () (interactive) (if (get-selection-type) ;selection があれば narrowing して実行 (selection-start-end (start end) (narrow-to-region start end) (goto-char (point-min)) (count-matches ".") (selection-end-of-buffer) (widen)) ;selection がなければそのまま実行 (save-excursion (goto-char (point-min)) (count-matches "."))))
カーソル位置からバッファ末尾までの文字数と段落数を数える。
(defun count-char-from-point () (interactive) (save-excursion (let ((p1 (point)) (p2 (point-max))) (setq parcnt (- (progn (goto-char p2) (current-line-number)) (progn (goto-char p1) (current-line-number)))) (message "~d paragraphs, ~d characters." parcnt (- p2 p1 parcnt)))))
参考:http://hie.s64.xrea.com/xyzzy/note/misc.html
選択した文字数をステータスバーに表示する
;選択した文字数をステータスバーに表示 (add-hook '*post-command-hook* #'(lambda () (when (eql (get-selection-type) 2) (message "Selected chars: ~D" (- (abs (- (selection-point) (selection-mark))) (abs (- (save-excursion (goto-char (selection-point)) (current-line-number)) (save-excursion (goto-char (selection-mark)) (current-line-number)))))))))