Edited at

sublime text3でeclipseのF3のような関数ジャンプキーバインドを設定する

More than 5 years have passed since last update.

sublime text3でPHPの開発をしているのですが、

eclipseやnet beansにあったF3やctrl+左クリックで関数の宣言元にジャンプできる機能がないかなと思って

色々と探してみたらできたのでメモしておきます。

sublime text3からの新機能であるgoto_definitionというコマンドを設定すればよい模様。

デフォルトではF12に設定されていて、プロジェクト内検索しか対応していないようですが、使えそうです。

メニューの Preferences > KeyBindings User を開いて以下を追記。

// F3で関数の宣言元にジャンプ

{ "keys": ["f3"], "command": "goto_definition" },
// alt+左で戻る
{ "keys": ["alt+left"], "command": "jump_back" },
// alt+右で戻ったのをまた進める
{ "keys": ["alt+right"], "command": "jump_forward" },

再起動せずに即時反映されます。


ctrlを押しながら関数名をマウスクリックする時もF3と同じ動きをさせたい

マウスのキーバインドはメニューから設定ファイルを開くようになっていないっぽいので悩んだのですが

偉大なるstackoverflowに同じような投稿があったので参考にしました。


参考

Sublime 3 - Set Key map for function Goto Definition


Preferences > Browse Packagesで設定ファイルが入っているディレクトリを開いて

更にUserディレクトリの中にDefault (Windows).sublime-mousemapというファイルを作成し、

中に以下の設定を書くと反映されました。

[

{
"button": "button1",
"count": 1,
"modifiers": ["ctrl"],
"press_command": "drag_select",
"command": "goto_definition"
},
]

macだとDefault (OSX).sublime-mousemap

linuxだとDefault (Linux).sublime-mousemapというファイル名になるようです(未確認)

また、ctrl+clickにすると、sublime textの魅力の一つであるカーソルを複数置く機能とかぶってしまうので

自分は"modifiers": ["ctrl"],の部分を"modifiers": ["ctrl", "shift"],として

ctrl+shift+clickでジャンプするように設定しました。


ついでに

他に設定しているeclipse風ショートカットは以下

Preferences > KeyBindings Userに追記

// 上の行と入れ替える

{ "keys": ["alt+up"], "command": "swap_line_up" },
// 下の行と入れ替える
{ "keys": ["alt+down"], "command": "swap_line_down" },
// 行複製 (windowsだとwindows側のグラフィックオプションのホットキーを無効にしないと画面が回転します)
{ "keys": ["ctrl+alt+down"], "command": "duplicate_line" },
// ファイル検索&置換
{ "keys": ["ctrl+h"], "command": "show_panel", "args": {"panel": "find_in_files"} },
// 行削除
{ "keys": ["ctrl+d"], "command": "run_macro_file", "args": {"file": "Packages/Default/Delete Line.sublime-macro"} },

// ctrl+dを行削除に設定したので、デフォルトにあった文字列選択はctrl+shift+dに設定
{ "keys": ["ctrl+shift+d"], "command": "find_under_expand" },

ctrl+マウススクロールでフォントサイズが変更されるのが面倒だったのでその機能を切る

Default (Windows).sublime-mousemap内に追記

{ "button": "scroll_down", "modifiers": ["ctrl"], "command": "null" },

{ "button": "scroll_up", "modifiers": ["ctrl"], "command": "null" },


参考

SublimeText2でマウスでの動作の設定を変更する