settins.json
{
// Vim
"vim.autoSwitchInputMethod.defaultIM": "normal",
"vim.cursorStylePerMode.replace": "underline-thin",
"vim.easymotion": true,
"vim.easymotionMarkerForegroundColorOneChar": "#ff6bcb",
"vim.foldfix": true,
"vim.highlightedyank.enable": false,
"vim.incsearch": false,
"vim.joinspaces": false,
"vim.leader": "<space>",
"vim.mouseSelectionGoesIntoVisualMode": false,
"vim.surround": false,
"vim.useCtrlKeys": true,
"vim.useSystemClipboard": true,
"vim.ignorecase": false,
"vim.autoindent": true,
"vim.insertModeKeyBindingsNonRecursive": [
{
"before": ["<C-n>"],
"commands": ["workbench.action.files.newUntitledFile"]
},
{
"before": ["<C-o>"],
"commands": ["workbench.action.files.openFile"]
}
],
"vim.visualModeKeyBindingsNonRecursive": [
{
"before": ["d"],
"after": ["\"", "_", "d"]
},
{
"before": ["<leader>", "d"],
"after": ["x"]
},
{
"before": ["<Tab>"],
"commands": ["tab"]
},
{
"before": ["<S-Tab>"],
"commands": ["outdent"]
},
{
"before": ["<leader>", "s"],
"commands": ["editor.action.sortLinesAscending"]
}
],
"vim.normalModeKeyBindingsNonRecursive": [
{
"before": ["d"],
"after": ["\"", "_", "d"]
},
{
"before": ["<leader>", "d"],
"after": ["d"]
},
{
"before": ["c"],
"after": ["\"", "_", "c"]
},
{
"before": ["<leader>", "c"],
"after": ["c"]
},
{
"before": ["D"],
"after": ["1", "0", "j"]
},
{
"before": ["U"],
"after": ["1", "0", "k"]
},
{
"before": ["<C-v>"],
"after": ["p"]
},
{
"before": ["<C-c>"],
"after": ["yy"]
},
{
"before": ["t", "a"],
"after": ["f", ">", "a"]
},
{
"before": ["t", "i"],
"after": ["f", ">", "i"]
},
{
"before": ["t", "c"],
"after": ["f", ">", "l", "c", "i", "t"]
},
{
"before": ["f", "f"],
"after": ["<leader>", "<leader>", "2", "s"]
},
{
"before": ["<leader>", "a"],
"after": ["g", "g", "^", "v", "G", "$"]
},
{
"before": ["Z", "Z"],
"after": ["z", "M", "z", "o"]
},
{
"before": ["q"],
"after": ["c", "t"]
},
{
"before": ["Q"],
"after": ["c", "i"]
},
{
"before": ["B"],
"after": ["F", "{", "a"]
},
// Command mapping
{
"before": ["<leader>", "l"],
"commands": ["workbench.action.navigateRight"]
},
{
"before": ["<leader>", "h"],
"commands": ["workbench.action.navigateLeft"]
},
{
"before": ["<leader>", "j"],
"commands": ["workbench.action.navigateDown"]
},
{
"before": ["<leader>", "k"],
"commands": ["workbench.action.navigateUp"]
},
{
"before": ["r", "h"],
"commands": [":nohl"]
},
{
"before": ["<C-space>"],
"commands": ["editor.action.triggerSuggest"]
},
{
"before": ["g", "v"],
"commands": ["editor.action.smartSelect.expand"]
},
{
"before": ["%"],
"commands": ["editor.emmet.action.matchTag"]
},
{
"before": ["u"],
"commands": ["undo"]
},
{
"before": ["<C-r>"],
"commands": ["redo"]
},
{
"before": ["Y"],
"commands": ["editor.action.clipboardCopyAction"]
},
{
"before": ["<leader>", "s"],
"after": ["v", "i", "{"],
"commands": ["editor.action.sortLinesAscending", "extension.vim_escape"]
},
{
"before": ["g", "b"],
"commands": ["workbench.action.navigateBack"]
},
{
"before": ["g", "f"],
"commands": ["workbench.action.navigateForward"]
},
{
"before": ["<S-l>"],
"commands": ["editor.action.smartSelect.expand"]
},
{
"before": ["z", "O"],
"commands": ["editor.unfoldAll"]
}
],
"vim.handleKeys": {
"<C-a>": false,
"<C-f>": false,
"<C-b>": false,
"<C-w>": false,
"<C-c>": false,
"<C-v>": false,
"<C-x>": false,
"<C-d>": false,
"<C-l>": false,
"<C-h>": false
},
// editor
"editor.fontFamily": "Cascadia Code",
"editor.fontLigatures": "'ss01', 'ss02', 'ss03', 'ss04', 'ss05', 'ss06', 'zero', 'onum'",
"editor.suggestSelection": "first",
"editor.columnSelection": false,
"editor.autoIndent": "advanced",
"editor.fontSize": 18,
"editor.fontWeight": 400,
"editor.tabSize": 2,
"editor.acceptSuggestionOnCommitCharacter": false,
"editor.accessibilitySupport": "off",
"editor.fastScrollSensitivity": 10,
"editor.bracketPairColorization.enabled": true,
"editor.colorDecorators": true,
"editor.cursorBlinking": "expand",
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.cursorWidth": 2,
"editor.formatOnSave": true,
"editor.inlineSuggest.enabled": true,
"editor.largeFileOptimizations": true,
"editor.lineNumbers": "relative",
"editor.mouseWheelZoom": true,
"editor.occurrencesHighlight": false,
"editor.renderControlCharacters": false,
"editor.renderLineHighlight": "all",
"editor.renderWhitespace": "none",
"editor.smoothScrolling": true,
"editor.suggest.insertMode": "replace",
"editor.suggest.preview": true,
"editor.wordWrap": "on",
"editor.unicodeHighlight.invisibleCharacters": false,
"editor.unicodeHighlight.ambiguousCharacters": false,
"editor.unicodeHighlight.includeComments": false,
"editor.codeActionsOnSave": {
"source.organizeImports": true
},
"editor.linkedEditing": false,
"editor.minimap.renderCharacters": false,
"editor.tokenColorCustomizations": {
"[Dyno Nguyen]": {
"textMateRules": [
{
"scope": ["string.quoted", "string.quoted.single"],
"settings": {
"foreground": "#d38a60"
}
},
{
"scope": "string.template",
"settings": {
"foreground": "#f9c9c9",
"fontStyle": "italic"
}
},
{
"scope": "meta.jsx.children",
"settings": {
"foreground": "#e5e5e5"
}
},
{
"scope": "support.class.component, variable.other.readwrite.alias",
"settings": {
"foreground": "#ee8d3e"
}
},
{
"scope": "variable.other.object.property.tsx",
"settings": {
"foreground": "#bd93f9"
}
},
{
"scope": "variable.other.property",
"settings": {
"foreground": "#56c8eb"
}
},
{
"scope": "meta.object-literal.key",
"settings": {
"foreground": "#39DAEB"
}
},
{
"scope": "keyword.operator.new",
"settings": {
"fontStyle": "italic bold"
}
}
]
}
},
"editor.quickSuggestions": {
"strings": true
},
"editor.unicodeHighlight.nonBasicASCII": false,
// Window & Workbench
"window.title": "${dirty}${activeEditorShort}${separator}${rootName}${separator}",
"window.menuBarVisibility": "hidden",
"window.titleBarStyle": "custom",
"window.customMenuBarAltFocus": false,
"window.enableMenuBarMnemonics": false,
"workbench.editor.enablePreview": false,
"workbench.activityBar.visible": true,
"workbench.editor.pinnedTabSizing": "compact",
"workbench.iconTheme": "material-icon-theme",
"workbench.startupEditor": "none",
"workbench.colorTheme": "Dyno Nguyen",
"typescript.tsserver.log": "off",
// formatter
"[jsonc]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[json]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[javascript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[javascriptreact]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[typescript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[typescriptreact]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[html]": {
"editor.defaultFormatter": "vscode.html-language-features",
"editor.matchBrackets": "never"
},
"[css]": {
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.matchBrackets": "always"
},
"[scss]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[php]": {
"editor.defaultFormatter": "bmewburn.vscode-intelephense-client",
"editor.tabSize": 4,
"editor.insertSpaces": true,
"editor.detectIndentation": true
},
"[java]": {
"editor.tabSize": 4,
"editor.defaultFormatter": "redhat.java"
},
"files.associations": {
"*.min.*": "plaintext"
},
// prettier
"prettier.singleQuote": true,
"prettier.jsxSingleQuote": true,
"autoprefixer.formatOnSave": true,
"prettier.trailingComma": "all",
"prettier.useTabs": true,
"prettier.arrowParens": "avoid",
// Indent
"indentRainbow.colors": [
"rgba(40, 54, 24,0.3)",
"rgba(38, 70, 83,0.25)",
"rgba(42, 157, 143,0.1)",
"rgba(233, 196, 106,0.1)",
"rgba(244, 162, 97,0.1)",
"rgba(231, 111, 81,0.1)",
"rgba(252, 163, 17,0.1)"
],
// emmet
"emmet.includeLanguages": {
"markdown": "html",
// "javascript": "javascriptreact",
// "typescript": "html",
"handlebar": "html",
"postcss": "css"
},
"emmet.triggerExpansionOnTab": true,
"emmet.showSuggestionsAsSnippets": false,
// git
"git.enableSmartCommit": true,
"git.decorations.enabled": true,
"git.autofetch": true,
// file browser
"files.exclude": {
"**/.git": true,
"**/.next": true,
"**/.svn": true,
"**/.hg": true,
"**/CVS": true,
"**/.DS_Store": true,
"**/node_modules/": true,
"**/.classpath": true,
"**/.project": true,
"**/.settings": true,
"**/.factorypath": true
},
"search.exclude": {
"**/node_modules": true,
"**/build": true,
"**/dist": true,
"**/.git": true,
"**/.vercel": true,
"**/.vscode": true,
"**/*.min.*": true
},
"explorer.compactFolders": false,
"explorer.confirmDelete": false,
"explorer.confirmDragAndDrop": false,
"eslint.alwaysShowStatus": true,
// Terminal
/*
"terminal.integrated.cwd": "${fileDirname}",
"terminal.integrated.defaultProfile.windows": "PowerShell",
"terminal.external.windowsExec": "C:\\Users\\Tuan\\AppData\\Local\\Microsoft\\WindowsApps\\wt.exe",
*/
"terminal.integrated.fontFamily": "MesloLGS NF",
"terminal.integrated.fontSize": 15,
"terminal.integrated.cursorStyle": "line",
"terminal.integrated.letterSpacing": 0.25,
"terminal.integrated.defaultProfile.linux": "zsh",
// Others Native settings
"breadcrumbs.icons": false,
"extensions.autoUpdate": false,
"extensions.ignoreRecommendations": true,
"keyboard.dispatch": "keyCode",
// Dyno File Utils
"dynoFileUtils.confirmDelete": false,
"dynoFileUtils.separator": " ",
"dynoFileUtils.expandSeparator": ",",
"dynoFileUtils.folderExclude": [
"node_modules",
".git",
"build",
"dist",
"bin",
"obj",
".",
"target",
"database",
"db",
"vendor"
],
"dynoFileUtils.openFile": true,
// Dyno translator
"dynoTranslator.apiKeys": "01096f862dmshab749da3b123256p141e60jsn73d461128bca",
"dynoTranslator.languageFrom": "en",
"dynoTranslator.languageTo": "vi",
// Others Extension
"auto-rename-tag.activationOnLanguage": [
"php",
"html",
"javascript",
"javascriptreact",
"typescript",
"typescriptreact",
"xml"
],
"color-highlight.markerType": "underline",
"color-highlight.markRuler": false,
"color-highlight.matchWords": true,
// highlight matching
"highlight-matching-tag.styles": {
"opening": {
"name": {
"surround": "#e5f560"
}
}
},
// PHP
"php.validate.executablePath": "/usr/bin/php",
"intelephense.format.enable": true,
// TailwindCSS
"tailwindCSS.emmetCompletions": true,
"tailwindCSS.colorDecorators": false,
"editor.minimap.enabled": false,
"terminal.integrated.shellIntegration.enabled": true,
"terminal.integrated.tabs.enabled": false
}
keybings.json
// Place your key bindings in this file to override the defaultsauto[]
[
// Matching vim mapping
{
"key": "alt+j",
"command": "editor.action.moveLinesDownAction",
"when": "editorTextFocus && !editorReadonly"
},
{
"key": "alt+k",
"command": "editor.action.moveLinesUpAction",
"when": "editorTextFocus && !editorReadonly"
},
{
"key": "shift+alt+j",
"command": "editor.action.copyLinesDownAction",
"when": "editorTextFocus && !editorReadonly"
},
{
"key": "shift+alt+k",
"command": "editor.action.copyLinesUpAction",
"when": "editorTextFocus && !editorReadonly"
},
{
"key": "alt+b",
"command": "workbench.files.action.showActiveFileInExplorer"
},
// Split pane and navigate
{
"key": "ctrl+left",
"command": "workbench.action.splitEditorLeft"
},
{
"key": "ctrl+right",
"command": "workbench.action.splitEditorRight"
},
{
"key": "ctrl+down",
"command": "workbench.action.splitEditorDown"
},
{
"key": "ctrl+up",
"command": "workbench.action.splitEditorUp"
},
{
"key": "ctrl+shift+w",
"command": "workbench.action.closeOtherEditors"
},
{
"key": "ctrl+shift+left",
"command": "workbench.action.terminal.resizePaneLeft"
},
{
"key": "shift+alt+right",
"command": "workbench.action.terminal.split",
"when": "terminalFocus && terminalProcessSupported"
},
{
"key": "ctrl+shift+right",
"command": "workbench.action.terminal.resizePaneRight"
},
// HTML wrap tag
{
"key": "alt+w",
"command": "editor.emmet.action.wrapWithAbbreviation"
},
{
"key": "shift+alt+w",
"command": "editor.emmet.action.updateTag"
},
// Others
{
"key": "ctrl+k ctrl+backspace",
"command": "editor.foldAll",
"when": "editorTextFocus && foldingEnabled"
},
{
"key": "ctrl+k ctrl+u",
"command": "workbench.action.openSnippets"
},
{
"key": "shift+win+z",
"command": "workbench.action.toggleZenMode"
},
{
"key": "ctrl+shift+/",
"command": "editor.action.blockComment",
"when": "editorTextFocus && !editorReadonly"
},
{
"key": "ctrl+shift+s",
"command": "workbench.action.files.saveFiles"
},
{
"key": "ctrl+,",
"command": "workbench.action.openSettingsJson"
},
{
"key": "ctrl+k ctrl+p",
"command": "workbench.action.pinEditor",
"when": "!activeEditorIsPinned"
},
{
"key": "ctrl+k ctrl+p",
"command": "workbench.action.unpinEditor",
"when": "activeEditorIsPinned"
},
{
"key": "alt+`",
"command": "workbench.action.closePanel"
},
{
"key": "alt+r",
"command": "cursorUndo",
"when": "textInputFocus"
},
{
"key": "alt+h",
"command": "workbench.action.previousEditor"
},
{
"key": "alt+l",
"command": "workbench.action.nextEditor"
},
{
"key": "alt+p",
"command": "extension.convert-to-pug"
},
{
"key": "shift+alt+left",
"command": "-editor.action.smartSelect.shrink",
"when": "editorTextFocus"
},
{
"key": "ctrl+shift+s",
"command": "-workbench.action.files.saveLocalFile",
"when": "remoteFileDialogVisible"
},
{
"key": "ctrl+shift+u",
"command": "-workbench.action.output.toggleOutput",
"when": "workbench.panel.output.active"
},
{
"key": "ctrl+shift+5",
"command": "-workbench.action.terminal.split",
"when": "terminalFocus && terminalProcessSupported"
},
{
"key": "ctrl+r",
"command": "-workbench.action.reloadWindow",
"when": "isDevelopment"
},
{
"key": "ctrl+r",
"command": "-workbench.action.openRecent"
},
{
"key": "ctrl+shift+right",
"command": "-cursorWordEndRightSelect",
"when": "textInputFocus && !accessibilityModeEnabled"
},
{
"key": "ctrl+,",
"command": "-workbench.action.openSettings"
},
{
"key": "ctrl+k ctrl+p",
"command": "-workbench.action.showAllEditors"
},
{
"key": "ctrl+k shift+enter",
"command": "-workbench.action.pinEditor",
"when": "!activeEditorIsPinned"
},
{
"key": "ctrl+k shift+enter",
"command": "-workbench.action.unpinEditor",
"when": "activeEditorIsPinned"
},
{
"key": "shift+right",
"command": "cursorRightSelect",
"when": "textInputFocus"
},
{
"key": "shift+right",
"command": "-cursorRightSelect",
"when": "textInputFocus"
},
{
"key": "shift+right",
"command": "cursorColumnSelectRight",
"when": "editorColumnSelection && textInputFocus"
},
{
"key": "shift+right",
"command": "-cursorColumnSelectRight",
"when": "editorColumnSelection && textInputFocus"
},
{
"key": "shift+alt+right",
"command": "editor.action.smartSelect.expand",
"when": "editorTextFocus"
},
{
"key": "shift+alt+right",
"command": "-editor.action.smartSelect.expand",
"when": "editorTextFocus"
},
{
"key": "ctrl+k ctrl+u",
"command": "-editor.action.removeCommentLine",
"when": "editorTextFocus && !editorReadonly"
},
{
"key": "ctrl+u",
"command": "-cursorUndo",
"when": "textInputFocus"
},
{
"key": "alt+l",
"command": "-toggleSearchEditorContextLines",
"when": "inSearchEditor"
},
{
"key": "ctrl+pageup",
"command": "-workbench.action.previousEditor"
},
{
"key": "ctrl+pagedown",
"command": "-workbench.action.nextEditor"
},
{
"key": "ctrl+k ctrl+c",
"command": "workbench.files.action.collapseExplorerFolders"
},
{
"key": "alt+t",
"command": "-dynoFileUtils.useTemplate"
},
{
"key": "alt+t",
"command": "dyno-translator.translate"
},
{
"key": "ctrl+alt+t",
"command": "dyno-translator.translator-box"
},
{
"key": "ctrl+m",
"command": "-editor.action.toggleTabFocusMode"
},
{
"key": "ctrl+m",
"command": "-extension.vim_ctrl+m",
"when": "editorTextFocus && vim.active && vim.use<C-m> && !inDebugRepl || vim.active && vim.use<C-m> && !inDebugRepl && vim.mode == 'CommandlineInProgress' || vim.active && vim.use<C-m> && !inDebugRepl && vim.mode == 'SearchInProgressMode'"
},
{
"key": "ctrl+m",
"command": "editor.action.toggleMinimap"
},
{
"key": "alt+c",
"command": "phpConstructor.insert"
},
{
"key": "ctrl+alt+n",
"command": "dynoFileUtils.newItemsAtCurrentPath"
}
]