学会使用纯键盘工作

闲聊

作为一个键盘党, 前前后后大概买过5个机械键盘了, 今天又新入了hhkb hybrid type-s,不得不说手感真的是非常好, 非常安静, 手感和我的红轴键盘比较接近, 按键非常稳定, 按下任意一个按键都是一样的手感, 仿佛在给手指在做马杀鸡。
好了, 吹了hhkb, 终于退烧了之后, 得聊聊我为什么要买hhkb了, 答案就是使用纯键盘工作

大学我用了3年的windows, 也是一个十足的软粉, 但是, 在实习之后, 开始用mac工作了, 从此就是command按键的忠实粉丝,仿佛后半生都离不开command按键了, 在使用mac的过程中, 也逐步开始意识到快捷键的重要性, 讲真的mac的快捷键其实不咋地, 最初吸引我的是触摸板比较好用, 对现在的我来说, mac最好的一点是提供了一个简单稳定长续航的操作系统与硬件, 用完即走,不用折腾

在使用mac的过程中, 陆续使用过两个机械键盘, 分别是 青轴的filco 圣手二代 和 ganss 87 红轴, 最开始的青轴因为太吵,被同时吐槽, 所以最终没有在公司使用,带回家吃灰快三年了。 取而代之的是ganss 87, 一个淘宝随便买的87红轴, 虽然也挺吵的,但是相比于filco青轴, 简直不要太安静了, 有时候想想写代码写的最多的居然是淘宝随便买的破键盘, 就跟之前我用耳机一样, 为了防止Imac意外在办公室外放, 我就接了一个EarPods耳机,结果最后用的最多也是这个有线的EarPods, 然后Boss QC35 和 AirPods也是吃灰,很多时候越是简单的东西反而越经常使用, 最好玩的是那个Earpods耳机是我买手机充电线送的山寨版的

回到主题

影响我们工作效率的一大问题是啥呢? 对于我来说 频繁的把手从键盘移动到鼠标, 再放回键盘
所以想要一个高的工作效率, 核心的关键点是如何让我们的手在整天的工作中不需要离开键盘,即使做到不离开键盘, 还要保证食指要在FJ两个按键上,这样子才能高效稳定的输出大脑指令

平时工作一般会用到哪些软件

使用时间分布

  1. vscode 写代码, 写文档
  2. edge浏览器, 大部分的工作都是云端的, 所以浏览器非常重要
  3. 企业微信、微信

可以看到平时我平时主要就是这几个软件占用我大部分的时间

还有一些其他的mac上的软件也支持很多的快捷键, 使用mac的同学可以搜索一下CheatSheet 这个软件, 按住command按键就会跳出当前软件支持的快捷键列表, 非常方便

开发

最近两年一直都是使用远程开发的模式, 即代码存放在开发服务器中, 通过terminal登录开发服务器使用vim开发或者使用vscode remote-ssh 连接开发服务器开发, 目前已经是一个vscode的重度用户了。最开始用vscode的时候, 还背了一下vscode自带的快捷键, 然后用vim的时候还带切换回vim的快捷键, vscode的那几个快捷键是远远不够用的,虽然提供了强大的keymap的功能, 但是自己去配置也是不够现实的, 最后还是在vscode的开启vim mode, 可以把vscode + vim mode 等同于 一个高级的terminal+vim远程开发, 只不过vscode的GUI对于大部分人更加友好, 而在写代码过程中依旧使用vim的快捷键。

所以我的开发模式就变成了:

  1. 使用iterm2登录开发服务器, tmux创建会话用于持久化窗口, 然后使用vim直接写代码, 这种模式其实用的不多
  2. 启动vscode, 连接上远程开发服务器, 将常用的目前加到工作区中, 保存工作区, 下次打开会自动化连接上, 并恢复工作区的状态

    可以发现在两个模式之间, 我都使用vim mode 的快捷键编程, 其实对我来说本地电脑编辑器的快捷键配置就没有那么重要了

写代码的是分两种情况, 一是在快速各个文件中跳转,或者快速查看代码文件; 另外一块是单个文件长时间的coding,

