Kitty的配置和使用
2018-10-05 20:13
我对我所用的工具一向很挑剔, 我喜欢用最少量的代码来实现所必须的功能. 如无必要, 勿增实体, 不是吗? 所以随着iTerm2的进化, 其功能不断地增加, 我对它的好感也与日俱减. 每次看到iTerm2提示更新, 里面所涉及到的内容是一些我完全不会用到, 也不期待一个终端模拟器具有的功能, 我就心里默默给它扣分. 在我心里, iTerm2的得分早就为负了, 只不过一直以来, 我缺少一个替代品而已.
脱离需求来说选择是不现实的. 就我的理解, 一个终端模拟器必须要有这些基本功能:
- 标签页支持
- 支持通过快捷键切换和移动标签页
- 能够自定义字体及样式等
作为额外的bonus, 我希望一个终端模拟器具有这些特性:
- 能够通过快捷键重命名标签页
- 具有文本形式的配置文件,方便版本控制
- 能提供可靠的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配置在这儿.