我发现 vscode 几乎每个操作都有对应的命令,可以绑定到键上,而且when表达式更是强大,可以让相同的键绑定在不同的界面中拥有不同的功能,比如a在编辑器界面是在当前字符后插入的意思,在文件浏览器界面就可以是新建文件的意思,大大增加了可用性。
只需要极其简单的设置,vscode 的键绑定就可以和 neovim 大佬们精心调配的一样好用,有了这个还用啥 neovim,跟完全看不懂的 lua 说拜拜吧!
下面是我正在使用的键绑定设置,主要参考对象是AstroNvim,但并不完全一样,比如在 AstroNvim 里,代码动作的键绑定是<leader>la,vscode 里自带了ctrl+.,我觉得 vscode 自带的这个就很好用,所以就不改了。
下文中的
<leader>键指的是空格键
- 代码跳转
- 转到定义
gd - 转到引用
gr - 转到实现
gi - 回退到上一个位置
gb
- 转到定义
- lsp
- 代码格式化
<leader>lf - 变量重命名
<leader>lr - 定义速览
K - 代码动作
ctrl+.vscode 自带 - 代码诊断
ctrl+shift+mvscode 自带 - 代码折叠
zcvim 插件自带 - 代码展开
zovim 插件自带 - 代码全部折叠
<leader>zc - 代码全部展开
<leader>zo
- 代码格式化
- 搜索
- 全局搜索文件
<leader>ff - 全局搜索文字
<leader>fw - 全局搜索后聚焦到结果列表
enter - 从搜索结果列表回到搜索输入框
esc - 从搜索输入框回到编辑器
esc - 普通搜索
ctrl+fvscode 自带
- 全局搜索文件
- 当前编辑器
- 保存
<leader>w - 关闭
<leader>c - 退出 vscode
<leader>q
- 保存
- 编辑器组
- 上一个标签页
H - 下一个标签页
L - 上一个标签组
ctrl+h - 下一个标签组
ctrl+l - 移动到上一个标签组
<leader>H - 移动到下一个标签组
<leader>L - 关闭组内所有标签
<leader>gc - 缩小
ctrl+left - 扩大
ctrl+right
- 上一个标签页
- 文件操作
- 打开文件浏览器
<leader>e - 关闭文件浏览器
ctrl+bvscode 自带 - 在文件浏览器里上下浏览
jk - 打开文件
o或enter - 在新标签组打开文件
O - 新建文件
a - 新建文件夹
A - 删除
d - 复制
y - 剪切
x - 粘贴
p - 重命名
r - 刷新文件浏览器
R
- 打开文件浏览器
要应用这些键绑定只需要两个 json 文件,都是 vscode 自带的,一个是settings.json,另一个是keybindings.json。
在 vscode 里按ctrl+shift+p,搜索打开用户设置,选中首选项:打开用户设置 (JSON),就会打开settings.json文件。
在 vscode 里按ctrl+shift+p,搜索打开键盘快捷方式,选中首选项:打开键盘快捷方式 (JSON),就会打开keybindings.json文件。
在做代码跳转或切换标签页等操作时,我们都是在编辑器界面的 vim 插件里,所以这些键绑定由 vim 插件管理,配置写在settings.json里。
而在文件浏览器界面或搜索结果界面时,我们不是在 vim 插件里,vim 就管不了这里了,这些键绑定由 vscode 自身管理,配置写在keybindings.json里。
你可以将我提供的 json 文件里的内容手动复制出来,手动粘贴到你自己的配置文件里,一保存,好用的键绑定立刻就拥有了。