从VSCode+Vim到Neovim的救赎:我是如何实现快捷键无缝迁移的?

背景:VSCode+Vim插件的痛点

在过去的两年里,我始终以「VSCode + Vim插件」作为主力开发环境。这种组合让我既能享受VSCode的插件生态与图形化调试能力,又能通过Vim模式保持编码效率。但随着时间的推移有如下问题:

  1. VSCode自身性能问题(对8起)

  2. 大文件卡顿,动辄2/3000 行的TypeScript文件类型审查(我承认代码屎)、习惯性的写完按下Command S保存自动格式化、等待自动补全触发建议 之类的时间让我感觉和天天坐牢没什么区别。

  3. Vim插件毕竟模拟器,支持的Vim功能有限

我曾多次尝试切换到终端Neovim,但总出于接下来某些个原因放弃了。

困境:性能与习惯的拉锯战

  1. 快捷键适应成本 ​:从踏入前端到今天这么多年,习惯了在Command修饰下快速打开文件,快速模糊搜索,快速这样那样的行为。GUI多用Command键修饰,Vim运行在终端侧,终端对Command键识别有限,Vim默认也没有Command修饰的快捷键,每次使用Ctrl修饰就算了,常用的功能快捷键也至少要按下3个键这让我无法接收。

  2. 配置地狱 ​:插件管理、LSP集成、Treesitter等等超多的配置需要反复试错,虽然有很多开箱即用的套餐,但是谁能情愿抛弃以前的习惯直接不修改使用它们的呢?配置过程中还会遇到很多快捷键冲突的问题,功能上稍有一些不如IDE的功能我都想解决掉它,这很容易又跌跌撞撞n久。

  3. Lua语言门槛 ​:从适合宝宝体质的JSON配置到LuaVimScript的跨度,以及社区文档的碎片化,这又对我(萌新)进行无情的打击。

  4. 爱美之心 ​:终端渲染效果远不如IDE,不论抗锯齿、图形库。终端能表达的内容有限,目前社区的主题色也不如VSCode插件市场丰富(在此给大佬们磕一个)。

  5. ...

救赎:我的解决办法

最近清明节期间,我实在是无聊想再试一次,根据之前的配置进度又进行了一些探索,又站在了性能焦虑肌肉记忆依赖的选择路口,不过这次我想到了一个解决办法。

在此之前我一直使用HHKB键盘,也习惯了使用Karabiner进行按键映射,像最常见的映射上下左右,我自己也配置了一些其他映射。但我之前没有想到可以通过改键的方式延续Command修饰快捷键,很快我就尝试了这个办法。

方案1:

我使用Karabiner 修改映射,实现使用VSCode搜索的快捷键映射触发telescope搜索快捷键,下面是Karabiner的配置:

json 复制代码
{
    "description": "cmd+shfit+f -> <leader>fw",
    "manipulators": [
        {
            "from": {
                "key_code": "f",
                "modifiers": {
                    "mandatory": [
                        "left_command",
                        "left_shift"
                    ],
                    "optional": [
                        "any"
                    ]
                }
            },
            "to": [
                {
                    "key_code": "spacebar",
                    "modifiers": []
                },
                {
                    "key_code": "f",
                    "modifiers": []
                },
                {
                    "key_code": "w",
                    "modifiers": []
                }
            ],
            "type": "basic"
        }
    ]
}

Nice~这很有效,但Karabiner它无法限制映射的生效范围,这个快捷键显然不是系统通用快捷键,配置了它之后在任何一个软件中都会触发这个映射,但是一旦思路打开了这很快就不是问题。

方案2:

我平时很喜欢找一些好玩好用的软件插件,我还有一个很常用的软件Keyboard Maestro,它可以实现类似的功能并且它可以限制触发范围,通过录制一个宏,再通过快捷键触发这个宏,这个宏间接的去调用折磨人的Vim快捷键就可以啦!

我先配置了在VSCode中常用的如下功能:

  1. 打开关闭文件目录(nvim-tree)
  2. 按名称搜索文件(telescope)
  3. 全局搜索(telescope)
  4. 在分屏和目录树中光标跳转(原生分屏功能)

它的配置方式很简单,以其中一个为例,首先左侧第一栏可以创建一个组统一限制这些宏都会在哪个app中触发,我这里选择的是iTerm,然后创建宏之后,右侧选择快捷键触发方式,这个快捷键是你习惯的快捷键,下面的执行动作设置为Vim晦涩的快捷键即可。

结尾

当配置好这些基础快捷键就能愉快的成为原始人了,VSCode中还有一些好用的快捷键目前没有调研Vim侧是否有可以代替的插件。另外这样配置还有一个好处是可以避免快捷键冲突,通过Command和Ctrl隔离,可以把一些Vim侧快捷键设置为使用频率不高的字符键,然后通过Command加高频键随意调用例如: Command a --> Ctrl mmi..

相关推荐
盗理者19 小时前
在win11 环境下 新安装 WSL ubuntu + 换国内镜像源 + ssh + 桌面环境 + Pyhton 环境 + vim 设置插件安装
ubuntu·ssh·vim
musk121219 小时前
vim 中快速删除引号中的字符串
linux·编辑器·vim
yyywxk1 天前
Linux / Windows 下 Mamba / Vim / Vmamba 安装教程及安装包索引
linux·windows·vim
竹之却2 天前
Linux Vim 编辑器的使用
linux·编辑器·vim
云心雨禅3 天前
Vim操作指令全解析
编辑器·vim·excel
go_bai3 天前
Linux环境基础开发工具——(2)vim
linux·开发语言·经验分享·笔记·vim·学习方法
Kusunoki_D3 天前
使用 VIM 编辑器对文件进行编辑
linux·编辑器·vim
有趣的我4 天前
vim的操作
编辑器·vim·excel
周Echo周6 天前
5、vim编辑和shell编程【超详细】
java·linux·c++·后端·编辑器·vim