kitty

出自 ArchWiki

kitty 是一款基于 OpenGL 的可脚本化终端模拟器,支持 TrueColor、连字、键盘输入和图像渲染的协议扩展。它还提供平铺功能,类似于 GNU Screentmux

安装

安装 kitty 软件包 或 kitty-gitAUR 以获取开发版本。

用法

可以通过各种 Ctrl+Shift 快捷键创建和调整新的标签页和窗口。布局可以通过 Ctrl+Shift+l 切换,并且可以保存/恢复。

全键盘模式 区分了模糊的按键,例如 Ctrl+iTab。此外,新的文本效果(如卷曲下划线)也适用于支持它的应用程序。

Kittens

kitty 有一个用于创建名为 kittens 的子程序的框架。所有 kittens 的命令都以 kitty +kitten 为前缀,因此将它们用作 shell 别名很方便。

icat

这个 kitten 基于 kitty 图形协议。它需要安装 ImageMagick。要在终端中显示图像

$ kitty +kitten icat image.jpg

它还可以在终端中显示动画 gif。除了图像文件,您还可以传递目录或图像 URL。这也适用于通过 ssh 从远程服务器显示图像。诸如 rangerneofetch 等应用程序使用此协议在终端中显示图像。有关更多信息,请参阅官方文档

diff

这个 kitten 需要安装 gitdiffutils。可选地,安装 python-pygments 以进行语法高亮显示。要显示两个文件的差异

$ kitty +kitten diff file1 file2

它可以显示图像文件以及文本文件的差异。这个 kitten 也可以通过 ssh 使用。您可以传递目录而不是文件以进行递归差异。有关更多信息,请参阅官方文档

clipboard

这个 kitten 用于读取和写入系统剪贴板,甚至可以通过 ssh 使用剪贴板。要将 stdin 复制到系统剪贴板

$ echo "Hello" | kitty +kitten clipboard

要将当前剪贴板内容输出到 stdout

$ kitty +kitten clipboard --get-clipboard

默认情况下,此命令将显示权限弹出窗口。要禁用此功能,请编辑配置文件中的 clipboard_control 选项

~/.config/kitty/kitty.conf
clipboard_control write-clipboard read-clipboard

有关更多信息,请参阅官方文档

配置

kitty 将其配置存储在 ~/.config/kitty/kitty.conf 中,默认配置可以在 /usr/share/doc/kitty/kitty.conf 中找到。字体、颜色、光标和回滚行为可以调整。您可以在官方文档kitty.conf(5) 中查看所有可用选项。

注意: 如果您正在使用 vim 编辑默认配置,则各节将以折叠状态开始。可以使用普通模式下的 zo 展开每个部分。
提示
  • 位于 /usr/share/doc/kitty/kitty.conf 的默认配置文件是自文档化的,其中包含解释每个选项的注释。
  • 官方文档在本地位于 /usr/share/doc/kitty/html/index.html

技巧与提示

启用输入法支持

默认情况下,kitty 对 IBus 输入法框架的支持已禁用。要启用它,请设置环境变量 GLFW_IM_MODULE=ibus。由于 Fcitx5 提供了兼容的 IBus 接口,这也适用于 Fcitx5。

单实例模式

这类似于守护进程模式。当使用 --single-instance-1 选项启动 kitty 时,只会运行一个 kitty 实例。随后使用相同选项启动 kitty 将在现有 kitty 实例中创建一个新窗口。这将降低内存使用率,因为共享 GPU 缓存,并减少启动时间。您可以使用 --instance group name 选项拥有多个 kitty 实例组。有关更多信息,请参阅 kitty(1) § single

故障排除

SSH 终端问题

当 kitty 用于 ssh 连接到没有其 terminfo 的远程主机时,可能会出现各种问题。通常的解决方案是复制 terminfo。Kitty 有一个 ssh kitten 来自动执行此操作。

$ kitty +kitten ssh user@host

您可能希望将其设置为 ssh 的别名。一种方法是检测用户是否正在使用 Kitty,如果是,则别名 ssh 命令。为此,您需要将以下行附加到您的 ~/.bashrc~/.zshrc 文件中

[ "$TERM" = "xterm-kitty" ] && alias ssh="kitty +kitten ssh"

如果由于任何原因您无法在远程主机上安装 terminfo,您可以尝试将 TERM 设置为更可能存在的项。请注意,这可能会禁用终端的某些功能。请参阅 OpenSSH#Connecting to a remote without the appropriate terminfo entry

vim 中背景颜色消失

在 vim 中使用带有背景颜色的配色方案时,背景可能会在滚动时消失或闪烁。要解决此问题,请确保环境变量 TERM 仍然设置为 xterm-kitty,然后将此行添加到您的 .vimrc 文件中

~/.vimrc
let &t_ut=''

相关错误报告:Github issue #108kitty FAQ

位图字体无法识别

kitty 不支持位图字体,因为它的基本功能是能够以任意字体大小显示字体,而位图字体不适合这样做;请参阅 Github issue #97

参见