VS Code Neovimを試す
随時更新してます🧰
まずは導入する
前提
- 初めてのvimでLazyVim on WezTermを使っていた
- LSPやLinter,Formatterの設定がめんどくさすぎる...
- おまけに動作ももっさり...(設定が悪いのかも
- いきなりVimに馴染めるかい!!!!!
- そんなわけで共存したい
↓を参考に設定していく
nvimのパスをsettings.json
に追記する
"vscode-neovim.neovimExecutablePaths.darwin": "/opt/homebrew/bin/nvim",
パフォーマンス向上のために別ホストで動かす...??設定
"extensions.experimental.affinity": {
"asvetliakov.vscode-neovim": 1
}
なるほど
Insertモード時はVSCodeが,それ以外はNeovim管轄らしい
なのでjj
等は使えない.
使いたいならvscodeの設定で変えないといけないっぽい
Insertモード時以外にスペースキー2回押しでクイックオープン開くようにした
VSCodeはプレビューが見れないのが残念
[
{
"key": "space space",
"command": "workbench.action.quickOpen",
"when": "neovim.init && neovim.mode != 'insert'"
}
]
クイックオープンの選択肢をctrl + j
,ctrl + k
で選択できるようにした
ctrl + n
, ctrl + p
は押しづらいし,何より使用頻度が高い
{
"key": "ctrl+j",
"command": "workbench.action.quickOpenSelectNext",
"when": "inQuickOpen && neovim.wildMenuVisible || inQuickOpen && neovim.mode != 'cmdline'"
},
{
"key": "ctrl+n",
"command": "-workbench.action.quickOpenSelectNext",
"when": "inQuickOpen && neovim.wildMenuVisible || inQuickOpen && neovim.mode != 'cmdline'"
},
{
"key": "ctrl+k",
"command": "workbench.action.quickOpenSelectPrevious",
"when": "inQuickOpen && neovim.wildMenuVisible || inQuickOpen && neovim.mode != 'cmdline'"
},
{
"key": "ctrl+p",
"command": "-workbench.action.quickOpenSelectPrevious",
"when": "inQuickOpen && neovim.wildMenuVisible || inQuickOpen && neovim.mode != 'cmdline'"
shift + h
,shift + l
で行頭,行末にnormalモードのまま移動できるようにした
デフォルトは^
,$
,押しづらいったら.
args
で渡してあげると渡したキーの動作に上書きできるみたい
{
"key": "shift+h",
"command": "vscode-neovim.send",
"when": "neovim.init && neovim.recording || editorTextFocus && neovim.init && neovim.mode != 'insert' && editorLangId not in 'neovim.editorLangIdExclusions'",
"args": "^"
},
{
"key": "home",
"command": "-vscode-neovim.send",
"when": "neovim.init && neovim.recording || editorTextFocus && neovim.init && neovim.mode != 'insert' && editorLangId not in 'neovim.editorLangIdExclusions'"
},
{
"key": "shift+l",
"command": "vscode-neovim.send",
"when": "neovim.init && neovim.recording || editorTextFocus && neovim.init && neovim.mode != 'insert' && editorLangId not in 'neovim.editorLangIdExclusions'",
"args": "$"
},
{
"key": "end",
"command": "-vscode-neovim.send",
"when": "neovim.init && neovim.recording || editorTextFocus && neovim.init && neovim.mode != 'insert' && editorLangId not in 'neovim.editorLangIdExclusions'"
}
jj
でinsertモードから抜けるようにしたesc
は遠くて押しづらいからこの設定にしてる人が結構多いらしい
{
"command": "vscode-neovim.compositeEscape1",
"key": "j",
"when": "neovim.mode == insert && editorTextFocus",
"args": "j"
}
ctrl + h
, ctrl + l
でタブを移動できるようにした.
数値指定で移動するのが一番早いんだろうけど数えるのめんどくさい.
{
"key": "shift+cmd+]",
"command": "-workbench.action.nextEditor"
},
{
"key": "ctrl+l",
"command": "workbench.action.nextEditor"
},
{
"key": "shift+cmd+[",
"command": "-workbench.action.previousEditor"
},
{
"key": "ctrl+h",
"command": "workbench.action.previousEditor"
}
ショートカット一覧見てたら試験段階のクイック検索なるものがあったのでctrl+/
で起動できるようにしてみた.フローティングウインドウでプレビュー見れたら最高なんだけどなぁ...
あとcmd+shift+f
の全文検索の結果をctrl+j
とctrl+k
で選択できるようにした.
デフォルトのコマンドだと検索タブにいなくてもhasSearchResult
に引っかかってしまってうまくいかなかったのでその条件を外した
{
"key": "ctrl+/",
"command": "workbench.action.experimental.quickTextSearch"
},
{
"key": "f4",
"command": "-search.action.focusNextSearchResult",
"when": "hasSearchResult || inSearchEditor"
},
{
"key": "ctrl+j",
"command": "search.action.focusNextSearchResult",
"when": "inSearchEditor"
},
{
"key": "shift+f4",
"command": "-search.action.focusPreviousSearchResult",
"when": "hasSearchResult || inSearchEditor"
},
{
"key": "ctrl+k",
"command": "search.action.focusPreviousSearchResult",
"when": "inSearchEditor"
}
MTG中などコードを共有する時にGithub上のリンクをコピーしたい時がある(パーマリンク?っていうらしい
shift+cmd+c
で現在のカーソル行を指定したリンクを,ctrl+shift+cmd+c
で現在のファイルを指定したリンクをクリップボードにコピーするようにした
{
"key": "shift+cmd+c" ,
"command": "gitlens.copyRemoteFileUrlToClipboard"
},
{
"key": "ctrl+shift+cmd+c",
"command": "gitlens.copyRemoteFileUrlWithoutRange"
}
ファイルやフォルダーの新規作成がa
だったりshift + a
だったりとなんかしっくりこなかったので新規ファイルをcmd + n
に,新規フォルダをcmd + ctrl + n
に割り当てた.
しっくりきた
{
"key": "ctrl+cmd+n",
"command": "explorer.newFolder",
"when": "filesExplorerFocus && !inputFocus"
},
{
"key": "shift+a",
"command": "-explorer.newFolder",
"when": "filesExplorerFocus && !inputFocus"
},
{
"key": "cmd+n",
"command": "explorer.newFile",
"when": "filesExplorerFocus && !inputFocus"
},
{
"key": "a",
"command": "-explorer.newFile",
"when": "filesExplorerFocus && !inputFocus"
},
{
"key": "cmd+n",
"command": "-workbench.action.files.newUntitledFile"
}
パーマリンクだけじゃなく普通のファイルパスもよくコピーすることに気がついたので追加していく.
二段階のショートカットにしてパーマリンクと一緒に覚えやすくしたつもり.
この変更によってパーマリンクのショートカットも変更した.
- 相対パスのコピー
-
cmd+shift+c
+c
-
- 絶対パスのコピー
-
ctrl+cmd+shift+c
+c
-
- パーマリンクのコピー(行指定)
-
cmd+shift+c
+r
-
- パーマリンクのコピー(ファイル全体)
-
ctrl+cmd+shift+c
+r
-
ややこしいのでリンクコピー系のものを一度まとめて書いておく
{
"key": "shift+cmd+c",
"command": "-workbench.action.terminal.openNativeConsole",
"when": "!terminalFocus"
},
{
"key": "shift+cmd+c r",
"command": "gitlens.copyRemoteFileUrlToClipboard"
},
{
"key": "ctrl+shift+cmd+c r",
"command": "gitlens.copyRemoteFileUrlWithoutRange"
},
{
"key": "shift+alt+cmd+c",
"command": "-copyRelativeFilePath",
"when": "!editorFocus"
},
{
"key": "cmd+k shift+alt+cmd+c",
"command": "-copyRelativeFilePath",
"when": "editorFocus"
},
{
"key": "shift+cmd+c c",
"command": "copyRelativeFilePath"
},
{
"key": "alt+cmd+c",
"command": "-copyFilePath",
"when": "!editorFocus"
},
{
"key": "cmd+k alt+cmd+c",
"command": "-copyFilePath",
"when": "editorFocus"
},
{
"key": "ctrl+shift+cmd+c c",
"command": "copyFilePath"
},
{
"key": "ctrl+cmd+n",
"command": "explorer.newFolder",
"when": "filesExplorerFocus && !inputFocus"
},