この投稿はSublime Textのadvent calendar企画である「おれのさぶらいむてきすと Advent Calendar 2013」の21日目の投稿として記述したものです。
昨日はfukayatsuさんでした。
今回は私の数少ないカスタマイズの一つであるキーバインドについて、それも私は元々へたれEmacserだったのでEmacs風のキーバインドを実現してくれる sublemacspro について書きたいと思います。
…と考えていたのですが、残念なことにググってみるとすでにsublemacsproのキーバインドについて調べてくださった記事がいくつか存在するようです。
ということで、今回はsublemacsproについてのちょっとしたTIPSを書いてお茶を濁したいと思います(´・ω・`)
#kill-ringに保存できるテキストの数の変更
sublemacsproではctrl+shift+y
のyank_choice
で一度でもコピーしたことのあるテキストをkill-ringに保存して、以後必要に応じて引き出すことができます。このkill-ringに保存できるテキストの数は16で一定、つまり16個を超えてkillした場合、最初のほうにkillしたテキストは選択できなくなります。このkill-ringの数、もうちょっと増やしたいなという時がありませんか?そんな時は、sublemacsproのパッケージフォルダの中にある sbp_kill_ring.py をいじることでその数を増やすことできます。
変えるのは sbp_kill_ring.py の50行目、以下の記述。
self.limit = 16
このself.limit
に割り当てられる数字を変更することでkill_ringに保存できるテキストの数も変更することができます。
特にsublemacsproのyank_choice
はquick panel(GotoAnythingなどに使われる検索パネル)使って行われるので検索性も良く、50や100に変更してもそこまで扱いが難しいということはならないかと思います。
#ctrl+gの優先順位
sublemacsproではいろんなパネルを消したり、はたまたキャレットをマルチからシングルに戻すといった機能がctrl+g
に割り当てられています。「デフォルトの状態に戻したい!」、そんなときはEmacsと同じようにctrl+g
を連打すれば安心ですね。
しかしデフォルトの設定ではctrl+space
でセットしたマークやquick panelを消したいのに先にoutput panelが消えて困るといったような状況もあるかと思います。
このctrl+g
で何かを消すという機能、実は優先順位をつけることができます。優先順位のつけ方はいたって簡単。キーバインドの設定を最後に消したい項目から順に並べてやるだけです。例として自分のキーバインド設定を示すと以下のような感じです。
{
"keys": ["ctrl+g"], "command": "hide_panel",
"context":
[
{ "key": "panel_visible", "operator": "equal", "operand": true }
]
},
{
"keys": ["ctrl+g"], "command": "hide_auto_complete",
"context":
[
{ "key": "auto_complete_visible","operator": "equal","operand": true }
]
},
{
"keys": ["ctrl+g"], "command": "sbp_cancel_mark",
"context":
[
{ "key": "sbp_emacs_has_mark","operator": "equal","operand": true }
]
},
{
"keys": ["ctrl+g"], "command": "single_selection", "context":
[
{ "key": "num_selections", "operator": "not_equal", "operand": 1 }
]
},
{
"keys": ["ctrl+g"], "command": "hide_overlay",
"context":
[
{ "key": "overlay_visible", "operator": "equal", "operand": true }
]
},
command:
の次に書かれているのが何を消すかを指定しているコマンド名になっていて、それぞれ
-
hide_panel
: output panelなどのパネルを消す -
hide_auto_complete
: オートコンプリートの表示を消す -
cancel_sbp_mark
: セットしたマークを消す -
single_selection
: キャレットを一つに戻す(マルチカーソルを消す) -
hide_overlay
: quick panelを消す
という機能が割り当てられています。
自分の設定では、実際にctrl+g
を使用するとこの並びの下から順に表示が消えていく、つまり quick panel > マルチカーソル > マーク > オートコンプリート > パネル の順に消えていきます。
このような設定にすることでコンパイルのエラー結果などを見ながらquick panelを出したり消したり、マークのキャンセルなどもできるようになります。
(sublimecsproではsnippetのキャンセルもctrl+g
に割り当てられていますが、自分はsnippetをあまり使わないのでここでは設定していません。)
以上、sublemacsproのTIPSでした。
Emacsそのものが高機能なエディタですから、Sublime Textに移行した方なんてそんなにいるのかしら、と思いつつ書いてみましたがどうなんでしょうか。そして、たぶんこれで私のadvent calendarの担当日は最後だと思います。
明日の担当はDAIさんです。よろしくお願いします。
少し早いですが、皆様、よいお年をお過ごしくださいませ(´・ω・`)ノシ