单个文件的编辑, 主要的场景是我们打开一个文件, 现在可能需要花几个小时的时间来写一个模块或者写一篇文档, 这种场景我们主要使用的是单独的代码编辑器的功能,(代码编辑器,IDE还是有些区别的

对于代码编辑器常用的几个功能是如何通过键盘操作的, 首先是要启用vim mode, vscode可以在商店中搜索vim,command + shift + p 搜索vim,点击 toggle vim mode

vim的基本操作可以google搜索到很多的教程, 这里不过多阐述

对于文本编辑器的操作, 我们给主要使用的功能进行了一个排序

  1. 光标移动
  2. 文本处理, 文本选择, 文本复制,文本删除, 文本移动
  3. 搜索
  4. 翻页
  5. 跳转

上面是我进行的一个使用频率的排序, 可以看到光标的移动在写代码中, 是非常频繁的操作, 假如我们习惯用鼠标的话,通常会用鼠标点到下一步的操作位置, 这时候手就离开键盘了,一来一回,就极大的拖慢我们的编程速度

特别讲一下光标的快速移动

开启vim mode 的 vim-easymotion模式

1
("vim.easymotion": true)
1
2
3
4
<leader><leader> t/T <char> 能够向前/向后快速到达可见范围内的某字符(<char>)的位置
<leader><leader> w/b 向前/向后到达可见范围内任何单词的开头
<leader><leader> e/ge 向前/向后到达可见范围内任何单词的结尾
<leader><leader> k/j 向前/向后到达可见范围内任何行的行首

更多操作查看文档 VSCodeVim/#vim-motion

其他几项文本编辑器的操作,如果用熟练vscode快捷键, 在vscode使用原生的快捷键和vim的快捷键其实操作的效率是差不多的, 大家在编写一个文件的时候观察一下每次手离开键盘都是因为什么, 我的情况是大部分情况就是去移动光标。 为了统一在各大硬件平台的操作习惯, 建议是学习vim的快捷键, 一次学习受用终生,我可不想哪天换了电脑或者换了一个工作环境, 就得重新学一遍快捷键

关于vscode的常用快捷键

在处理单文件的编辑之外,还有一个会导致我们手频繁离开键盘的操作是展开目录树打开另外一个文件, 这是要赞一下vscode 的 Command + P的快捷打开文件的操作, 模糊匹配路径+近期打开文件的列表, 可以帮助我们快速的打开想要的文件, 而不必去目录树一个个展开肉眼去寻找文件再用鼠标点击打开,所以非常建议在编辑单个文件使用vim mode, 我们还是需要去学习vscode的常用快捷键, 比如多窗口切换, 打开terminal等等

浏览器

浏览器离不开vimium插件


下面是一些我最常常用到的页面操作:

最基本的操作是可以使用j,k进行上下滚动, u,d进行上下翻页, f可以将页面中可以点击的都标记出来, 然后通过快捷键模拟点击动作
我的常用操作如下:

1
2
3
4
5
6
7
8
9
shift + jk 进行tab之间的左右切换

shift + hl 进行页面的前进后退

x关闭当前页面, X恢复前面关闭的页面

t打开新的tab

shift + o可以出现搜索框方便直接跳转标签、历史访问的页面(有点类似vscode的command+p)

可以看到上面把我们平时浏览器常用的操作都涵盖了, 基本都不需要使用鼠标操作页面, 双手也不需要离开键盘

更多的快捷键可以参考

操作系统操作

操作系统层级的我们使用的最多就是打开文件管理器, 打开应用, 打开系统设置等等

那么就是得推荐一个神器了 Alfred, 我配置了opt + space的快捷键快速调起搜索输入框

一般应用都是通过Alfred搜索启动的,搜索网页

除了使用Alfred快速打开所有的应用和文件, mac系统上我用的最多的就是command+ tab切换应用 和 ctrl + 左右箭头切换多桌面

关于键盘的键位的配置

对于键位, 我的观点一向是不要大改, 首先要想想自己平时用的最不顺手的按键是哪几个
对我而言 在使用87按键的键盘时, 还是会不自主的移动右手去按上下左右的方向键, 我的目标是左右两个食指不离开FJ两个按键, 频繁的移动右手去按方向键还是很麻烦的, 所以我引入了 KaraBiner-Element改键工具


出于克制的习惯, 我只加了一条改动策略, Left Ctrl + hjkl to Arrow keys vim, 所以在非vim编辑器的地方, 我上下左右基本都是使用 ctrl + hjkl来代替方向键, 实现了方向键这几个高频按键的全系统的统一, 得益于hhkb的 ctrl按键替换了原先面积很大却不常用的Caps Lock按键的位置,即使之前使用其他的键盘,也是配置这条策略的, 只是在hhkb上, 这个ctrl的位置确实是真香, 所以我准备把其他的键盘的CapsLock按键也修改为Ctrl

总结:

学会使用纯键盘工作的标题可能确实有点标题党, 实际上如果你使用GUI的操作系统工作,是很难不用到鼠标或者触摸板的, 毕竟很多时候学习快捷键是有成本的, 很多软件对于快捷键的支持也不是那么好, 我们能做到的就是尽可能的降低在键盘和鼠标之间切换的频率。 在大部分情况下, 我们操作电脑的速度是比不过我们大脑思考的速度的, 所以提升电脑的键盘使用效率是非常重要的, 尽可能的做到流畅的操作不被打断,一旦熟练之后带来的生产力提升是难以想象的。

我们提升的是我们大脑的io的速度, 人的的大脑一旦有的io中断, 经常就回不来了, 从并行运算上看还是计算机做的比较厉害