输入法选择

一般个人习惯是在新机配置编辑环境前, 先配置下输入法。

可以使用rime, 来作为编辑环境的输入法。()

rime是一个可高度自定义的开源输入法,可以很轻松的根据自身需求来定制,从而提升日常效率。

推荐原因: 可满足个人需求的代码,中文,英文三模式快速切换。以及其他一些功能的自定义, 非常零活。

有同样需求的, 可参考下我的输入环境配置[链接]

日常使用相关

首先声明下,这只是个人的使用习惯,并不适用于所有人,毕竟选择vscode就是为了满足自身低门槛的可定制性需求; 对于养成你自己的习惯,也有如下建议,可以做为参考。
例如,可以在帮助(H)的编辑器操场,来寻找适合自己的习惯。或者先用起来,不合适在慢慢寻找调整,最终找到最符合自己的习惯。再或者,多自己去折腾寻找,查阅各种分享,都是可以的。

  • Ctrl+"space" 在 vscode 中的作用为 显示/隐藏 代码提示 。可更换其快捷键(如更换为Alt+"/"), 或修改win注册表禁用win系统对Ctrl+"space"快捷键的强制绑定, 或通过第三方键绑定来实现修改。
  • 关闭部分自动补全的触发时机
    • 关闭写函数时, 通过括号触发自动补全建议的确认。–由于这样很容易造成意外情况,因此关闭这个设置。

      在设置中搜索 “accept suggestion oncommit character”然后取消勾选即可

vscode中的快捷键及功能

常用的默认快捷键

多窗口间多文件间如何快速切换

快捷键 功能
Ctrl + B 打开/隐藏 侧边栏
Ctrl + "+"/"-" 放大/缩小 view
Ctrl+"space" 显示/隐藏 代码提示
(windows中和系统快捷键冲突,故本人修改为Alt+"/")

(通过注册表禁用系统自身对此快捷键的强绑定[方法链接])

通过第三方的键绑定软件间接映射实现
Ctrl+Shift+"space" 显示/隐藏 代码提示(参数提示)
Ctrl+o 从打开文件中返回(和vim中的gd配合使用)
终端中: code+文件名 在终端中用code打开文件
Alt+"鼠标左键" 实现任意位置 多光标 (与vim中的Ctrl+v模式, 那个方便用哪个)
一个必用的快捷键:Ctrl+Shift+P
输入的命令参数
功能
> zen 进入/退出 zen模式
> 侧边栏中已载入文件的文件名 打开对应文件(在vscode中,打开文件的方法很多,因此我很少使用vim中底线命令模式下e+"文件名"的方式来打开文件
单窗口已打开的多文本文件
快捷键
功能
Alt+"1~9" 在已打开的文本文件中切换(也就1~4 常用)
Ctrl+tapCtrl+Shift+tap
个人习惯用vim下的gtgT
在已打开的文本文件中切换(常用方法 Ctrl不松,不断tap来切换)
多窗口
Ctrl+0 进入侧边栏(0窗口)
Ctrl+"1~9" 从左依次往右的窗口(不怎么上下分窗口,故无验证。这里仅提到涉及左右的切换)
终端
Ctrl+反引号 打开/关闭终端)
新增,切换等 可根据自身需求来自定义终端间的切换、新增等快捷
code + fileName 在当前vscode窗口中打开文件 (若文件不存在会自动新建)

自定义快捷键,满足个人需求(附详细过程)

1
2
对于已知某个快捷键对应某项功能时, 想要在此功能的现有快捷键上新增键绑定。 有可能遇到重复的键绑定过多而无法确定此项功能的"键绑定ID"的情况
此时我们可以找一个无任何功能绑定的快捷键组合(如"Ctrl+小数字键盘1~9"), 用来给重复列表的所有功能遍历排除, 找到对应"键绑定ID"后, 再通过"无任何功能绑定的快捷键组合"对遍历造成无关功能的快捷键新增逐一重置即可。

