Open4

VSCodeで検索結果を前後するためのショートカットを作成する

haruyama480haruyama480

目的

  • デフォルトで F4, Shift+F4 でも移動できるのけど、別のctrl+⌘+n,pにバインドする
  • リファレンス(参照)検索ともバッティングしているので、通常検索→リファレンス検索みたいな優先度にしたい

結論

以下をkeybidings.jsonに足す。

    // start: ctrl+cmd+n,pで検索結果を移動する
    { // 優先度1
        "key": "ctrl+cmd+n",
        "command": "goToNextReference",
        "when": "inReferenceSearchEditor || referenceSearchVisible"
    },
    {
        "key": "ctrl+cmd+p",
        "command": "goToPreviousReference",
        "when": "inReferenceSearchEditor || referenceSearchVisible"
    },
    {
        "key": "f4",
        "command": "-goToNextReference",
        "when": "inReferenceSearchEditor || referenceSearchVisible"
    },
    {
        "key": "shift+f4",
        "command": "-goToPreviousReference",
        "when": "inReferenceSearchEditor || referenceSearchVisible"
    },
    { // 優先度2
        "key": "ctrl+cmd+n",
        "command": "search.action.focusNextSearchResult",
        "when": "(searchViewletVisible || inSearchEditor) && !(inReferenceSearchEditor || referenceSearchVisible)"
    },
    {
        "key": "ctrl+cmd+p",
        "command": "search.action.focusPreviousSearchResult",
        "when": "(searchViewletVisible || inSearchEditor) && !(inReferenceSearchEditor || referenceSearchVisible)"
    },
    {
        "key": "f4",
        "command": "-search.action.focusNextSearchResult",
        "when": "hasSearchResult || inSearchEditor"
    },
    {
        "key": "shift+f4",
        "command": "-search.action.focusPreviousSearchResult",
        "when": "hasSearchResult || inSearchEditor"
    },
    { // 優先度3
        "key": "ctrl+cmd+n",
        "command": "references-view.next",
        "when": "reference-list.hasResult && references-view.canNavigate && !searchViewletVisible"
    },
    {
        "key": "ctrl+cmd+p",
        "command": "references-view.prev",
        "when": "reference-list.hasResult && references-view.canNavigate && !searchViewletVisible"
    },
    {
        "key": "f4",
        "command": "-references-view.next",
        "when": "reference-list.hasResult && references-view.canNavigate"
    },
    {
        "key": "shift+f4",
        "command": "-references-view.prev",
        "when": "reference-list.hasResult && references-view.canNavigate"
    },
haruyama480haruyama480

referenceSearchVisible というのは、エディタ内のやつリファレンス検索が見えてる状態

searchViewletVisible というのは、左側の検索タブ?が見えてる状態

reference-list.hasResult というのは、左側のリファレンスタブ?が見えてる状態。~Visibleというフラグは見つからなかった

参考

haruyama480haruyama480

このショートカットを設定することで、検索結果に対して上から編集していく作業が捗る

つまり、今までは

  • 左のタブから検索(⌘ shift f)→カーソル移動してクリック→エディタで編集→カーソル移動して(略)

だったのが

  • 左のタブから検索(⌘ shift f)→ctrl ⌘ nで検索結果を選択→エディタで編集→ctrl ⌘ nで(略)

となり、カーソル移動が減る