読者です 読者をやめる 読者になる 読者になる

Oh! Can Not Diary

おきゃんなダイアリー

key-chord試行錯誤中

Emacs

最近、key-chordの設定にはまってます。
key-chordとはキー同時押しでコマンドを実行するelispで、頻繁に使うけど面倒なキーバインドのコマンドに割り当て直すといい感じです。

リージョン選択(松山智大)

ありえるえりあ
とかを参考にさせてもらって、半分以上コピペですが今の割り当て状況はこんな感じ。覚えてないのとか使ってないのも結構あるけど…

(key-chord-define-global "jk" 'view-mode)
(key-chord-define-global "dw" 'kill-word*)
(key-chord-define-global "yw" 'copy-word)
(key-chord-define-global "vw" 'mark-word*)
(key-chord-define-global "ds" 'kill-sexp*)
(key-chord-define-global "ys" 'copy-sexp)
(key-chord-define-global "vs" 'mark-sexp*)
(key-chord-define-global "dq" 'kill-string)
(key-chord-define-global "yq" 'copy-string)
(key-chord-define-global "vq" 'mark-string)
(key-chord-define-global "dl" 'kill-up-list)
(key-chord-define-global "yl" 'copy-up-list)
(key-chord-define-global "vl" 'mark-up-list)
(key-chord-define-global "nm" 'copy-line)
(key-chord-define-global "nj" 'kill-line)
(key-chord-define-global "lm" 'mark-line)
(key-chord-define-global ",."     "<>\C-b")
(key-chord-define-global "[]"     "{}\C-b")
(key-chord-define-global "89"     "()\C-b")
(key-chord-define-global "w2"     "\"\"\C-b")
;; (key-chord-define-global "00" 'delete-window)
;; (key-chord-define-global "11" 'delete-other-windows)
;; (key-chord-define-global "22" 'split-window-vertically)
;; (key-chord-define-global "33" 'split-window-horizontally)
(key-chord-define-global "mk" 'kill-buffer)
(key-chord-define-global "ql" 'windmove-right)
(key-chord-define-global "qh" 'windmove-left)
(key-chord-define-global "qj" 'windmove-down)
(key-chord-define-global "qk" 'windmove-up)

上のリンク先を読んでもらえるとわかりますが、kill-word*からmark-up-listのコマンドはthing-opt.elのインストールが必要です。
"00"や"11"は誤爆の危険性が高いので保留。なにかいいのないかなー。
あとcopy-lineだと改行が入るから、これもそのうち変更したい。vimの行コピーって改行はどうなっているんでしょう。
<>や""といったカッコ系はカーソルも戻してるので便利です。「対応するカッコ自動で挿入してたらいらないよね?」と言われたらそれまでなんですけど。。

まぁこんな素敵なkey-chordですが、設定しまくっている人が少ないのか、探し方が悪いのか、ネットで設定があんまり公開されていないのが残念です。紹介記事は多いのですが。ということで、みんなもっと公開してほしいなという話でした。