多窗口间如何更快速定位/切换

  • 标签换行

    • 打开设置, 搜索Wrap tabs, 勾选即可。 -> 很久以前也有插件的方法, 不过这是官方更新、比较方便。
  • Ctrl+Shift+p 打开命令面板

    打开后,可输入想要使用的命令, 其另一个快捷键为F1, 已被本人删除。 因为之前在Qt和Visual Studio上习惯用F1跳转api文档,故通过用户任务+第三方语言插件+键绑定为F1实现了此功能(部分api无法跳转,还未解决,故实用性还较弱,不再此说明…)

    • 绑定命令面包开启后,上下移动相关的快捷键,方便使用键盘直接上下移动选择,以及确认动作(主要是由于vim后遗症)
      • 只是上下选择, 需要确认后才打开(推荐)

        • 上移 workbench.action.quickOpenSelectPrevious 的键绑定为Ctrl+P when表达式内容 inQuickOpen
        • 下移 workbench.action.quickOpenSelectNext 的键绑定为Ctrl+N when表达式内容 inQuickOpen
        • 确认 workbench.action.acceptSelectedQuickOpenItem 的键绑定为Ctrl+space when表达式内容 inQuickOpen。 (win平台下使用Ctrl+space需修改注册表,或通过第三方键绑定来映射)
      • 选择后自动直接打开, 不需要确认(不建议)

        • 上移 workbench.action.quickOpenNavigatePrevious 的键绑定为Ctrl+P when表达式内容 inQuickOpen
        • 下移 workbench.action.quickOpenNavigateNext 的键绑定为Ctrl+N when表达式内容 inQuickOpen
  • Ctrl+q 打开视图面板(用于跳转vscode界面的一切窗口,非常有用)

    ctrl+shift+p使用建议一样,建议选择非自动打开的

    • workbench.action.openView 的键绑定为Ctrl+q(我习惯绑定Ctrl+0) 用于打开面板,默认绑定的哪个是自动确认选择并立即消失的,把另一个无配置的做相同绑定后,解除自动确认选择,改为手动上下+确认
    • workbench.action.quickOpenNavigateNextInViewPicker 的键绑定为Ctrl+N 用于代替下箭头按键
    • workbench.action.quickOpenNavigatePreviousInViewPicker 的键绑定为Ctrl+P 拥有代替上箭头按键
    • workbench.action.acceptSelectedQuickOpenItem 的键绑定为Ctrl+space when表达式内容 inQuickOpen

总结: 通过以上命令,可随意在各个窗口中有来有回,使用键盘快速定位到想要操作的一切文件。

  • 代码书写优化,增加Ctrl+space作为接受代码建议的快捷键

    • acceptSelectedSuggestion 的键绑定改为 Ctrl+space(需改注册表 或 通过第三方键绑定,如先改键绑定为Alt+NumPad7, 再由可进行键绑定的第三方软件(win下如PowerToys)进行快捷键映射, 最终实现Ctrl+space的绑定)
  • 代码书写优化,增加enter关闭代码建议窗口(原作用为 接受建议快捷键)

    由于平时输入法打字习惯使用回车来取消选择, 故做此配置

    • hideSuggestWidget 的键绑定添加 enter (可在命令面板打开首选项:打卡键盘快捷方式(JSON))
  • 代码错误提示快速修复的选择快捷键, 新增”Ctrl+p”和”Ctrl+n”以及确定用的”Ctrl+space”(以便更符合vim用户的习惯)

    键绑定id分别是”selectPrevCodeAction”和”selectNextCodeAction”以及 “acceptSelectedCodeAction”

    • 在原有键绑定上新增即可,手把手过程略(过于简单)
  • 代码书写优化,增加格式化代码的快捷键(借鉴vim此功能的键位==,并使用vscode的Api简化其操作)

    • ctrl+shift+p打开命令面板, 搜索’打开键盘快捷方式’等关键字来打开快捷键配置的json文件keybindings.json

    • 添加以下配置

      1
      2
      3
      4
      5
      6
      // 格式化代码
      {
      "key": "oem_plus oem_plus", //向vim自带的那样使用, "==" 来格式化代码, 这里直接将"=="映射至vscode的全局格式化api, 以达到日常使用格式化时抛弃ggVG。
      "command": "editor.action.formatDocument",
      "when": "editorTextFocus && vim.active && !inDebugRepl && vim.mode != 'Insert'"
      },

必用插件(vscodevim)的使用,所带来的快捷键

单窗口单文件内如何快速定位

单窗口多文件间的快速切换

