どの環境でもコピペできるようにVSCodeのsettings.jsonの個人設定をネットに公開する。
CtrlがVSCodeとVimでバッティングするのはWindowsなので以下はWindowsで動作確認している。MacではVSCode側がCtrlではなくCommandを利用するため、handleKeys部分のみ消せば問題ない想定。
{
"vim.handleKeys": {
// Vim側
"<C-a>": true, // 数値のincrement
"<C-x>": true, // 数値のdecrement
"<C-b>": true, // Page Up
"<C-f>": true, // Page Down
"<C-p>": true, // 前オートコンプリート
"<C-n>": true, // 次オートコンプリート
// VSCode側
"<C-d>": false, // 単語選択 ※Vimのgbでもできるが、Vimの半ページ送りは使用しないため
"<C-e>": false, // ファイルを開く ※@: を入力すると、現在のファイルのメソッド等をリストアップしてくれる
"<C-j>": false, // terminalを開く
"<C-s>": false, // 保存
"<C-z>": false, // 戻す
},
// memo
/*
vim
gd // Go to Definition ※VSCodeではF12
gh // Go to Hover メソッド等のtool tipを開く
gg // 先頭行に移動 ※最終行:G
% // 対応するカッコに移動
0 // 行頭に移動 ※行末:$、文頭:^
gm // 行の中間に移動
30| // 30文字目に移動
w // 単語(word)単位で移動 ※逆:b、スペースや記号を末尾に含まない単語単位:e
:vs // タブ分割
:noh // highlight消去
u // 戻す ※逆:<C-r>
visual select -> u // 小文字 ※大文字:U、guiw / gUiwはnormal modeで変換可能、一文字だけの場合はgul
~ // 大文字小文字変換
o // 一行下にinsert modeで入る ※上:O、VSCodeの Ctrl + Enter (上は Ctrl + Shift + Enter) でもよい
D // 行末まで削除
J // 行結合
. // 直前のコマンドを繰り返し
* // カーソル位置の単語検索 ※visualstarにより選択文字列での検索も可能
/ // 検索 ※逆:?、次:n、前:N
Ctrl + y // 上の文字と同じ文字を入力
ysiw" // "で単語を括る ※You Surround Inner Word with " (viwS" も可能)
yy // 行yank ※同種:dd cc
yiw // 単語yank ※同種:viw diw ciw
yi{ // 単語yank ※同種:vi{ vi( vi" di{
cit // HTMLタグで囲まれた文字を変更 (change inner tag)
v at at // HTMLタグ全体を選択
Shift + v // 行選択 ※<C-v>:矩形選択
visual select -> g <C-a> // 連番
visual select -> g <C-x> // 連番(逆)
visual select -> o // 選択の反対側にカーソル移動 ※va{ o Shift+v でJavaのメソッド全て選択できる
:%s/<pattern>/<replace>/g // 置換 ※visual選択中は :s/検索文字/置換文字/g
ma // Mark a ※ `a or 'a で移動できる。:marks で一覧表示
i, a, s (一文字削除+insert mode), x
VSCode
Ctrl + Shift + L // 単語 or 選択範囲 の同じものを全選択
Ctrl + Shift + F // 全体検索・置換 ※置換は Ctrl + Shift + H でもよい
Ctrl + Shift + P // コマンドパレット
Ctrl + Shift + O // シンボル移動(現在のファイルのメソッド等をリストアップしてくれる) ※Ctrl + E @: と Ctrl + Shift + O @: は同じ
Ctrl + Enter // 一行下に行を追加 ※上:Ctrl + Shift + Enter
Ctrl + Tab // 開いていたファイルの履歴
Ctrl + \ // タブ分割
Ctrl + 1 // 左タブ ※Ctrl + 2:右タブ
Ctrl + ` // terminalへフォーカス ※Ctrl + 1 で editor に戻れる
Ctrl + j // terminalを開く/閉じる
Ctrl + . // quick fix
Ctrl + , // settings
Ctrl + / // comment out
Shift + Alt + → // 選択範囲を広げる ※VimのHTMLでは v at at だがもっと汎用的
F2 // Rename Symbol リファクタリング ※HTMLタグ変更時も使える。Vimでは cst<span>
F12 // Go to Definition
" // "" に自動補完されるが、文字列を入力後に再度 " を打てば、"" 内から自動で右側に抜けられる
*/
"vim.visualstar": true, // visual modeで選択したまま*検索
"vim.leader": "<space>",
"vim.normalModeKeyBindingsNonRecursive": [
// Ctrl + fで検索したくなったときは space + f で代用
{ "before": ["<leader>", "f"], "commands": [{ "command": "actions.find" }] },
// Ctrl + nで新規ファイルを開きたくなったときは space + n で代用
{ "before": ["<leader>", "n"], "commands": [{ "command": "workbench.action.files.newUntitledFile" }] },
],
"vim.visualModeKeyBindingsNonRecursive": [
// visual modeでpasteしても、yank内容が変わらない ※gvで直前に選択していたものを選択しなおし、yでyank
{ "before": ["p"], "after": ["p", "g", "v", "y"] },
],
"vim.useSystemClipboard": true,
"vim.hlsearch": true, // search highlight
"vim.incsearch": true, // incremental search
"vim.smartcase": true, // 検索文字列に大文字がない限りcase insensitive
"vim.highlightedyank.enable": true, // yank highlight
"vim.highlightedyank.duration": 500, // yank highlight time
"terminal.integrated.commandsToSkipShell": [
"-workbench.action.quickOpen", // terminalではCtrl + Eで行末 ※Ctrl + Aで行頭
],
"workbench.editor.enablePreview": false, // [エクスプローラー]ビューからファイルを常に通常のエディタに開くようにする
"editor.minimap.enabled": false,
"git.openRepositoryInParentFolders": "never",
"files.eol": "\n",
"files.insertFinalNewline": true,
"files.autoSave": "onFocusChange",
}