Closed19

vscodeをvimっぽく再設定

nabekou29nabekou29

長いこと使ってて色々適当なので設定し直す

nabekou29nabekou29

vscodeからgistに吐けたのでそこにバックアップとっておいた

nabekou29nabekou29

拡張機能とかはプロファイルごとリセットされるが、グローバルな設定自体は残るので今回はこれもリセット。

めんどいので /Library/Application Support/Code を全部消す。多分 Code/User だけでも良い説はある。

mv ~/Library/Application\ Support/Code ~/Library/Application\ Support/Code_backup

追記:
Code/User/settings.json はグローバルなやつって思ったけど、Defaultプロファイルの設定って感じかも。

nabekou29nabekou29

新しいプロファイルで設定しようと思ったけど Default は特別っぽい。
これを初期化したいんだけどやり方がパッとわからない

nabekou29nabekou29

とりあえずこんな感じで消した

code --list-extensions > extensions
cat extensions | xargs -I{} code --uninstall-extension {}

依存関係がある奴は↑だとうまく消せない奴があったけど、2回目実行して綺麗になった。

nabekou29nabekou29

直近はフロントエンドの開発でしか使わないと思うので、新しいプロファイルで設定作ってく。

nabekou29nabekou29

必要な拡張機能は入れた

元々70個くらい入ってたけど、TS x React に絞ったり、非推奨・使ってないやつ消したことで、15個まで減った。

nabekou29nabekou29

試しにvscodeでvimっぽい操作とかをできるようにしてみる

nabekou29nabekou29

lualineっぽい設定

settings.json
  "vim.statusBarColorControl": true, // ステータスバーの色を変更
  "vim.statusBarColors.normal": "#5E88D1",
  "vim.statusBarColors.insert": "#6EA586",
  "vim.statusBarColors.visual": "#8B5FD2",
  "vim.statusBarColors.visualblock": "#8B5FD2",
  "vim.statusBarColors.visualline": "#8B5FD2",
  "vim.statusBarColors.commandlineinprogress": "#bd8d1c",
nabekou29nabekou29

/hoge で検索したときの検索結果のハイライト

settings.json
  "vim.hlsearch": true, // 検索結果をハイライト
  "vim.searchHighlightColor": "rgba(115, 128, 45, 0.6)",
nabekou29nabekou29

Fnキー使う系のショートカットはイマイチ数字が覚えられなかったりするので、置き換えてく
↓こういう感じで設定すれば、修飾キーのないショートカットも問題なく割り当てられそう。(元々の条件に && vim.mode != 'Insert' && (vim.mode == 'Normal' || vim.mode == 'Visual') を追加)

keybindings.json
  {
    "key": "g h",
    "command": "editor.action.goToReferences",
    "when": "editorHasReferenceProvider && editorTextFocus && !inReferenceSearchEditor && !isInEmbeddedEditor &&  (vim.mode == 'Normal' || vim.mode == 'Visual')
  },
nabekou29nabekou29

telescope 的な、<leader> + {なんか} のキーを設定してたやつを VSpaceで設定すると良い感じになりそう

nabekou29nabekou29

途中だし一部だけどこんな感じ。
忘れても候補が表示されるし良い感じになった。

settings.json
  "vspacecode.bindings": [
    {
      "key": "\\",
      "name": "Commands",
      "icon": "rocket",
      "type": "command",
      "command": "workbench.action.showCommands"
    },
    // search
    {
      "key": "f",
      "name": "Search",
      "icon": "search",
      "type": "bindings",
      "bindings": [
        {
          "key": "f",
          "name": "+Find file in project",
          "icon": "file",
          "type": "command",
          "command": "workbench.action.quickOpen"
        },
        {
          "key": "g",
          "name": "Search in project",
          "icon": "search",
          "type": "commands",
          "command": "workbench.action.findInFiles"
        },
        {
          "key": "G",
          "name": "Search in project with selection",
          "icon": "search",
          "type": "commands",
          "commands": [
            "editor.action.addSelectionToNextFindMatch",
            "workbench.action.findInFiles",
            "search.action.focusSearchList"
          ]
        }
      ]
    },
    // test
    {
      "key": "t",
      "name": "Test",
      "icon": "check",
      "type": "bindings",
      "bindings": [
        {
          "key": "t",
          "name": "Run Test at Cursor",
          "icon": "run",
          "type": "command",
          "command": "testing.runAtCursor"
        },
        {
          "key": "f",
          "name": "Run Test in Current File",
          "icon": "file",
          "type": "command",
          "command": "testing.runCurrentFile"
        },
        {
          "key": "l",
          "name": "Rerun Last Run",
          "icon": "debug-rerun",
          "type": "command",
          "command": "testing.reRunLastRun"
        }
      ]
    }
  ],
nabekou29nabekou29

easymotion 的なやつ (neovim では hop を使用していた ) も、追加でプラグインを入れずとも、キーバインドだけ書き換えれば良い感じになった

setting.json
  "vim.normalModeKeyBindingsNonRecursive": [
    ...
    {
      "before": ["f"],
      "after": ["leader", "leader", "f"]
    },
    {
      "before": ["F"],
      "after": ["leader", "leader", "F"]
    },
    {
      "before": ["t"],
      "after": ["leader", "leader", "t"]
    },
    {
      "before": ["T"],
      "after": ["leader", "leader", "T"]
    },
    {
      "before": ["leader", "leader", "l"],
      "after": ["leader", "leader", "leader", "b", "d", "j", "k"]
    },
    {
      "before": ["leader", "leader", "f"],
      "after": ["leader", "leader", "2", "f"]
    },
    {
      "before": ["leader", "leader", "F"],
      "after": ["leader", "leader", "2", "F"]
    },
    {
      "before": ["leader", "leader", "t"],
      "after": ["leader", "leader", "2", "t"]
    },
    {
      "before": ["leader", "leader", "t"],
      "after": ["leader", "leader", "2", "T"]
    }
  ],
このスクラップは2024/10/14にクローズされました