对于单文件文本相关的快捷键操作,我习惯使用vim插件代替vscode原有的快捷键:(弃用Vim插件相关的快捷键可在设置中搜索 Vim:Handle keys编辑其json文件来弃用

阅读说明:

  • 只会列出常用且已完善的
  • --·--> –·–> 代表解释
  • () –·–> 代表补充说明
  • 命令模式/可视模式 下:

    • esc –.–> 进入命令模式

      在命令模式下使用v –.–> 进入可视模式

      • 单词
        • w –·–> 定位光标至后面一个单词开头
        • b –·–> 定位光标至前面一个单词开头
        • e –·–> 定位光标至本单词末尾
      • 单句 (单句,指的就是不包括单行内行首行尾的空格)
        • ^ –·–> 定位光标至本句 的 句首 (不需要句尾,因为用不到)
      • 单行 (单行,指的就是包括单行内的所有空格)
        • $ –·–> 定位光标至本行 的 行尾 (记忆Shift+4也行,个人习惯记忆$)
        • 0 –·–> 定位光标至本行 的 行首
      • 多字母与多行
        • k –·–> 定位光标至 上一行 ↑
        • j –·–> 定位光标至 下一行 ↓
        • h –·–> 定位光标至 前一个字母(或空格) ←
        • l –·–> 定位光标至 后一个字母(或空格) →
      • 单屏幕
        • H –·–> 定位光标至 屏内顶行
        • L –·–> 定位光标至 屏内底行
        • M –·–> 定位光标至 屏内中间行
      • 单文件
        • gg –·–> 定位光标至 文件开头 (全文件第一行)
        • G –·–> 定位光标至 文件末尾 (全文件最后一行)
      • 文件内浏览
        • Ctrl+d –·–> 光标下移半屏 (也可以理解为 “将文本上翻半屏”) (记忆技巧 down)
        • Ctrl+u –·–> 光标上移半屏 (也可以理解为 “将文本下翻半屏”) (记忆方法 up)
        • Ctrl+e –·–> 文本上滚 (下拉 滑鼠条 效果)
        • Ctrl+y –·–> 文本下滚 (上拉 滑鼠条 效果)
        • Ctrl+f –·–> 光标下移整屏 (也可以理解为 “将文本上翻整屏”) –·–> 在vim下弃用 (众所周知,vscode中Ctrl+f为简单搜索快捷键,故同时弃用了–·–>vim中底线命令模式下的搜索功能)
        • Ctrl+b –·–> 光标上移整屏 (也可以理解为 “将文本下翻整屏”) –·–> 在vim下弃用 (众所周知,vscode中Ctrl+b为 显示/隐藏 侧边栏)
      • 其他
        • ~ –.–> 大小写切换
        • /+搜索内容 –.–> 搜索内容(enter后配合N/n来上下选择)(其中搜索内容还可以是正则表达式)
        • :s/搜索内容/替换字符串/ –.–> 替换内容(其中搜索内容还可以是正则表达式)
        • gh –·–> 打开 代码注释标签页小窗口(代码小窗口无法通过快捷键来操作, 官方vscode也并无支持此功能的意愿, 暂时使用此方案平替)
        • gd –·–> 进入代码块 (相当于goto进去)
        • ctrl+o –.–> 从定义文件返回,关闭函数标签显示
        • gt –.–> 向右侧切换文件(gT向左侧切换->我自定义了同样功能的tg快捷键->因为我认为tg使用起来比gT方便的多)
        • f+需要跳转的字符 –.–> 光标定位至第一个匹配项(F反向匹配跳跃)
        • t+需要跳转的字符 –.–> 光标定位至第一个匹配项的前一项(F反向匹配跳跃)
        • \\s+需要跳转的字符 –.–> 进入跳转视图,会将匹配到的所有符合条件字符用其他字母高亮显示出来,输入对于位置的高亮字符,即可完成快速的光标定位
        • ds+现有符号 –.–> 删除光标所在区域两侧所能匹配到的一组现有符号
        • di+现有符号 –.–> 删除光标所在区域两侧所能匹配到的一组现有符号内的所有字符(不包括符号)
        • da+现有符号 –.–> 删除光标所在区域两侧所能匹配到的一组现有符号内的所有字符(包括这组符号)
        • m+小写数字或字母 –.–> 标记单文件书签 (如ms)
        • m+大写数字或写字母 –.–> 标记可多文件间跳转的书签 (如mS)
        • 单引号+所标记的-大/小写->数字或字母 –.–> 跳转到此书签所在行 (如's's)
        • 反引号+所标记的-大/小写->数字或字母 –.–> 跳转到此书签所在列 (如's's)
        • >><< –.–> 对整行代码,缩进所缩退(多行时,前面+n->n代表数字即可)(或在可视模式下,选择多行后,单个><即可)
        • 数字+两个等号 –.–> 对多行进行自动缩进,常用n==(n代表数字)来局部排版
        • gg+v+G+两个等号 –.–> 对整篇文档进行自动缩进,常用来整篇排版
  • 底线命令模式

    • esc –.–> 进入命令模式

      在命令模式下使用 : –.–> 进入底线命令模式

      • w –.–> 保存当前文件
      • q –.–> 退出当前文件
      • wq –.–> 保存并退出当前文件
      • !q –.–> 强制退出当前文件
      • s/搜索内容/替换字符串/ –.–> 替换内容(其中搜索内容还可以是正则表达式)
      • marks –.–>查看当前文件我们可以跳转的标记书签,还可以选择对应书签进行跳转(不过这样跳转有bug,主要还是查看用)
      • delmarks+所标记的-大/小写->数字或字母 –.–> 删除对应书签(删除多个书签时, 使用space空格隔开即可) delmark或delmarks都可以。
  • 插入模式下:

    • esc –.–> 进入命令模式

      在命令模式下,根据自身需求通过 i、o、a、I..... 进入插入模式

      此模式中提到的快捷键, 大多为vscode的原生配置

      • 代码提示相关:

        • tap 或 enter –·–> 确认选择此提示
        • ctrl+p –·–> 提示选择上移 (记忆技巧up/prev) (键绑定中搜索 showPrevParameterHint,然后添加 ctrl+P 快捷键 以达到代码提示向上切换)
        • ctrl+n –·–> 提示选择下移 (记忆技巧down/next) (键绑定中搜索 showNextParameterHint,然后添加 ctrl+n 快捷键 以达到代码提示向下切换)
        • ctrl+"space" –·–> 显示/隐藏 代码提示 (在windows中,此快捷键和系统快捷键冲突,故本人修改为 Alt+”/“, 搜索”触发建议”修改其键绑定)(之后又将其切换了回来、有两种实现方法:1.修改注册表、2.映射键绑定)
      • 代码格式提示相关: (参数提示)

        • ctrl+Shift+"space" –·–> 显示/隐藏 代码格式提示(参数提示)(搜索”触发参数提示”可修改其键绑定)
        • ctrl+p –·–> (键绑定中搜索 showPrevParameterHint, 然后添加 ctrl+p 快捷键 以达到参数提示上翻页)
        • ctrl+n –·–> (键绑定中搜索 showNextParameterHint, 然后添加 ctrl+n 快捷键 以达到参数提示下翻页)
      • 代码书写优化,增加Ctrl+space作为接受代码建议的快捷键

      • 代码书写优化,增加enter关闭代码建议窗口(原作用为 接受建议快捷键)

  • 可视模式:

    • esc –.–> 进入命令模式

      在命令模式下使用v –.–> 进入可视模式

      • shift+s+符号/任意字符 –.–> 对所选中部分的两侧, 添加符号/任意字符
      • gb –.–> 多光标,每操作一次都对相同的其他选项添加一个光标
      • ctrl+v –·–> 进入可视模式(列编辑)
        • Shift+i/a/d –·–> 在ctrl+v下, 插入或删除操作, 注意加Shift
      • iw –·–> 选中光标所在位置的单词(不包含两边空格)(相当与你在命令模式下 删除单词时使用的 diw, 相似的命令模式下命令 还有 di + '/"/)/t(代表html标签)/……所有对称的结构 )
      • aw –.–> 选中光标所在位置的单词(包含两边空格)

  • vim插件配置中英自动切换

    安装vim(vscodevim)

    • 配置中英文切换(和vim中 xkbswitch插件一样的效果)
      • 打开其配置设置,搜索:im-select
      • 找到配置按官网文档操作即可
      • 这里给出windows下的配置过程(仅供参考)
        • 第一步,下载其提供的im-select.exe应用程序
        • 第二步,在电脑上添加英语语言(这里国家选择美国)
        • 第三步,在vscodevim的设置中,加入exe路径并使能自动输入法的切换,然后切换到1033(第二步选英语美国的话,这里是1033,其他的自行查阅文档)\
  • vim插件配置tg来代替gT使用、 以及利用vim配置ge快捷键(来代替vscode原生Alt+F8显示错误提示的快捷键)

    • 通过Ctrl+Shift+p打开命令面版后, 搜索打开用户设置,来打开用户配置文件sttings.json

    • sttings.json中添加如下代码段即可:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      "vim.normalModeKeyBindings": [
      // ( 将 gt 倒过来最有性价比)
      // vim插件配置`tg`来代替`gT`使用
      {
      "before": [ "t", "g" ],
      "commands": [ ":tabp" ]

      },

      //////////////////////////////////////////////////////////////////////////

      // vim配置`ge`来用于显示错误提示
      // // 增加查看错误提示快捷键(vscode默认为 Alt+F8)(我想将其设置为vim命令行和可视模式下的 ge)
      {
      "before": ["g", "e"],
      "commands": ["testing.goToNextMessage"] // 测试: 转到“下一个测试失败”
      },
      {
      "before": ["g", "e"],
      "commands": ["editor.action.marker.next"] // 转到下一个问题 (错误、警告、信息)
      }

      ],
  • vim插件配置: 用快捷键’gl’来完成代码块折叠状态的切换(vscode中此功能的默认快捷键为Ctrl+k+l, 操作比较繁琐)

    • 通过Ctrl+Shift+p打开命令面版后, 搜索打开用户设置,来打开用户配置文件sttings.json

    • sttings.json中添加如下代码段即可:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      "vim.normalModeKeyBindings": [

      // // 增加快捷键 gl 来切换本级的代码块折叠状态
      {
      "before":["g","l"],
      "commands": ["editor.toggleFold"] // 切换本级的代码块折叠状态
      },

      ],
    • 最后打开vscode_vim的设置, 搜索vim:Foldfix后,勾选所搜索到的选项, 避免通过键盘移动光标的过程中, 已折叠的代码块被自动展开。

      为避免大家勾选错误,下方提供所勾选的配置截图:

  • vim插件配置: 用键盘模拟鼠标悬停的快捷键’gh’
    vscodevim虽然提供了这一快捷键,但是此快捷键的功能并不完善(最开始是合并自一个个人需求所提的pr)

    • 目前发现gh悬停功能的问题:

      • 无法在调试代码的过程中较为方便的使用(存在容易快速消失的情况)
      • 无法在可视模式下使用(仅提供了命令模式下的悬停操作, 但覆盖不了我的某些应用场景:比如需要利用翻译插件翻译一些选中的内容时,需要其悬停显示, 此时无法触发悬停)
    • 至于为什么会存在这些问题,如下图所示:

      此处源码链接:[点击进入](https://github.com/VSCodeVim/Vim/blob/c3dd400854b254a1528f29cbd97df934391cac56/src/actions/commands/actions.ts)
    • 如何解决?

      • 第一种解决方案: Fork源码, 维护自己的版本使用, 顺便提个pr。不建议,毕竟这种根修改错别字一个级别的小事没必要提Pr,而且加上这只是小众需求,也不太可能被采纳。可是如果不提Pr, 避免不了之后遇到vscodevim更新时得自行合并手动更新的无奈行为, 无法一劳永逸
      • 第二种解决方案: 直接利用vscodevim插件暴露出的配置快捷键功能映射的API来实现一切你想要的自定义功能。推荐此种做法,这样一来,配合vscode的同步机制,直接一劳永逸
        • 通过Ctrl+Shift+p打开命令面版后, 搜索打开用户设置,来打开用户配置文件sttings.json

        • sttings.json中添加如下代码段即可:

          1
          2
          3
          4
          5
          6
          7
          8
          9
          10
          11
          12
          13
          14
          15
          16
          17
          18
          19
          20
          21
          22
          // 在此处配置可以达到,不影响原有快捷键功能的情况下, 给快捷键绑定新功能
          "vim.normalModeKeyBindingsNonRecursive": [
          {
          "before": ["leader", "g", "h"],
          "commands": ["editor.debug.action.showDebugHover"] // 使得调试代码时,也可以正常使用gh触发悬停
          },
          ],
          // 绑定vim可视模式下的快捷键
          "vim.visualModeKeyBindings": [
          {
          "before": ["g", "h"],
          "commands": ["editor.action.showHover"] // 使得可以在可视模式下使用gh触发悬停
          },

          ],
          // 在此处配置可以达到,不影响原有快捷键功能的情况下, 给快捷键绑定新功能
          "vim.visualModeKeyBindingsNonRecursive": [
          {
          "before": ["g", "h"],
          "commands": ["editor.debug.action.showDebugHover"] // 使得调试代码时,可以进一步在可视模式下使用gh触发悬停
          },
          ],
  • 加持vim插件后的markdown相关插件推荐

    可移步vscode 插件 markdown 篇

插件(Docs View),配合vim的实现全键盘

  • 安装此插件Docs View
  • 设置辅助侧边栏打开/关闭的快捷键
    • 通过Ctrl+Shift+p打开命令面版后, 搜索打开键盘快捷方式,来打开键盘快捷键配置文件keybindings.json

    • keybindings.json文件中添加如下代码段即可

      1
      2
      3
      4
      5
      6
      /////////////////////////////////////////////////////////////////////////////////////////
      // 增加辅助侧边栏的打开快捷键
      {
      "key": "ctrl+k ctrl+k",
      "command": "workbench.action.toggleAuxiliaryBar"
      },
    • 配置完成并保存后, 即可通过刚刚设置的快捷键ctrl+k ctrl+k , 来打开辅助侧边栏

    • 我们将原有侧边栏->资源管理器下,插件Docs view默认位置组件DOCUMENTATION拖动至我们的辅助侧边栏

    • 到此为止配置完成, 之后可通过ctrl+k ctrl+k, 来打开和关闭辅助侧边栏, 此时辅助侧边栏的内容就是我们的卡片提示内容

看了以上插件的使用后, 其余插件都可有按此方法, 按自己的需求搜索, 通过翻阅其插件的介绍页,深入使用; 基于vscode强大的第三方插件库生态, 基本没有找不到的插件(没有时还可以自己写), 唯一缺点就是插件的性能参差不齐,有些消耗性能的插件甚至会拖慢vscode的启动和运行速度。

比如git相关就直接搜 git、ssh相关就直接搜ssh、docker相关…、mikefile相关…、cmake相关…、C/C++相关…、lua相关……等,然后先浏览下载量最高的插件的介绍页,然后下载使用即可。

……

……

vscode的ctrl+f的正则搜索举例

1、vscode原生ctrl+f 搜索替换功能 结合正则表达式的捕获替换功能

  • 准备如下例子, 现在的需求是将路径作用介绍之间的一个空格,替换为->符号(注意:不能替换掉其他地方的空格)

    1
    2
    3
    4
    5
        /etc/passwd 存放账户信息
    /etc/shadow 存放用户密码
    /etc/sysconfig/network-scripts/ifcfg-ethx ethx网卡配置
    /etc/resolv.conf 指定dns服务器ip
    /etc/hosts 主机名和IP地址对应文件
    • 那么我们按下ctrl+f,并在搜索框中打开正则表达式模式
    • 然后在搜索框输入([a-z]+)(\s{1})
    • 最后,在替换框输入$1->来完成我们的目的
  • 我们看下替换的结果:

    1
    2
    3
    4
    5
        /etc/passwd   ->     存放账户信息
    /etc/shadow -> 存放用户密码
    /etc/sysconfig/network-scripts/ifcfg-ethx -> ethx网卡配置
    /etc/resolv.conf -> 指定dns服务器ip
    /etc/hosts -> 主机名和IP地址对应文件
  • 不难看出,我们的目的已经实现了,同时,一定要注意,不用再vscode原生ctrl+f正则搜索替换框里使用(?<name>w+)类的正则命名语法, 貌似支持的不完善(总之本人没摸索到这个场景下正则命名功能的正确用法)