我常用的 MacOS 的快捷键是:
- 编辑快捷键,包括
Ctrl+P/N/A/E,分别代表 上一行/下一行/跳到行首/跳到行尾,还有一些全选复制粘贴之类的Cmd+Z/A/X/C/V。 - 窗口快捷键,包括
Cmd+T/W/Q分别是 新标签页/关闭当前页面/关闭当前程序。
最近切换到 Windows 11 感到甚是不便,于是使用了 PowerToys 来做了键盘映射。
PowerToys
下载安装之后,最好使用管理员模式运行。这是一个开源软件,所以一般来说不用担心它有什么不轨的行为。
开启“键盘管理器”功能,在里面做映射。
这里面有两个部分:
- 第一个是“按键”,这个部分可以把一个键映射成另一个键,我用它来交换了
Caps Lock和Ctrl的位置,这是多年使用 HHKB 的习惯。 - 第二个是“快捷键”,这个部分可以把一些组合键映射到另一个组合键。上面所说的这些 Ctrl 开头的快捷键都在这里做映射。
在“快捷键”的映射界面里,有几个选项:
- “组合键”是指像 Emacs 那样的快捷键。例如“先按下 Ctrl+X 再按下 Ctrl+F”=打开文件。如果不打开组合键功能,就只能映射单个快捷键,类似“Ctrl+P”=上一行。
- “精确匹配”:当按下了多余的按键的时候,映射是否起作用。比如我映射了“Ctrl+P”=上一行,那么我按下“Ctrl+P+A”的时候,精确匹配开启的情况下就不会触发这个映射。
一些难点
关于 Cmd 和 Win 键
一般我们认为,
Option=Alt,Cmd=Win,而 Ctrl 是一样的。在 Windows 下, Cmd 的很多组合键被放在了 Ctrl 上,所以我们需要把 Win+映射到 Ctrl+ 上。
如果这样想就错了。在物理上,Alt 其实是在 Cmd 的位置,而 Win 是在 Option 的位置。那么我们可以把 Alt+<Key> 映射到 Ctrl+<Key> 上,这样不仅可以少做一个“交换 Win 和 Alt”的映射,还能绕开一个 Windows 很愚蠢的设计——“Win键的快捷键组合无法在系统层面更改。”——对我们的干扰。
对于 Vim 用户
在 Vim 中,我们会使用 Ctrl+U/D 来做 “向上翻半页/向下翻半页” 的操作。但是 Ctrl+D 已经被映射到了 <Delete>。在 Vim 里按下这个组合键的时候,会直接删除掉光标上的字符,怎么办?
只能在 Vim 的配置文件里做一个很丑陋的映射:
" 在 noremal 模式下非递归地把 <Delete> 映射成 Ctrl+D
nnoremap <Delete> <C-d>
到这里,我基本上已经把 MacOS 上的快捷键都搬过来了。唯一有一点难受的,就是 Windows 没办法把 Ctrl+C 跟“复制”分开,于是在终端里我们就没办法用 Alt+C 来做复制粘贴。好在一般的终端都支持选中文字后按鼠标右键直接复制文本,所以也没有太大的影响。
如果还有什么更好的办法解决本文中的问题,或是您需要我当前的配置文件,请留言与我交流。
浙公网安备 33010602011771号