Kitty的配置和使用

2018-10-05 20:13

我对我所用的工具一向很挑剔, 我喜欢用最少量的代码来实现所必须的功能. 如无必要, 勿增实体, 不是吗? 所以随着iTerm2的进化, 其功能不断地增加, 我对它的好感也与日俱减. 每次看到iTerm2提示更新, 里面所涉及到的内容是一些我完全不会用到, 也不期待一个终端模拟器具有的功能, 我就心里默默给它扣分. 在我心里, iTerm2的得分早就为负了, 只不过一直以来, 我缺少一个替代品而已.

脱离需求来说选择是不现实的. 就我的理解, 一个终端模拟器必须要有这些基本功能:

  1. 标签页支持
  2. 支持通过快捷键切换和移动标签页
  3. 能够自定义字体及样式等

作为额外的bonus, 我希望一个终端模拟器具有这些特性:

  1. 能够通过快捷键重命名标签页
  2. 具有文本形式的配置文件,方便版本控制
  3. 能提供可靠的API来让我们能够自定义模拟器的内部行为

不得不提到, 长期使用konsole对我的编程习惯的形成有很重要的影响. 我不喜欢在一个标签页里使用任何方法来实现多窗口(tmux/vim split view等), 我更习惯于开多个标签页, 通过快捷键来切换标签页, 通过移动标签页来把上下文一致的标签页放到一起, 通过重命名标签页来区分不同任务的标签页等. 在konsole中, 上述所有这些操作, 都可以通过自定义默认的快捷键来实现. 甚至对于一个相对小众的, 快速切换终端编码集的需求, 也可以通过dbus来完成.

回头来说iTerm2, 上述的基本功能都是支持的. 对于重命名标签页, 我之前也已经用一个AppleScript实现了. 但是, iTerm的配置文件使用了bplist,存放到了~/Library/Preferences/com.googlecode.iterm2.plist里. 这一点让习惯了将配置文件放进~/.xiaket/etc的我很不开心. 另外, 我之前提到过, 虽然iTerm有AppleScript的支持, 但这种支持并不是特别全面, 不像是专门为此有过思考, 所以大部分时候只是聊胜于无而已.

尽管对iTerm怨念很深重, 我之前也一直没能摆脱这劳什子. 我尝试过Hyper, 它很漂亮, 满足基本功能, 而且配置文件是纯文本的, 方便版本控制, 不过不能实现快捷键重命名标签页的功能. 我在社区里问过, 不过社区里的部分开发者对于重命名标签页不能在shell层面实现都弄不明白, 我政治不正确地认为这些写js的能够弄清bash编程就已经很厉害, 所以这些人很少ssh连接到其它服务器, 不理解这个需求的真正目的. 我后面也弃了这个坑, 用回iTerm2.

最近我又开始试用kitty, 第一印象是很快. 看了看, 基本功能都有, 很好. 配置文件是纯文本而且可读性还不错, 而且原生支持定义快捷键来重命名标签页. 使用了几天, 最大的问题是不能支持中文输入, 不过对我而言这也不算大问题, 因为不比之前在网易, 现在已经不太需要大段写中文文档了. 即使要写(比如现在这篇), 也可以在Typora里完成.

我用了一段时间后基本满意, 有些回到konsole的感觉. 只是发现有些小的不爽, 比如用快捷键开新标签页的时候默认会添加到标签页列表的最右端, 更合理的做法应该是开到当前标签页的右侧, 这样切换到这个标签页的成本会低很多. 在Github里面提了这个需求后, 作者一两天就添加了, 又等了几天正式发布新版本就用上了.

最后, 我的kitty配置在这儿.