vscodeをvimっぽく再設定
長いこと使ってて色々適当なので設定し直す
VSCodeにプロファイル機能があるので、一応バックアップ取りつつ新しく作る
念の為 sync も切っておく
割と最近の機能っぽいな、ありがたい
vscodeからgistに吐けたのでそこにバックアップとっておいた
拡張機能とかはプロファイルごとリセットされるが、グローバルな設定自体は残るので今回はこれもリセット。
めんどいので /Library/Application Support/Code
を全部消す。多分 Code/User
だけでも良い説はある。
mv ~/Library/Application\ Support/Code ~/Library/Application\ Support/Code_backup
追記:
Code/User/settings.json
はグローバルなやつって思ったけど、Defaultプロファイルの設定って感じかも。
新しいプロファイルで設定しようと思ったけど Default は特別っぽい。
これを初期化したいんだけどやり方がパッとわからない
とりあえずこんな感じで消した
code --list-extensions > extensions
cat extensions | xargs -I{} code --uninstall-extension {}
依存関係がある奴は↑だとうまく消せない奴があったけど、2回目実行して綺麗になった。
------ ここまででリセット完了 -------
直近はフロントエンドの開発でしか使わないと思うので、新しいプロファイルで設定作ってく。
必要な拡張機能は入れた
元々70個くらい入ってたけど、TS x React に絞ったり、非推奨・使ってないやつ消したことで、15個まで減った。
試しにvscodeでvimっぽい操作とかをできるようにしてみる
これを入れる
lualineっぽい設定
"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",
/hoge
で検索したときの検索結果のハイライト
"vim.hlsearch": true, // 検索結果をハイライト
"vim.searchHighlightColor": "rgba(115, 128, 45, 0.6)",
Fnキー使う系のショートカットはイマイチ数字が覚えられなかったりするので、置き換えてく
↓こういう感じで設定すれば、修飾キーのないショートカットも問題なく割り当てられそう。(元々の条件に && vim.mode != 'Insert'
&& (vim.mode == 'Normal' || vim.mode == 'Visual')
を追加)
{
"key": "g h",
"command": "editor.action.goToReferences",
"when": "editorHasReferenceProvider && editorTextFocus && !inReferenceSearchEditor && !isInEmbeddedEditor && (vim.mode == 'Normal' || vim.mode == 'Visual')
},
これが結構良さそうかもしれないので入れてみる
VSpaceのキーバインドを上書きしてくの面倒だったので、1から定義する
terminal は wezterm を使ったりするのでいらないし
telescope 的な、<leader> + {なんか}
のキーを設定してたやつを VSpaceで設定すると良い感じになりそう
途中だし一部だけどこんな感じ。
忘れても候補が表示されるし良い感じになった。
"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"
}
]
}
],
easymotion 的なやつ (neovim では hop を使用していた ) も、追加でプラグインを入れずとも、キーバインドだけ書き換えれば良い感じになった
"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"]
}
],