はじめに
みなさん、Eclipseは好きですか?
世間ではIntelliJ IDEAの利用拡大が著しいですが、私はEclipseも大好きです!
さてそんな私ですが最近はSublime Textを用いてコーディングをすることが増えてきています。
しかしキー操作がSublime TextとEclipseの間で上手く頭を切り分けられず、SublimeTextなのにEclipseのショートカットキーを使ってしまって上手く動かない、なんて問題も多く起こっています。
エディタを複数用いる時に発生する悩みの一つかと思いますし、みなさんも困っていませんか?
その解決案として、わたしはSublime TextのキーバインドをEclipse風に変更して利用しています。
そうしたSublime TextのキーバインドをEclipse風のショートカットキーに変更する定義を調査して、ナレッジが溜まってきたので共有します。
環境
Sublime Text3 - Build 3083
(おそらく2系でも動くと思いますが、未検証です)
キーバインドの設定方法
SublimeTextにおけるキーバインドの設定ファイルは、メニューの以下のところを押下すると開くことができます。
- Perferences -> Key Bindings - User
- 基本設定 -> キーバインド - ユーザ
ショートカットキー設定ファイル
- オリジナルはこちらで管理していますので、ぜひ参考にして下さい。
どの設定がどのショートカットに紐づくかはコメントに細かく記載したので、そちらをご参照ください。
- SublimeTextのショートカットに元から存在するキーバインドと重複している場合は、shiftを付きで新たに設定しています。
そのため他の人がカスタマイズしたSublimeTextに触る場合も、違和感なく使えるよう工夫しています!
※それらは、「eclipseにはない」のコメントを必ずつけて区別できるようにしています。
[
// --------------------------------------------------------------------
// Eclipse化キーバインド
// ---------------------------------------------------------------------
// alt+左で戻る
{ "keys": ["alt+left"], "command": "jump_back" }
// alt+右で戻ったのをまた進める
,{ "keys": ["alt+right"], "command": "jump_forward" }
// 行削除
,{ "keys": ["ctrl+d"], "command": "run_macro_file", "args": {"file": "Packages/Default/Delete Line.sublime-macro"} }
// 行番号選択
,{ "keys": ["ctrl+l"], "command": "show_overlay", "args": {"overlay": "goto", "text": ":"} }
// 名前の変更(厳密には選択範囲と同一の文字列を全て選択)
,{ "keys": ["shift+alt+r"], "command": "find_all_under" }
// 選択中単語の次を検索
,{ "keys": ["ctrl+k"], "command": "find_under" }
,{ "keys": ["ctrl+shift+k"], "command": "find_under_prev" }
// 行の入れ替え
,{ "keys": ["alt+up"], "command": "swap_line_up" }
,{ "keys": ["alt+down"], "command": "swap_line_down" }
// 下行と文字を連結させる
,{ "keys": ["ctrl+alt+j"], "command": "join_lines" }
// 行複製
,{ "keys": ["ctrl+alt+down"], "command": "duplicate_line" }
,{ "keys": ["ctrl+alt+up"], "command": "duplicate_line" }
// リソース検索
,{ "keys": ["shift+ctrl+r"], "command": "show_overlay", "args": {"overlay": "goto", "show_files": true} }
// 大文字 <-> 小文字変換
,{ "keys": ["shift+ctrl+y"], "command": "lower_case" }
,{ "keys": ["shift+ctrl+x"], "command": "upper_case" }
// インデント揃え
,{ "keys": ["ctrl+shift+f"], "command": "reindent" , "args": {"single_line": false}}
// コメントアウトの切り替え(Eclipseにもあるコメントアウトするctrl+/, ctrl+shitt+/ は標準ショートカット)
,{ "keys": ["ctrl+shift+c"], "command": "toggle_comment", "args": { "block": false } }
// クイック・アウトライン
,{ "keys": ["ctrl+o"], "command": "show_overlay", "args": {"overlay": "goto", "text": "@"} }
// 全て保存する
,{ "keys": ["ctrl+shift+s"], "command": "save_all" }
// すべて閉じる
,{ "keys": ["shift+ctrl+f4"], "command": "close_all" }
,{ "keys": ["shift+ctrl+w"], "command": "close_all" }
// F3で関数の宣言元にジャンプ
,{ "keys": ["f3"], "command": "goto_definition" }
// リフレッシュ(sublimeは基本オートリロード)
,{"keys": ["f5"], "command": "revert"}
// 実行(ビルド)
,{ "keys": ["ctrl+f11"], "command": "build" }
// ---------------------Sublime Text3 Orifinal Shortcut Key の割当て ---------------------------
// ※元のショートカットが強力なものがある場合は、shiftをつける、またはaltを外して利用できるようにキーバインド新たに設定
// ---------
// Eclipseのショートカットではない(ctrl+dを行削除に設定したので、デフォルトにあった選択範囲の文字列をスタック選択)
,{ "keys": ["shift+alt+d"], "command": "find_under_expand" }
// Eclipseのショートカットではない(ctrl+oをクイック・アウトラインを設定したので、デフォルトにあったファイルを開く)
,{ "keys": ["ctrl+shift+o"], "command": "prompt_open_file" }
// Eclipseのショートカットではない(ctrl+alt+up,ctrl+alt+downに行複製を設定したので、デフォルトにあった矩形選択)
,{ "keys": ["ctrl+up"], "command": "select_lines", "args": {"forward": false} }
,{ "keys": ["ctrl+down"], "command": "select_lines", "args": {"forward": true} }
// -----------------------------------packageで補ったところ-----------------------------------
// [ctrl+q] https://github.com/khrizt/GotoLastEdit
]
その他のおすすめキーバインド
- Eclipseと直接関係無いですが、その他私のおすすめキーバインドです。
- 下記も同ファイルに追記すると複数ファイルを編集する時や、外部ディスプレイなどを利用している場合に効果を発揮します!
// タブ移動を横方向に移動
,{ "keys": ["ctrl+tab"], "command": "next_view" }
,{ "keys": ["ctrl+shift+tab"], "command": "prev_view" }
// 開いているファイルのディレクトリをエクスプローラで開く
,{ "keys": ["ctrl+e"], "command": "open_dir"
, "args": {
"dir": "$file_path", "file": "$file_name"
}
}
// ショートカット一覧を表示(実質はこのファイルを表示する)…ちょっと無理やり
,{ "keys": ["ctrl+shift+l"], "command": "open_file"
,"args":
{
"file": "${packages}/User/Default ($platform).sublime-keymap",
"contents": "[\n\t$0\n]\n"
}
}
// ディスプレイ3分割
,{
"keys": ["alt+shift+6"], //ショートカットキー
"command": "set_layout", //コマンド
"args":
{
"rows": [0.0, 0.5, 1.0], //列方向の分割位置
"cols": [0.0, 0.5, 1.0], //行方向の分割位置
"cells": [[0,0,1,2], [1,0,2,1], [1,1,2,2]] //画面の構成
}
}
,{
"keys": ["alt+shift+7"], //ショートカットキー
"command": "set_layout", //コマンド
"args":
{
"rows": [0.0, 0.5, 1.0], //列方向の分割位置
"cols": [0.0, 0.5, 1.0], //行方向の分割位置
"cells": [[0,0,1,2], [1,0,2,1], [1,1,2,2]] //画面の構成
}
}
参考
- 【本家サイト】 Sublime Text 3 - Refelence / Key Bindings
- 【Qiita記事】 sublime text3でeclipseのF3のような関数ジャンプキーバインドを設定する
- 【Qiita記事】SublimeText2のキーバインドを、ちょっと突っ込んで解説
- 【Git】Custom & Eclipse shortcuts key bindings (keyboard mapping) for Sublime Text 2 and 3
- 【Sublime Text3 Package】Sublime GotoLastEdit
まとめ
- Eclipseで習得したショートカットスキル資産をSublimeTextに転用することで仕事を捗らせる!
- SublimeTextに元からあるショートカットは尊重して残す工夫
- その他キーバインドもおススメです!