---
published: false
title: 专业程序员系列（一）：纯键盘指南
---

我一直推崇纯键盘操作（尤其是入了 Filco 以后）。年轻的时候是没有初心的，就觉得能让我更高效率地完成工作，觉得是一个专业程序员应有的样子。随着年龄增长，这种效率尤其宝贵，因为你发现时间越来越不够用了。工作三年，我对专业平添了更多信心，越容易看清行业躁动，坚持练习。我变得喜欢谈论踏实的技术，能够不去理会否认和质疑的声音。这种逐渐的自信，来源于对行业规律的信心。市场乱时，可能有快速的捷径~~其实我也不否定这样的捷径~~，但行业和市场最终会筛选出优秀的玩家，尽管这个成长过程可能较长。专业人士，看事情做决定要有 10 年的魄力。

此文献给自认为专业的程序员。希望批评斧正。

## 目录

* 纯键盘的理念
  * 尽量使用全键盘
  * 尽量使用主键盘区
  * 声明式使用：命令行和工作流
* 设备指南
* 参考

## 纯键盘的理念

其实，纯键盘是关于「程序员如何以专业人士方式工作」的一个缩小命题。它得以成立的一个前提是，程序员有更多的时候与代码、电脑打交道，而写代码这个事情，总体来说用键盘比鼠标快。注意，我说的是总体上，是有前提的。

有一些时候，你的工作对鼠标有较为重度的依赖，比如你的公司用 Windows 作为开发机器还因为安全原因不让你装软件，或者你的项目对 Word/Excel/PowerPoint 有较为重度的依赖；而有更多的时候，你认为要用鼠标的操作其实可以用高效得多的键盘操作瞬间完成。本文主要讨论后者的解决方案，至于前者，除了离职，我暂未想出更好的方案。

纯键盘的几条理念总结起来，递进是：

* 尽量使用全键盘
* 尽量使用主键盘区
* 声明式使用：命令行和工作流

### 尽量使用全键盘

全键盘的目标在于完全抛弃鼠标。鼠标本身是有干扰的，你在操作过程中频繁移动你的右手去操作鼠标、瞄准点击、再回来键盘，整个节奏本身就很缓慢，需要更多的注意力。

完全抛弃鼠标本身不是个可以实现的目标（还是能呢？），它更多的是一个意识形态。意识形态的作用是给你热情和信念，以分辨是非，以寻求极致地优化自己的效率结构，而优化本身依靠的是摸索和行动。所以我更多称它是个理念，而非标准。就好比 TDD 神教也是个意识形态，而不是个行动指南。

### 尽量使用主键盘区

使用了全键盘，有时还是感觉艰涩，为啥呢？因为你没有使用键盘的主键盘区。经典的例子是，你用了长键盘的上下左右键、Page Up/Down 键之类的。你可以感受到这个过程，比伸手去摸鼠标距离短一点，但对注意力和节奏的影响却是类似的。好在，大多数时候，这些未优化的键也是可以优化的，本指南后面会回答。

所以，你的目标除了是全键盘，还要保持你的大部分操作在主键盘区。从现在开始，寻找上下左右键的替代方案吧。

### 声明式使用：命令行和工作流

达到了上面两个目标，有时我们会发现，其实我们是用键盘模拟鼠标，做了一些鼠标本来可以更快做到的事情，比如用 tab 键在 Chrome 中寻找要点击的链接等。然后，我们又会发现，用键盘还不如用鼠标快呢。这是因为，尽管用了键盘，但我们还是用键盘去操作 GUI、自己去完成每个步骤的思路。这是不可取的。高效的重要理念之一，即是思维要从命令式的使用，转变到声明式的使用方式上来：相比于「我需要完成什么什么步骤」，你应该「告诉工具我想要什么结果」。在这个思路下，所有依赖 GUI 的操作，都应该被优化成声明式的操作，其结果就是命令行、脚本、工作流。

程序世界，无非就是传入参数，输出结果。作为程序员，为数不多的优势之一就是操作编程语言的能力。你应该利用自己的这个优势，寻求从代码和命令的层面，一键用命令解决问题。

关键是，这更多是种意识，不需要很高的技巧，只需要你有基本的编程~~copy~~能力。

上面 👆 这些原则，将作为选择工具、优化操作的意识形态指导。在本指南的后续，将分享如何实际落地。

## 几个基本

* 如何全键盘：shortcat 做少量必要的操作
* 如何全键盘：常用 app 的快捷键
* 如何全键盘：Mac 原生自带的快捷键
* 如何全键盘：手速
* 如何主键盘区：改 control 键
* 如何主键盘区：karabiner 改上下左右，改 control + h
* 如何支持命令行：alfred
* 如何支持命令行：iTerm

画一张有层次关系的图。

## 设备指南

* Mac ~~Windows~~
* 键盘。推荐 HHKB（默认 control 键位、紧凑布局，长时间输入舒服）、Filco（适合激昂的情绪）
* 屏幕。多放点信息

## 参考
