从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..

相关推荐
添砖java‘’13 小时前
vim高效编辑:从入门到精通
linux·编辑器·操作系统·vim
呱呱巨基2 天前
vim编辑器
linux·笔记·学习·编辑器·vim
嵌入式小能手2 天前
飞凌嵌入式ElfBoard-Vim编辑器之Vim常用操作命令
linux·编辑器·vim
aesthetician2 天前
Node.js v25 重磅发布!革新与飞跃:深入探索 JavaScript 运行时的未来
javascript·node.js·vim
水月wwww3 天前
操作系统——进程管理
linux·操作系统·vim·进程·进程调度
初听于你3 天前
深入了解—揭秘计算机底层奥秘
windows·tcp/ip·计算机网络·面试·架构·电脑·vim
叶落阁主4 天前
IdeaVim 新插件推荐- Vim CmdFloat 优化搜索/命令执行框
pycharm·vim·intellij idea
爱吃生蚝的于勒4 天前
【Linux】零基础学会linux环境基础开发工具使用(yum,vim,makefile,gdb)
linux·服务器·数据结构·c++·蓝桥杯·编辑器·vim
2401_837088504 天前
Redis的vim基本操作
linux·编辑器·vim
@realXuan5 天前
实践 3:Vim 编辑器的使用
linux·vim