{ "keyboard.dispatch": "keyCode", // For the code editor "editor.fontFamily": "'Hack', 'Droid Sans Mono', monospace", "workbench.colorTheme": "GitHub Dark Default", // For the integrated terminal "terminal.integrated.fontFamily": "'Hack', monospace" "vim.insertModeKeyBindings": [ { "before": [ "" ], "after": [ "" ], "commands": [ "workbench.action.files.save" ] } ], // Optional: If you use the non-recursive version (recommended for most simple mappings): "vim.insertModeKeyBindingsNonRecursive": [ { "before": [ "" ], "after": [ "" ], "commands": [ "workbench.action.files.save" ] } ], "workbench.colorCustomizations": { "[GitHub Dark]": { // Activity Bar (Left side) "activityBar.background": "#1f2428", // Keep dark to blend "activityBar.activeBorder": "#f85149", // Bright GitHub Red "activityBar.foreground": "#f85149", "activityBar.inactiveForeground": "#6e7681", // Status Bar (Bottom) "statusBar.background": "#da3633", // Deep GitHub Red "statusBar.foreground": "#ffffff", // Title Bar & Tabs "titleBar.activeBackground": "#1f2428", "tab.activeBorderTop": "#f85149", // Lists & Trees (File explorer highlights) "list.activeSelectionForeground": "#f85149", "textLink.foreground": "#f85149", "progressBar.background": "#f85149" } }, // Vim { // --- General Editor Settings (matching 'set' commands) --- "editor.lineNumbers": "relative", // set relativenumber "vim.useSystemClipboard": true, // set clipboard+=unnamedplus "editor.tabSize": 4, // set tabstop=4 shiftwidth=4 "editor.insertSpaces": true, // set expandtab "editor.wordWrap": "wordWrapColumn", // set tw=60 (approximate behavior) "editor.wordWrapColumn": 60, "editor.cursorSurroundingLines": 5, // set linespace / scrolloff behavior "files.autoSave": "afterDelay", // Replaces vim-auto-save plugin "files.autoSaveDelay": 1000, // set updatetime=1000 // --- Vim Extension Configuration --- "vim.leader": "", // let mapleader="\" "vim.hlsearch": true, // set hlsearch "vim.timeout": 350, // set timeoutlen=350 // --- Key Rebinding (Core) --- // Handle Ctrl key conflicts so Vim handles them, not VS Code "vim.handleKeys": { "": false, "": false, "": false // Let VS Code handle Quick Open (like fzf) }, // --- Core Editor Settings (from 'set' commands) --- // set background=dark // set relativenumber "editor.lineNumbers": "relative", // set expandtab "editor.insertSpaces": true, // set tabstop=4, set shiftwidth=4 "editor.tabSize": 4, // set tw=60 "editor.wordWrap": "wordWrapColumn", "editor.wordWrapColumn": 60, // set nofixendofline (this is the opposite of VS Code's default, so we disable the default) "files.insertFinalNewline": false, // set mouse=a "editor.mouseWheelZoom": true, // VS Code equivalent for mouse interaction // --- Language-Specific Settings (from 'autocmd FileType...') --- // autocmd FileType *css,...,typescriptreact,yaml set tabstop=2 shiftwidth=2 "[css]": { "editor.tabSize": 2 }, "[scss]": { "editor.tabSize": 2 }, "[html]": { "editor.tabSize": 2 }, "[javascript]": { "editor.tabSize": 2 }, "[javascriptreact]": { "editor.tabSize": 2 }, "[json]": { "editor.tabSize": 2 }, "[typescript]": { "editor.tabSize": 2 }, "[typescriptreact]": { "editor.tabSize": 2 }, "[yaml]": { "editor.tabSize": 2 }, // autocmd FileType go set noexpandtab sw=4 "[go]": { "editor.insertSpaces": false, "editor.tabSize": 4 }, // autocmd Filetype markdown set textwidth=55, formatoptions=... "[markdown]": { "editor.wordWrap": "wordWrapColumn", "editor.wordWrapColumn": 55, // The rest of 'formatoptions' (like cjMqtvw) is handled by extensions/VSCodeVim }, // autocmd Filetype groovy,Jenkinsfile,taskdata set tw=0 "[groovy]": { "editor.wordWrap": "off" }, "[jenkinsfile]": { "editor.wordWrap": "off" }, // --- VSCodeVim Settings (from 'vim.useSystemClipboard', 'let mapleader', 'nnoremap', etc.) --- // set clipboard+=unnamedplus "vim.useSystemClipboard": true, // set hlsearch "vim.hlsearch": true, // set smartcase "vim.smartcase": true, // set timeoutlen=350 "vim.timeout": 350, // set undofile "vim.undofile": true, // let mapleader="\" "vim.leader": " ", // nnoremap Q @@ "vim.normalModeKeyBindingsNonRecursive": [ { "before": ["Y"], "after": ["y", "$"], // Changed from 'yy' to 'y$' which is more idiomatic Vim "silent": true }, { "before": ["Q"], "after": ["@", "@"], // Last macro "silent": true }, { "before": [","], "after": ["z", "a"], // Toggle fold "silent": true }, { "before": ["'"], "after": ["`"], // Jump to horizontal position for mark "silent": true }, // nnoremap d d$ { "before": ["", "d"], "after": ["d", "$"] }, // nnoremap dl 0d$ { "before": ["", "d", "l"], "after": ["0", "d", "$"] }, // nnoremap k (Jump back) { "before": ["", "k"], "after": [""] }, // nnoremap j (Jump forward) { "before": ["", "j"], "after": [""] }, // nnoremap sp :sp { "before": ["", "s", "p"], "commands": [":split"] }, // nnoremap vs :vs { "before": ["", "v", "s"], "commands": [":vsplit"] }, // nnoremap vv :vsp ~/.vimrc (Translated to open settings.json) { "before": ["", "v", "v"], "commands": ["workbench.action.openSettingsJson"] }, // nnoremap yo :Goyo (Translated to Zen Mode) { "before": ["", "y", "o"], "commands": ["workbench.action.toggleZenMode"] } ] }