keymap统一车同轨书同文

一、尝试保持一致建立连接

想用一个计划,尝试统一IDE和编辑器之间Keymap的鸿沟。

经过一番折腾和思考。

如何做到 Vim、Emacs、Sublime、Vscode、Jetbrians他们的keymap统一呢?

实际上做不到。

我们看到过 Vscode里面有Sublime的keymap,Jetbrians里面有Vscode的keymap但是很少反过来。Emacs和Vim他们切换为Sublime的keymap。

因为Vim、Emacs他们底层依靠快捷键工作。

假设我们想实现目标,可以让所有IDE、编辑器切换为 Vim、Emacs的keymap,这样可以工作么?

是可以的。但是,不适用。

因为Vim和Emacs如果不加配置,他们默认的操作方式,只不过是按照 屏幕、段落、行、单词 的快速移动和简单编辑。

这些功能如果仅仅是简单修改个配置,他是可以使用的,编写英文文档也能帮上忙。

但是如果是编写代码,拿今天的角度还差点意思。

现代编辑器以Sublime以及以后开创的一些便捷的功能——跳转函数、跳转文件、多行编辑、快速高亮选定词同步更改……

实际上这些功能的使用频率很高。而多行编辑、或者简单的多行注释,在Vim和Emacs里相当复杂。

如果Vim和Emacs提供过插件补全了功能,那么问题将会变得复杂。多端将会无法统一。

好了,问题来了。

实际上,多端keymap的核心不是选定某个编辑器的快捷键方式,而是选中一种操作代码的快捷方式,我们要的不是行移动等基础操作,我们要的其实是——跳转函数、跳转文件、多行编辑、快速高亮选定词同步更改……

这些操作就像接口一样,被我们使用习惯了。

所以起到keymap承载作用的可以是 sublime的keymap

正好Jetbrains2021也官方支持了Sublime的keymap

在Windows和Mac中起到键位差距的其实是 Windows的Ctrl在Mac里几乎就是Command。

我们要做的就是 把Mac里面的 大写锁定替换为 Cmd, 在Windows/Linux里面 把大写锁定替换为 Ctrl。

使用默认的Sublime keymap,就可以让Sublime、Vscode、Jetbrians达到统一。

Sublime的快捷键也是十分必要和简单的。

至于Vim和Emacs 仅仅保留他们的基础操作,在命令行、服务器里作为简单修改配置的工具好了。不适合链接。

从此可以“车同轨、书同文”。

三个编辑器/IDE 在 Window、Mac、Linux上都可以达到写代码上的一致。

二、Linux上更改keymap

  1. CapsLock更换为Ctrl

sudo vim /etc/default/keyboard

将 XKBOPTIONS=”” 修改为

XKBOPTIONS="ctrl:nocaps"

可以查看 man 5 keyboard 获得帮助

使得配置生效

sudo dpkg-reconfigure keyboard-configuration

不过在Ubuntu20.04中要之后要真正重启才会生效

参考

Mark24

Everything can Mix.