之前在学习使用 dotbot 管理 dotfiles 的时候参考了不少 GitHub 上的 dotfiles 项目,发现大家都不约而同的用到了一个叫做 kitty 的终端,我个人在 Linux 上用 Guake ,在切换到 Mac 之后选择了大部分人推荐的 iTerm2,虽然用着也没有遇到问题,但一旦和 kitty 比较起来速度便成为了一个问题。
官网地址:https://github.com/kovidgoyal/kitty
为什么要换用 kitty?
之前使用的 [[Guake]], iTerm 自身也并没有什么问题,但近两年来越来越喜欢纯文本的配置,这样就可以放到 dotfiles 中进行追踪,并且跨平台也只需要同步一下配置即可,Guake 和 iTerm 在各自的平都是非常不错的选择,但都不是跨平台的选择。所以综上这些原因,让我有了尝试一下 kitty 的动力。
kitty 的一些特性:
- 跨平台,日常在 Linux 和 macOS 之间切换,我希望配置一遍就可以在不同的平台上使用。
- 纯文本的配置,理由同上
- GPU 渲染,肉眼可见的速度提升,尤其是在处理大量文本显示上
配置
kitty 默认的配置文件在 ~/.config/kitty/kitty.conf
,可以将这个文件拷贝到 dotfiles 仓库中管理,然后用软链接链过去。kitty 默认不支持热加载配置文件 1,所以每一次修改配置都需要退出重进。具体的配置可以参考我的 GitHub
调试 kitty 的配置可以使用 kitty --debug-config
,执行这行命令会将 kitty 当前的配置,以及加载的配置都打印出来。kitty 配置的各个选项在 kitty 的文档中已经非常详细的记录了。
include 其他配置
include other.conf
配置 Fira Code 字体
自从发现了 Fira Code 字体已经用这一款字体很多年了。但是在 kitty 上使用时,Fira Code 字体总是在一行的偏上部分,这已经很多人反馈过 2.
目前的解决办法只能是:
adjust_line_height -3
adjust_column_width -1
配置和 Guake 类似的下拉式终端
借助 [[Hammerspoon]] 可以实现类似 Guake 类似的下拉效果。
hs.hotkey.bind({}, "F12", function()
local app = hs.application.get("kitty")
if app then
if not app:mainWindow() then
app:selectMenuItem({"kitty", "New OS window"})
elseif app:isFrontmost() then
app:hide()
else
app:activate()
end
else
hs.application.launchOrFocus("kitty")
app = hs.application.get("kitty")
end
app:mainWindow():moveToUnit'[100, 80, 0, 0]'
app:mainWindow().setShadows(false)
end)
同步我之前的快捷键
我之前在使用 Guake 的时候就使用 Alt+n/p 来切换 Tab,正好键位在 Mac 上是 Cmd+n/p 用下面的代码重新 remap 一下:
map cmd+n next_tab
map cmd+p previous_tab