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に同じような投稿があったので参考にしました。
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" },