Last active
August 1, 2025 02:50
-
-
Save h2m730131/b1a014a0d350230660a0675fbac87b2c to your computer and use it in GitHub Desktop.
Visual Studio Code + VSCodeVim
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Place your key bindings in this file to override the defaults | |
[ | |
// 修改 User Settings: | |
// "editor.suggest.insertMode": "insert", | |
// | |
// 修改 Keyboard Shortcuts: | |
// * [suggest insert mode: enter for insert, tab for replace · Issue #112613 · microsoft/vscode](https://github.com/microsoft/vscode/issues/112613#issuecomment-750755396) | |
{ | |
"key": "enter", | |
"command": "acceptSelectedSuggestion", // to insert | |
"when": "suggestWidgetVisible && textInputFocus" | |
}, | |
{ | |
"key": "tab", | |
"command": "acceptAlternativeSelectedSuggestion", // to replace | |
"when": "suggestWidgetVisible && textInputFocus" | |
}, | |
// | |
// 在 workbench.list, 按下 Escape 鍵回到 Active Editor | |
{ | |
"key": "escape", | |
"command": "workbench.action.focusActiveEditorGroup", | |
"when": "!listHasSelectionOrFocus && listFocus && !inputFocus" | |
}, | |
// | |
// 在 Terminal Panel, cd 到當前檔案所在的資料夾 | |
{ | |
"key": "ctrl+shift+t", | |
"command": "workbench.action.terminal.sendSequence", | |
"args": { | |
"text": "cd '${fileDirname}'\u000D" | |
}, | |
"when": "terminalFocus" | |
}, | |
// | |
// 在 Terminal Panel, 切換到上 / 下個 Terminal | |
{ | |
"key": "ctrl+tab", | |
"command": "workbench.action.terminal.focusNext", | |
"when": "terminalFocus" | |
}, | |
{ | |
"key": "ctrl+shift+tab", | |
"command": "workbench.action.terminal.focusPrevious", | |
"when": "terminalFocus" | |
}, | |
// | |
// 在 Terminal Panel, 刪除游標右側的所有文字 | |
{ | |
"key": "ctrl+k", | |
"command": "deleteAllRight", | |
"when": "terminalFocus" | |
}, | |
// | |
// 在 Terminal Panel, 取消 Terminal: Focus Find, ctrl+f 用於移動游標向右一個 character | |
{ | |
"key": "ctrl+f", | |
"command": "-workbench.action.terminal.focusFind", | |
"when": "terminalFindFocused && terminalHasBeenCreated || terminalFindFocused && terminalProcessSupported || terminalFocusInAny && terminalHasBeenCreated || terminalFocusInAny && terminalProcessSupported" | |
}, | |
// | |
// 在 Terminal Panel, 取消 Go to File..., ctrl+e 用於移動游標到行尾 | |
{ | |
"key": "ctrl+e", | |
"command": "workbench.action.quickOpen", | |
"when": "!terminalFocus" | |
}, | |
{ | |
"key": "ctrl+e", | |
"command": "-workbench.action.quickOpen" | |
}, | |
] |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Windows: %APPDATA%\Code\User\settings.json | |
// macOS: $HOME/Library/Application\ Support/Code/User/settings.json | |
// Linux: $HOME/.config/Code/User/settings.json | |
{ | |
"workbench.colorTheme": "Default Dark Modern", | |
"window.commandCenter": true, | |
"workbench.navigationControl.enabled": false, | |
// | |
"workbench.sideBar.location": "right", | |
"workbench.panel.showLabels": false, | |
"workbench.secondarySideBar.showLabels": false, | |
"editor.minimap.enabled": false, | |
"workbench.iconTheme": "vscode-icons", | |
"editor.bracketPairColorization.enabled": true, | |
"editor.guides.bracketPairs": true, | |
"editor.formatOnSave": true, | |
// | |
// sticky scroll | |
"workbench.tree.enableStickyScroll": true, | |
"editor.stickyScroll.enabled": true, | |
"editor.stickyScroll.defaultModel": "foldingProviderModel", | |
// | |
// font | |
"editor.fontFamily": "'JetBrainsMono Nerd Font', 'JetBrains Mono', Consolas, 'Courier New', monospace", | |
"editor.fontLigatures": true, | |
"editor.fontSize": 13, | |
"editor.lineHeight": 20, | |
// | |
// git | |
"git.blame.editorDecoration.enabled": true, | |
"git.blame.statusBarItem.enabled": false, | |
// | |
// ## Github Copilot | |
// * [doggy8088/github-copilot-configs: Will 保哥整理的最佳 GitHub Copilot 設定](https://github.com/doggy8088/github-copilot-configs) | |
"github.copilot.enable": { | |
"*": true, | |
"plaintext": false, | |
"markdown": true, | |
"scminput": false | |
}, | |
"chat.commandCenter.enabled": true, | |
"github.copilot.selectedCompletionModel": "gpt-4o-copilot", | |
"github.copilot.editor.enableCodeActions": true, | |
"github.copilot.renameSuggestions.triggerAutomatically": true, | |
"workbench.commandPalette.experimental.askChatLocation": "chatView", | |
"github.copilot.chat.search.semanticTextResults": true, | |
// | |
// ### Code Completions | |
"editor.inlineSuggest.showToolbar": "always", | |
"editor.inlineSuggest.syntaxHighlightingEnabled": true, | |
// | |
// ### Next Edit Suggestions (NES) | |
"github.copilot.nextEditSuggestions.enabled": true, | |
"editor.inlineSuggest.edits.allowCodeShifting": "always", | |
"editor.inlineSuggest.edits.renderSideBySide": "auto", | |
"editor.inlineSuggest.edits.showCollapsed": false, | |
// | |
// ## Github Copilot Chat | |
"github.copilot.chat.languageContext.typescript.enabled": true, | |
"github.copilot.chat.languageContext.fix.typescript.enabled": true, | |
"github.copilot.chat.languageContext.inline.typescript.enabled": true, | |
"github.copilot.chat.followUps": "always", | |
// "github.copilot.chat.localeOverride": "zh-TW", | |
"github.copilot.chat.useProjectTemplates": true, // /new | |
"github.copilot.chat.scopeSelection": true, // /explain | |
"chat.detectParticipant.enabled": false, // 是否自動偵測, 不需要透過 `@` 指定 | |
// | |
// ### Debugging | |
"github.copilot.chat.startDebugging.enabled": true, // /startDebugging | |
// | |
// ### Testing | |
"github.copilot.chat.setupTests.enabled": true, // /setupTests | |
"github.copilot.chat.generateTests.codeLens": true, | |
// | |
// ### Inline Chat | |
"github.copilot.chat.editor.temporalContext.enabled": true, | |
// "inlineChat.holdToSpeech": true, | |
"inlineChat.finishOnType": true, | |
"inlineChat.accessibleDiffView": "on", | |
// | |
// ### Agent | |
"chat.agent.enabled": true, | |
"chat.agent.maxRequests": 50, | |
"github.copilot.chat.agent.thinkingTool": true, | |
"github.copilot.chat.codesearch.enabled": true, | |
"github.copilot.chat.newWorkspaceCreation.enabled": true, | |
"github.copilot.chat.agent.runTasks": true, | |
// | |
// ### MCP | |
"chat.mcp.enabled": true, | |
// "chat.mcp.discovery.enabled": { | |
// "claude-desktop": false, | |
// "windsurf": false, | |
// "cursor-global": false, | |
// "cursor-workspace": false | |
// }, | |
// "mcp": { | |
// "servers": {} | |
// }, | |
// | |
// ### GitHub Copilot Edit | |
"github.copilot.chat.edits.suggestRelatedFilesForTests": true, | |
"github.copilot.chat.edits.suggestRelatedFilesFromGitHistory": true, | |
"chat.editing.confirmEditRequestRemoval": true, | |
"chat.editing.confirmEditRequestRetry": true, | |
// | |
// ### Custom instructions | |
"chat.promptFiles": true, | |
// "chat.promptFilesLocations": { | |
// ".github/prompts": true, | |
// "/Users/vscode/repos/prompts": true | |
// }, | |
"github.copilot.chat.testGeneration.instructions": [ | |
{ | |
"file": ".copilot-test-instructions.md" | |
}, | |
{ | |
"text": "Always try uniting related tests in a suite." | |
} | |
], | |
"github.copilot.chat.codeGeneration.useInstructionFiles": true, | |
// "github.copilot.chat.codeGeneration.instructions": [ | |
// { | |
// "text": "Always response in #zh-tw." | |
// }, | |
// { | |
// "text": "When outputing any text, use the following translation mappings: create = 建立, object = 物件, queue = 佇列, stack = 堆疊, information = 資訊, invocation = 呼叫, code = 程式碼, running = 執行, library = 函式庫, schematics = 原理圖, building = 建構, Setting up = 設定, package = 套件, video = 影片, for loop = for 迴圈, class = 類別, Concurrency = 平行處理, Transaction = 交易, Transactional = 交易式, Code Snippet = 程式碼片段, Code Generation = 程式碼產生器, Any Class = 任意類別, Scalability = 延展性, Dependency Package = 相依套件, Dependency Injection = 相依性注入, Reserved Keywords = 保留字, Metadata = Metadata, Clone = 複製, Memory = 記憶體, Built-in = 內建, Global = 全域, Compatibility = 相容性, Function = 函式, Refresh = 重新整理, document = 文件, example = 範例, demo = 展示, quality = 品質, tutorial = 指南, recipes = 秘訣, byte = 位元組, bit = 位元" | |
// }, | |
// { | |
// "file": ".copilot-instructions.md" | |
// } | |
// ], | |
"github.copilot.chat.reviewSelection.instructions": [ | |
{ | |
"file": ".copilot-review-instructions.md" | |
} | |
], | |
"github.copilot.chat.commitMessageGeneration.instructions": [ | |
{ | |
"file": ".copilot-commit-message-instructions.md" | |
} | |
], | |
"github.copilot.chat.pullRequestDescriptionGeneration.instructions": [ | |
{ | |
"file": ".copilot-pull-request-description-instructions.md" | |
} | |
], | |
// | |
// intelliSense | |
"editor.suggestSelection": "recentlyUsedByPrefix", | |
"editor.inlineSuggest.enabled": true, | |
"editor.suggest.showStatusBar": true, | |
// Suggest: Insert Mode: insert (default) | |
// "editor.suggest.insertMode": "insert", | |
// | |
// Keyboard Shortcuts: | |
// enter, Tab: insert | |
// shift+enter, shift+tab: replace | |
// | |
// 修改 Keyboard Shortcuts: | |
// * [suggest insert mode: enter for insert, tab for replace · Issue #112613 · microsoft/vscode](https://github.com/microsoft/vscode/issues/112613#issuecomment-750755396) | |
// * keybindings.json: | |
// { | |
// "key": "enter", | |
// "command": "acceptSelectedSuggestion", // to insert | |
// "when": "suggestWidgetVisible && textInputFocus" | |
// }, | |
// { | |
// "key": "tab", | |
// "command": "acceptAlternativeSelectedSuggestion", // to replace | |
// "when": "suggestWidgetVisible && textInputFocus" | |
// }, | |
// | |
// Configure Language Specific Settings | |
// | |
"[cpp]": { | |
"editor.suggest.insertMode": "insert", | |
}, | |
"[c]": { | |
"editor.suggest.insertMode": "insert", | |
}, | |
"[json]": { | |
"editor.suggest.insertMode": "insert" | |
}, | |
"[jsonc]": { | |
"editor.suggest.insertMode": "insert" | |
}, | |
// | |
// inlay hints | |
"editor.inlayHints.enabled": "on", | |
// | |
// remote | |
"remote.extensionKind": { | |
"GitHub.copilot": [ | |
"ui" | |
], | |
"GitHub.copilot-chat": [ | |
"ui" | |
], | |
"ms-vscode.copilot-mermaid-diagram": [ | |
"ui" | |
], | |
// "mhutchie.git-graph": [ | |
// "ui" | |
// ], | |
"codezombiech.gitignore": [ | |
"ui" | |
], | |
"albert.TabOut": [ | |
"ui" | |
], | |
"mishkinf.goto-next-previous-member": [ | |
"ui" | |
], | |
// "mhutchie.git-graph": [ | |
// "ui" | |
// ], | |
// "codezombiech.gitignore": [ | |
// "ui" | |
// ], | |
// "albert.TabOut": [ | |
// "ui" | |
// ], | |
// "mishkinf.goto-next-previous-member": [ | |
// "ui" | |
// ], | |
// "vscodevim.vim": [ | |
// "ui" | |
// ] | |
}, | |
// | |
// terminal | |
"terminal.integrated.fontLigatures.enabled": true, | |
"terminal.integrated.shellIntegration.enabled": true, | |
"terminal.integrated.suggest.enabled": true, | |
"terminal.integrated.env.osx": { | |
"Q_NEW_SESSION": "1" | |
}, | |
// | |
// Live Preview | |
"livePreview.autoRefreshPreview": "On Changes to Saved Files", | |
// | |
// Live Server | |
// https://127.0.0.1:5500 | |
// "liveServer.settings.port": 5500, | |
// https://127.0.0.1 | |
"liveServer.settings.port": 443, | |
// C:\Windows\System32\drivers\etc\hosts | |
// 127.0.0.1 [your_url] | |
"liveServer.settings.host": "[your_url]", | |
"liveServer.settings.https": { | |
"enable": true, | |
// $ mkcert localhost 127.0.0.1 [your_url] | |
// Created a new certificate valid for the following names 📜 | |
// - "localhost" | |
// - "127.0.0.1" | |
// - "[your_url]" | |
// | |
// The certificate is at "./localhost+2.pem" and the key at "./localhost+2-key.pem" ✅ | |
// | |
// It will expire on 9 July 2027 🗓 | |
"cert": "[your_path]\\localhost+2.pem", | |
"key": "[your_path]\\localhost+2-key.pem", | |
"passphrase": "" | |
}, | |
// | |
// vim | |
"vim.enableNeovim": true, | |
"vim.neovimPath": "C:\\tools\\neovim\\nvim-win64\\bin\\nvim.exe", | |
"vim.foldfix": true, // true: Moving `j`/`k` over folds does not open up the folds | |
"editor.cursorSurroundingLines": 5, | |
// "vim.smartRelativeLine": true, | |
"editor.lineNumbers": "relative", | |
"vim.showMarksInGutter": true, | |
"vim.useCtrlKeys": true, | |
"vim.handleKeys": { | |
// "<C-a>": false, | |
// "<C-f>": false | |
}, | |
"vim.visualstar": true, | |
"vim.highlightedyank.enable": true, | |
"vim.highlightedyank.color": "rgba(250, 240, 170, 0.5)", | |
"vim.highlightedyank.duration": 200, | |
"vim.useSystemClipboard": true, | |
"vim.hlsearch": true, | |
"vim.ignorecase": true, | |
"vim.incsearch": true, | |
// To improve performance | |
"extensions.experimental.affinity": { | |
"vscodevim.vim": 1 | |
}, | |
// | |
// key mapping | |
"vim.leader": ",", | |
// "vim.vimrc.enable": true, | |
// "vim.vimrc.path": "", | |
// normal mode | |
"vim.normalModeKeyBindings": [], | |
"vim.normalModeKeyBindingsNonRecursive": [ | |
// Editor (Tab Page) | |
{ | |
"before": [ | |
"<leader>", | |
"t", | |
"a" | |
], | |
"commands": [ | |
"workbench.action.closeAllEditors" // View: Close All Editors | |
] | |
}, | |
{ | |
"before": [ | |
"<leader>", | |
"t", | |
"o" | |
], | |
"commands": [ | |
":tabo" | |
] | |
}, | |
{ | |
"before": [ | |
"<leader>", | |
"t", | |
"c" | |
], | |
"commands": [ | |
"workbench.action.closeEditorsToTheRight" | |
] | |
}, | |
// { | |
// "before": [ | |
// "<leader>", | |
// "t", | |
// "" | |
// ], | |
// "commands": [ | |
// "workbench.action.closeEditorsToTheLeft" | |
// ] | |
// }, | |
{ | |
"before": [ | |
"<leader>", | |
"t", | |
"h" | |
], | |
"commands": [ | |
":tabm -" | |
] | |
}, | |
{ | |
"before": [ | |
"<leader>", | |
"t", | |
"l" | |
], | |
"commands": [ | |
":tabm +" | |
] | |
}, | |
// { | |
// "before": [ | |
// "<leader>", | |
// "t", | |
// "s" | |
// ], | |
// "after": [ | |
// ] | |
// }, | |
// | |
{ | |
"before": [ | |
"<C-d>" // 避免 half page down 經過 folds 會展開 | |
], | |
"after": [ | |
"1", | |
"5", | |
"g", | |
"j", | |
"z", | |
"z", | |
] | |
}, | |
{ | |
"before": [ | |
"<C-u>" | |
], | |
"after": [ | |
"1", | |
"5", | |
"g", | |
"k", | |
"z", | |
"z" | |
] | |
}, | |
{ | |
"before": [ | |
"<leader>", | |
"h" | |
], | |
"after": [ | |
"^" | |
] | |
}, | |
{ | |
"before": [ | |
"<leader>", | |
"l" | |
], | |
"after": [ | |
"$" | |
] | |
}, | |
{ | |
// alefragnani.Bookmarks: Mark/unmark positions with bookmarks | |
"before": [ | |
"<leader>", | |
"m" | |
], | |
"commands": [ | |
"bookmarks.toggle" | |
] | |
}, | |
{ | |
// alefragnani.Bookmarks: Mark/unmark positions with bookmarks label | |
"before": [ | |
"<leader>", | |
"M" | |
], | |
"commands": [ | |
"bookmarks.toggleLabeled" | |
] | |
}, | |
{ | |
// alefragnani.Bookmarks: List all bookmarks in the current file | |
"before": [ | |
"<leader>", | |
"b", | |
"l" | |
], | |
"commands": [ | |
"bookmarks.list" | |
] | |
}, | |
{ | |
// alefragnani.Bookmarks: List all bookmarks from all files | |
"before": [ | |
"<leader>", | |
"b", | |
"L" | |
], | |
"commands": [ | |
"bookmarks.listFromAllFiles" | |
] | |
}, | |
{ | |
// alefragnani.Bookmarks: Jump to Next | |
"before": [ | |
"<leader>", | |
"b", | |
"n" | |
], | |
"commands": [ | |
"bookmarks.jumpToNext" | |
] | |
}, | |
{ | |
// alefragnani.Bookmarks: Jump to Previous | |
"before": [ | |
"<leader>", | |
"b", | |
"N" | |
], | |
"commands": [ | |
"bookmarks.jumpToPrevious" | |
] | |
}, | |
{ | |
// vim-easymotion: Search two character | |
"before": [ | |
"<space>", | |
], | |
"after": [ | |
"<leader>", | |
"<leader>", | |
"2", | |
"s" | |
] | |
}, | |
{ | |
"before": [ | |
"<leader>", | |
"," | |
], | |
"after": [ | |
"A", | |
",", | |
"<Esc>" | |
] | |
}, | |
{ | |
"before": [ | |
"<leader>", | |
";" | |
], | |
"after": [ | |
"A", | |
";", | |
"<Esc>" | |
] | |
}, | |
{ | |
"before": [ | |
"<leader>", | |
"g", | |
"e" | |
], | |
"commands": [ | |
"editor.action.marker.nextInFiles" | |
] | |
}, | |
{ | |
"before": [ | |
"<leader>", | |
"g", | |
"E" | |
], | |
"commands": [ | |
"editor.action.marker.prevInFiles" | |
] | |
}, | |
{ | |
"before": [ | |
"<leader>", | |
"a" | |
], | |
"commands": [ | |
"editor.action.quickFix" | |
] | |
}, | |
{ | |
"before": [ | |
"<leader>", | |
"A" | |
], | |
"commands": [ | |
"editor.action.sourceAction" | |
] | |
}, | |
{ | |
"before": [ | |
"<leader>", | |
"f" | |
], | |
"commands": [ | |
"editor.action.formatDocument" | |
] | |
}, | |
{ | |
"before": [ | |
"<leader>", | |
"p" | |
], | |
"commands": [ | |
"editor.action.triggerParameterHints" | |
] | |
}, | |
{ | |
// VSCodeVim tricks!: | |
// gh - equivalent to hovering your mouse over wherever the cursor is. Handy for seeing types and error messages without reaching for the mouse! | |
"before": [ | |
"<leader>", | |
"q" | |
], | |
"commands": [ | |
"editor.action.showHover" | |
] | |
}, | |
{ | |
"before": [ | |
"<leader>", | |
"k" | |
], | |
"commands": [ | |
"editor.action.moveLinesUpAction" | |
] | |
}, | |
{ | |
"before": [ | |
"<leader>", | |
"j" | |
], | |
"commands": [ | |
"editor.action.moveLinesDownAction" | |
] | |
}, | |
{ | |
// VSCodeVim tricks!: | |
// gb - adds another cursor on the next word it finds which is the same as the word under the cursor. | |
"before": [ | |
"g", | |
"B" | |
], | |
"commands": [ | |
"editor.action.selectHighlights" | |
] | |
}, | |
{ | |
// VSCodeVim tricks!: | |
// af - visual mode command which selects increasingly large blocks of text. | |
"before": [ | |
"<leader>", | |
"w" | |
], | |
"commands": [ | |
"editor.action.smartSelect.expand" | |
] | |
}, | |
{ | |
"before": [ | |
"<leader>", | |
"W" | |
], | |
"commands": [ | |
"editor.action.smartSelect.shrink" | |
] | |
}, | |
{ | |
"before": [ | |
"<leader>", | |
"d" | |
], | |
"commands": [ | |
// "editor.action.duplicateSelection" | |
"editor.action.copyLinesDownAction" | |
] | |
}, | |
{ | |
"before": [ | |
"<leader>", | |
"g", | |
"j" | |
], | |
"commands": [ | |
// "breadcrumbs.focus" | |
"breadcrumbs.focusAndSelect" | |
] | |
}, | |
{ | |
"before": [ | |
"<leader>", | |
"g", | |
"f" | |
], | |
"commands": [ | |
"workbench.action.quickOpen" | |
] | |
}, | |
{ | |
"before": [ | |
"<leader>", | |
"g", | |
"t" | |
], | |
"commands": [ | |
"editor.action.goToTypeDefinition" | |
] | |
}, | |
{ | |
"before": [ | |
"<leader>", | |
"g", | |
"T" | |
], | |
"commands": [ | |
"editor.action.peekTypeDefinition" | |
] | |
}, | |
{ | |
"before": [ | |
"<leader>", | |
"g", | |
"d" | |
], | |
"commands": [ | |
"editor.action.revealDefinition" | |
] | |
}, | |
{ | |
"before": [ | |
"<leader>", | |
"g", | |
"D" | |
], | |
"commands": [ | |
"editor.action.peekDefinition" | |
] | |
}, | |
{ | |
"before": [ | |
"<leader>", | |
"g", | |
"i" | |
], | |
"commands": [ | |
"editor.action.goToImplementation" | |
] | |
}, | |
{ | |
"before": [ | |
"<leader>", | |
"g", | |
"I" | |
], | |
"commands": [ | |
"editor.action.peekImplementation" | |
] | |
}, | |
{ | |
"before": [ | |
"<leader>", | |
"g", | |
"u" | |
], | |
"commands": [ | |
"editor.action.goToReferences" | |
] | |
}, | |
{ | |
"before": [ | |
"<leader>", | |
"g", | |
"U" | |
], | |
"commands": [ | |
"editor.action.referenceSearch.trigger" | |
] | |
}, | |
{ | |
"before": [ | |
"<leader>", | |
"g", | |
"m" | |
], | |
"commands": [ | |
"workbench.action.gotoSymbol" | |
] | |
}, | |
{ | |
"before": [ | |
"<leader>", | |
"c", | |
"i" | |
], | |
"commands": [ | |
{ | |
"command": "references-view.showCallHierarchy" | |
}, | |
{ | |
"command": "references-view.showIncomingCalls" | |
} | |
] | |
}, | |
{ | |
"before": [ | |
"<leader>", | |
"c", | |
"o" | |
], | |
"commands": [ | |
{ | |
"command": "references-view.showCallHierarchy" | |
}, | |
{ | |
"command": "references-view.showOutgoingCalls" | |
} | |
] | |
}, | |
{ | |
"before": [ | |
"<leader>", | |
"g", | |
"l" | |
], | |
"commands": [ | |
"workbench.files.action.showActiveFileInExplorer" | |
] | |
}, | |
{ | |
"before": [ | |
"<leader>", | |
"g", | |
"w" | |
], | |
"commands": [ | |
"revealFileInOS" | |
] | |
}, | |
{ | |
"before": [ | |
"<leader>", | |
"s", | |
"r" | |
], | |
"commands": [ | |
"editor.action.refactor" | |
] | |
}, | |
{ | |
"before": [ | |
"<leader>", | |
"r", | |
"r" | |
], | |
"commands": [ | |
"editor.action.rename" | |
] | |
}, | |
{ | |
"before": [ | |
"<leader>", | |
"r", | |
"m" | |
], | |
"commands": [ | |
{ | |
"command": "editor.action.codeAction", | |
"args": { | |
"kind": "refactor.extract.function" | |
} | |
} | |
], | |
}, | |
// [Go to Next/Previous Member](https://marketplace.visualstudio.com/items?itemName=mishkinf.goto-next-previous-member) | |
{ | |
"before": [ | |
"[", | |
"m" | |
], | |
"commands": [ | |
"gotoNextPreviousMember.previousMember" | |
] | |
}, | |
{ | |
"before": [ | |
"]", | |
"m" | |
], | |
"commands": [ | |
"gotoNextPreviousMember.nextMember" | |
] | |
}, | |
// view | |
{ | |
"before": [ | |
"<leader>", | |
"v", | |
"l" | |
], | |
"commands": [ | |
"workbench.action.toggleSidebarVisibility" | |
] | |
}, | |
{ | |
"before": [ | |
"<leader>", | |
"v", | |
"h" | |
], | |
"commands": [ | |
"workbench.action.toggleAuxiliaryBar" | |
] | |
}, | |
{ | |
"before": [ | |
"<leader>", | |
"<BS>", | |
], | |
"commands": [ | |
"workbench.action.navigateToLastEditLocation" | |
] | |
} | |
], | |
// insert mode | |
"vim.insertModeKeyBindings": [], | |
"vim.insertModeKeyBindingsNonRecursive": [ | |
{ | |
"before": [ | |
"<C-i>", | |
], | |
"commands": [ | |
"inlineChat.start" | |
] | |
}, | |
], | |
// visual mode | |
"vim.visualModeKeyBindings": [], | |
"vim.visualModeKeyBindingsNonRecursive": [ | |
// // [火大的貼上問題 - vscode vim mode | 🌹 喇賽的人 Blog 🌹](https://www.blog.lasai.com.tw/2020/07/05/vscode-vim-mode/#%E7%81%AB%E5%A4%A7%E7%9A%84%E8%B2%BC%E4%B8%8A%E5%95%8F%E9%A1%8C) | |
// { | |
// "before": [ | |
// "p" | |
// ], | |
// "after": [ | |
// "\"", | |
// "0", // *: system clipboard | |
// "p" | |
// ] | |
// }, | |
// VSCodeVim: | |
// Bind p in visual mode to paste without overriding the current register: | |
{ | |
"before": [ | |
"p", | |
], | |
"after": [ | |
"p", | |
"g", | |
"v", | |
"y" | |
] | |
}, | |
{ | |
"before": [ | |
"<leader>", | |
"h" | |
], | |
"after": [ | |
"^" | |
] | |
}, | |
{ | |
"before": [ | |
"<leader>", | |
"l" | |
], | |
"after": [ | |
"$" | |
] | |
}, | |
{ | |
// alefragnani.Bookmarks: Mark/unmark positions with bookmarks | |
"before": [ | |
"<leader>", | |
"m" | |
], | |
"commands": [ | |
"bookmarks.toggle" | |
] | |
}, | |
{ | |
// alefragnani.Bookmarks: Mark/unmark positions with bookmarks label | |
"before": [ | |
"<leader>", | |
"M" | |
], | |
"commands": [ | |
"bookmarks.toggleLabeled" | |
] | |
}, | |
{ | |
// alefragnani.Bookmarks: List all bookmarks in the current file | |
"before": [ | |
"<leader>", | |
"b", | |
"l" | |
], | |
"commands": [ | |
"bookmarks.list" | |
] | |
}, | |
{ | |
// alefragnani.Bookmarks: List all bookmarks from all files | |
"before": [ | |
"<leader>", | |
"b", | |
"L" | |
], | |
"commands": [ | |
"bookmarks.listFromAllFiles" | |
] | |
}, | |
{ | |
// alefragnani.Bookmarks: Jump to Next | |
"before": [ | |
"<leader>", | |
"b", | |
"n" | |
], | |
"commands": [ | |
"bookmarks.jumpToNext" | |
] | |
}, | |
{ | |
// alefragnani.Bookmarks: Jump to Previous | |
"before": [ | |
"<leader>", | |
"b", | |
"N" | |
], | |
"commands": [ | |
"bookmarks.jumpToPrevious" | |
] | |
}, | |
{ | |
// vim-easymotion: Search two character | |
"before": [ | |
"<space>", | |
], | |
"after": [ | |
"<leader>", | |
"<leader>", | |
"2", | |
"s" | |
] | |
}, | |
{ | |
"before": [ | |
"<leader>", | |
"a" | |
], | |
"commands": [ | |
"editor.action.quickFix" | |
] | |
}, | |
{ | |
"before": [ | |
"<leader>", | |
"f" | |
], | |
"commands": [ | |
"editor.action.formatSelection" | |
] | |
}, | |
{ | |
// VSCodeVim tricks!: | |
// gh - equivalent to hovering your mouse over wherever the cursor is. Handy for seeing types and error messages without reaching for the mouse! | |
"before": [ | |
"<leader>", | |
"q" | |
], | |
"commands": [ | |
"editor.action.showHover" | |
] | |
}, | |
{ | |
"before": [ | |
"<leader>", | |
"k" | |
], | |
"commands": [ | |
"editor.action.moveLinesUpAction" | |
] | |
}, | |
{ | |
"before": [ | |
"<leader>", | |
"j" | |
], | |
"commands": [ | |
"editor.action.moveLinesDownAction" | |
] | |
}, | |
{ | |
// VSCodeVim tricks!: | |
// gb - adds another cursor on the next word it finds which is the same as the word under the cursor. | |
"before": [ | |
"g", | |
"B" | |
], | |
"commands": [ | |
"editor.action.selectHighlights" | |
] | |
}, | |
{ | |
// VSCodeVim tricks!: | |
// af - visual mode command which selects increasingly large blocks of text. | |
"before": [ | |
"<leader>", | |
"w" | |
], | |
"commands": [ | |
"editor.action.smartSelect.expand" | |
] | |
}, | |
{ | |
"before": [ | |
"<leader>", | |
"W" | |
], | |
"commands": [ | |
"editor.action.smartSelect.shrink" | |
] | |
}, | |
{ | |
"before": [ | |
"<leader>", | |
"d" | |
], | |
"commands": [ | |
// "editor.action.duplicateSelection" | |
"editor.action.copyLinesDownAction" | |
] | |
}, | |
{ | |
"before": [ | |
"<leader>", | |
"s", | |
"r" | |
], | |
"commands": [ | |
"editor.action.refactor" | |
] | |
}, | |
{ | |
"before": [ | |
"<leader>", | |
"r", | |
"r" | |
], | |
"commands": [ | |
"editor.action.rename" | |
] | |
}, | |
{ | |
"before": [ | |
"<leader>", | |
"r", | |
"m" | |
], | |
"commands": [ | |
{ | |
"command": "editor.action.codeAction", | |
"args": { | |
"kind": "refactor.extract.function" | |
} | |
} | |
], | |
}, | |
{ | |
"before": [ | |
"<C-i>", | |
], | |
"commands": [ | |
"inlineChat.start" | |
] | |
}, | |
], | |
// operator pending mode | |
"vim.operatorPendingModeKeyBindings": [], | |
"vim.operatorPendingModeKeyBindingsNonRecursive": [ | |
{ | |
// y<leader>h / c<leader>h / ... | |
"before": [ | |
"<leader>", | |
"h" | |
], | |
"after": [ | |
"^" | |
] | |
}, | |
{ | |
"before": [ | |
"<leader>", | |
"l" | |
], | |
"after": [ | |
"$" | |
] | |
} | |
], | |
// | |
// [vim-surround](https://github.com/VSCodeVim/Vim#vim-surround) | |
// Add: y s <motion> <desired> | |
// Delete: d s <existing> | |
// Change: c s <existing> <desired> | |
// Add (visual mode): S <desired> | |
// | |
// Some examples: | |
// * "test" with cursor inside quotes type cs"' to end up with 'test' | |
// * "test" with cursor inside quotes type ds" to end up with test | |
// * "test" with cursor inside quotes type cs"t and enter 123> to end up with <123>test</123> | |
"vim.surround": true, | |
// | |
// [vim-easymotion](https://github.com/VSCodeVim/Vim#vim-easymotion) | |
"vim.easymotion": true, | |
// | |
// im-select | |
"vim.autoSwitchInputMethod.enable": true, | |
"vim.autoSwitchInputMethod.defaultIM": "1033", | |
"vim.autoSwitchInputMethod.obtainIMCmd": "C:\\Users\\kevinhuang\\.vscode\\extensions\\im-select.exe", | |
// [INSERT] 中文 > [NORMAL] 英文 > [INSERT] 中文 | |
// "vim.autoSwitchInputMethod.switchIMCmd": "C:\\Users\\kevinhuang\\.vscode\\extensions\\im-select.exe {im}", | |
// [INSERT] 中文 > [NORMAL] 英文 > [INSERT] 英文 | |
"vim.autoSwitchInputMethod.switchIMCmd": "C:\\Users\\kevinhuang\\.vscode\\extensions\\im-select.exe 1033 {im}", | |
// | |
// Profiles | |
"workbench.settings.applyToAllProfiles": [ | |
"workbench.colorTheme", | |
"window.commandCenter", | |
"workbench.navigationControl.enabled", | |
"workbench.sideBar.location", | |
"workbench.panel.showLabels", | |
"workbench.secondarySideBar.showLabels", | |
"editor.minimap.enabled", | |
"editor.bracketPairColorization.enabled", | |
"editor.guides.bracketPairs", | |
"editor.formatOnSave", | |
"workbench.iconTheme", | |
"workbench.tree.enableStickyScroll", | |
"editor.stickyScroll.enabled", | |
"editor.stickyScroll.defaultModel", | |
"editor.fontFamily", | |
"editor.fontLigatures", | |
"editor.fontSize", | |
"editor.lineHeight", | |
"git.blame.editorDecoration.enabled", | |
"git.blame.statusBarItem.enabled", | |
"diffEditor.ignoreTrimWhitespace", | |
"github.copilot.enable", | |
"chat.commandCenter.enabled", | |
"github.copilot.selectedCompletionModel", | |
"github.copilot.editor.enableAutoCompletions", | |
"github.copilot.editor.enableCodeActions", | |
"github.copilot.renameSuggestions.triggerAutomatically", | |
"workbench.commandPalette.experimental.askChatLocation", | |
"github.copilot.chat.search.semanticTextResults", | |
"editor.inlineSuggest.showToolbar", | |
"editor.inlineSuggest.syntaxHighlightingEnabled", | |
"github.copilot.nextEditSuggestions.enabled", | |
"editor.inlineSuggest.edits.allowCodeShifting", | |
"editor.inlineSuggest.edits.renderSideBySide", | |
"editor.inlineSuggest.edits.showCollapsed", | |
"github.copilot.chat.languageContext.typescript.enabled", | |
"github.copilot.chat.languageContext.fix.typescript.enabled", | |
"github.copilot.chat.languageContext.inline.typescript.enabled", | |
"github.copilot.chat.followUps", | |
"github.copilot.chat.localeOverride", | |
"github.copilot.chat.useProjectTemplates", | |
"github.copilot.chat.scopeSelection", | |
"chat.detectParticipant.enabled", | |
"github.copilot.chat.startDebugging.enabled", | |
"github.copilot.chat.setupTests.enabled", | |
"github.copilot.chat.generateTests.codeLens", | |
"github.copilot.chat.editor.temporalContext.enabled", | |
"inlineChat.holdToSpeech", | |
"inlineChat.finishOnType", | |
"inlineChat.accessibleDiffView", | |
"chat.agent.enabled", | |
"chat.agent.maxRequests", | |
"github.copilot.chat.agent.thinkingTool", | |
"github.copilot.chat.codesearch.enabled", | |
"github.copilot.chat.newWorkspaceCreation.enabled", | |
"github.copilot.chat.agent.runTasks", | |
"chat.mcp.enabled", | |
"chat.mcp.discovery.enabled", | |
"mcp", | |
"github.copilot.chat.edits.suggestRelatedFilesForTests", | |
"github.copilot.chat.edits.suggestRelatedFilesFromGitHistory", | |
"chat.editing.confirmEditRequestRemoval", | |
"chat.editing.confirmEditRequestRetry", | |
"chat.promptFiles", | |
"chat.promptFilesLocations", | |
"github.copilot.chat.testGeneration.instructions", | |
"github.copilot.chat.codeGeneration.useInstructionFiles", | |
"github.copilot.chat.codeGeneration.instructions", | |
"github.copilot.chat.reviewSelection.instructions", | |
"github.copilot.chat.commitMessageGeneration.instructions", | |
"github.copilot.chat.pullRequestDescriptionGeneration.instructions", | |
"editor.suggestSelection", | |
"editor.inlineSuggest.enabled", | |
"editor.suggest.showStatusBar", | |
"editor.suggest.insertMode", | |
"editor.inlayHints.enabled", | |
"remote.extensionKind", | |
"terminal.integrated.fontLigatures.enabled", | |
"terminal.integrated.shellIntegration.enabled", | |
"terminal.integrated.suggest.enabled", | |
"terminal.integrated.env.osx", | |
"livePreview.autoRefreshPreview", | |
"vim.enableNeovim", | |
"vim.neovimPath", | |
"vim.foldfix", | |
"editor.cursorSurroundingLines", | |
"editor.lineNumbers", | |
"vim.showMarksInGutter", | |
"vim.useCtrlKeys", | |
"vim.handleKeys", | |
"vim.visualstar", | |
"vim.highlightedyank.enable", | |
"vim.highlightedyank.color", | |
"vim.highlightedyank.duration", | |
"vim.useSystemClipboard", | |
"vim.hlsearch", | |
"vim.ignorecase", | |
"vim.incsearch", | |
"extensions.experimental.affinity", | |
"vim.leader", | |
"vim.surround", | |
"vim.easymotion", | |
"vim.autoSwitchInputMethod.enable", | |
"vim.autoSwitchInputMethod.defaultIM", | |
"vim.autoSwitchInputMethod.obtainIMCmd", | |
"vim.autoSwitchInputMethod.switchIMCmd", | |
], | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment