Skip to content

vim

向军大叔每晚八点在 抖音bilibli 直播

xj-small

从 vim 切换回来的朋友,可以通过安装 vim 插件来使用 vim 操作。

vim-sneak

在配置中开启vim-sneak 可以在页面中快速跳转

运动指令描述
s<char><char>输入 s 并按两个字母,向前查找,按;继续查找下一个
S<char><char>向后移到第一次出现
<operator>z<char><char>向前执行第一次出现
<operator>Z<char><char>向后执行到第一次出现

im-select

im-select 用于从 insert 模式切换为 normal 模式时自动切换为英文,请通过im-select 文档查看安装方式

插件配置

安装后需要在 vscode 的配置项中设置

选项说明
vim.autoSwitchInputMethod.enable是否开启使用默认输入法
vim.autoSwitchInputMethod.defaultIM默认输入法,请查看下表
vim.autoSwitchInputMethod.obtainIMCmdIm-select 路径 (使用默认值)
vim.autoSwitchInputMethod.switchIMCmd{im} 占位符的命令(使用默认值)

下面是苹果系统输入法表,系统开启输入法下在于下面表里其中之一

KeyDescription
com.apple.keylayout.USU.S.
com.apple.keylayout.ABCABC
com.apple.keylayout.BritishBritish
com.apple.keylayout.IrishIrish
com.apple.keylayout.AustralianAustralian
com.apple.keylayout.DvorakDvorak
com.apple.keylayout.ColemakColemak

window 系统如果您的键盘布局为 en_US,则输入法键为 1033,也可以在此页面上找到您的语言环境 ID

使用示例

大部分系统使用以下配置都可以正常使用

mac

json
"vim.autoSwitchInputMethod.enable": true,
"vim.autoSwitchInputMethod.defaultIM": "com.apple.keylayout.US",
"vim.autoSwitchInputMethod.obtainIMCmd": "/usr/local/bin/im-select",
"vim.autoSwitchInputMethod.switchIMCmd": "/usr/local/bin/im-select {im}"

windows

json
"vim.autoSwitchInputMethod.enable": true,
"vim.autoSwitchInputMethod.defaultIM": "1033",
"vim.autoSwitchInputMethod.obtainIMCmd": "D:\\bin\\im-select.exe",
"vim.autoSwitchInputMethod.switchIMCmd": "D:\\bin\\im-select.exe {im}"

热键配置

设置 leader 键为空格

image-20200613230043778

下面是对 VIM 定制的热键配置,首先需要打开配置文件

image-20200613225106155

MAC

下面是 MAC 系统的热键配置,你可以根据需要自行设置

[
  {
    "key": "cmd+e",
    "command": "-workbench.action.openRecent"
  },
  {
    "key": "cmd+e",
    "command": "extension.intellijRecentFiles",
    "when": "!inQuickOpen"
  },
  {
    "key": "cmd+e",
    "command": "workbench.action.quickOpenNavigateNext",
    "when": "inQuickOpen"
  },
  {
    "key": "cmd+e",
    "command": "workbench.action.quickOpenNavigateNext",
    "when": "inQuickOpen"
  },
  {
    "key": "shift+cmd+e",
    "command": "workbench.action.quickOpenNavigatePrevious",
    "when": "inQuickOpen"
  },
  {
    "key": "alt+escape",
    "command": "-editor.action.triggerSuggest",
    "when": "editorHasCompletionItemProvider && textInputFocus && !editorReadonly"
  },
  {
    "key": "alt+x",
    "command": "editor.action.toggleWordWrap"
  },
  {
    "key": "alt+z",
    "command": "-editor.action.toggleWordWrap"
  },
  {
    "key": "shift+cmd+o",
    "command": "-ftp.open"
  },
  {
    "key": "alt+1",
    "command": "workbench.action.terminal.focusPrevious"
  },
  {
    "key": "ctrl+shift+down",
    "command": "workbench.action.terminal.focusNext"
  },
  {
    "key": "shift+cmd+d",
    "command": "editor.action.revealDefinition",
    "when": "editorHasDefinitionProvider && editorTextFocus && !isInEmbeddedEditor"
  },
  {
    "key": "f12",
    "command": "-editor.action.revealDefinition",
    "when": "editorHasDefinitionProvider && editorTextFocus && !isInEmbeddedEditor"
  },
  {
    "key": "cmd+;",
    "command": "editor.action.openLink"
  },
  {
    "key": "cmd+j",
    "command": "workbench.action.toggleSidebarVisibility"
  },
  {
    "key": "cmd+b",
    "command": "-workbench.action.toggleSidebarVisibility"
  },
  {
    "key": "shift+cmd+r",
    "command": "workbench.files.action.collapseExplorerFolders"
  },
  {
    "key": "cmd+h",
    "command": "extension.dash.all",
    "when": "editorTextFocus"
  },
  {
    "key": "ctrl+alt+h",
    "command": "-extension.dash.all",
    "when": "editorTextFocus"
  },
  {
    "key": "cmd+k cmd+z",
    "command": "workbench.action.toggleZenMode"
  },
  {
    "key": "cmd+k z",
    "command": "-workbench.action.toggleZenMode"
  },
  {
    "key": "cmd+k cmd+h",
    "command": "workbench.action.toggleActivityBarVisibility"
  },
  {
    "key": "shift+cmd+k",
    "command": "editor.action.formatDocument",
    "when": "editorHasDocumentFormattingProvider && editorTextFocus && !editorReadonly && !inCompositeEditor"
  },
  {
    "key": "shift+alt+f",
    "command": "-editor.action.formatDocument",
    "when": "editorHasDocumentFormattingProvider && editorTextFocus && !editorReadonly && !inCompositeEditor"
  }
]

WINDOWS

下面是 WINDOWS 系统的热键配置,你可以根据需要自行设置

...

	"vim.sneak": true,
  "vim.commandLineModeKeyBindings": [],
  "vim.normalModeKeyBindingsNonRecursive": [
  {
    "before": ["s", "s"],
    "commands": ["workbench.action.files.save"]
  },
  {
    "before": ["z", "z"],
    "commands": [":wq"]
  },
  {
    "before": ["<leader>", "d"],
    "commands": ["editor.action.revealDefinition"]
  }
  ],
  "vim.insertModeKeyBindings": [
  {
    "before": ["j", "j"],
    "after": ["<Esc>"]
  }
  ],
  "vim.leader": "<space>",
  "terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe",
  "explorer.confirmDelete": false,
  "vim.useSystemClipboard": true,
  "vim.camelCaseMotion.enable": true,
  "vim.easymotion": true,
  "vim.highlightedyank.enable": true,
  "vim.easymotionMarkerForegroundColorTwoChar": "#ffffff",
  "vim.easymotionMarkerForegroundColorOneChar": "#ffffff",
  "vim.handleKeys": {
  "<C-a>": false,
  "<C-f>": false,
  "<C-c>": false,
  "<C-x>": false,
  "<C-v>": false
  }

...