Kitty-基于GPU的快速、功能强大的终端仿真器

2020-10-01 04:46:48

将渲染卸载到GPU,以降低系统负载和轻松流畅地滚动。使用线程呈现来最小化输入延迟。

支持所有现代终端功能:图形(图像)、Unicode、真彩色、OpenType连字、鼠标协议、焦点跟踪、带括号粘贴和几个新的终端协议扩展。

支持以不同布局并排平铺多个终端窗口,无需使用tmux等额外程序。

有一个用于Kitten的框架,这是一种小型终端程序,可以用来扩展Kitty的功能。例如,它们用于Unicode输入、提示和并列比较。

支持启动会话,允许您指定窗口/选项卡布局、工作目录和要在启动时运行的程序。

跨平台:Kitty可以在Linux和MacOS上工作,但是因为它只使用OpenGL进行渲染,所以移植到其他类Unix平台应该很简单。

允许您使用您选择的任意程序在独立窗口中打开回滚缓冲区。这对于在寻呼机或编辑器中舒适地浏览历史记录很有用。

Kitty是为电动键盘用户设计的。为此,它的所有控件都与键盘配合使用(尽管它也完全支持鼠标交互)。它的配置是简单的、人类可编辑的、可重现的单文件(我喜欢将配置存储在源代码管理中)。

Kitty中的代码被设计成简单、模块化和可破解的。它是用C(对于性能敏感的部分)和Python(主要是UI的可破解性)混合编写的。它不依赖于任何大型复杂的UI工具包,只使用OpenGL渲染所有内容。

最后,Kitty从头开始设计以支持所有现代终端功能,如Unicode、真彩色、粗体/斜体字体、文本格式化等。它甚至扩展了现有的文本格式转义代码,以添加对其他地方没有的功能的支持,如彩色和带样式的(卷曲)下划线。Kitty的设计目标之一是易于扩展,这样将来可以相对较少地添加新功能。

Kitty能够运行组织成选项卡和窗口的多个程序。顶层组织是Tab。每个选项卡由一个或多个窗口组成。窗口可以排列成多个不同的布局,就像窗口组织在平铺窗口管理器中一样。选项卡和窗口的键盘控件(均可自定义)为:

Ctrl+Shift+1、Ctrl+Shift+2...。Ctrl+Shift+0(在MacOS上也是⌘+1、⌘+2...⌘+9)(从左上角开始顺时针方向)。

此外,您还可以在kitty.conf中定义快捷键,以聚焦相邻窗口并四处移动窗口(类似于Vim中的窗口移动):

第n_Window将为正数聚焦第n个窗口,为负数聚焦先前活动的窗口。

您可以定义快捷键来分离当前窗口,并将其移动到另一个选项卡或另一个操作系统窗口:

#将窗口移动到新的操作系统窗口中映射ctrl+f2分离窗口#将窗口移动到新的选项卡映射ctrl+f3分离窗口new-tab#询问将窗口移动到映射中的选项卡ctrl+f4分离窗口询问

#将选项卡移入新的操作系统窗口映射ctrl+f2 Detach_tab#询问将选项卡移入map ctrl+f4 Detach_tab ask。

最后,您可以定义一个快捷方式来关闭除当前活动窗口之外的选项卡中的所有窗口:

布局是顶级操作系统窗口内多个小窗口的排列。您可以使用ctrl+Shift+Enter组合键创建新窗口。

胖--一个(或可选的多个)窗口在顶部全宽显示,其余窗口在底部并排显示。

高--一个(或可选多个)窗口在左侧显示为全高,其余窗口在右侧显示为一个低于另一个。

默认情况下,所有布局都处于启用状态,您可以使用ctrl+Shift+l组合键在布局之间切换。您还可以创建快捷方式来选择特定布局,并选择要启用/禁用的布局,有关示例,请参阅布局管理。ENABLED_LAYOUTS中列出的第一个布局将成为默认布局。

Kitty有一个框架,可以方便地创建利用其高级功能的终端程序。这些程序被称为小猫。它们既可以用来为小猫本身添加功能,也可以用来创建有用的独立程序。一些著名的小猫:

从终端屏幕选择并打开/粘贴/插入任意文本片段,如URL、文件名、单词、行等。

在桌面上绘制一个GPU加速扩展坞面板,显示任意终端程序的输出。

Kitty是高度可配置的,从键盘快捷键到每秒绘制帧数,应有尽有。有关详细信息和示例kitty.conf,请参阅配置文档。

Kitty有一个非常强大的系统,允许您从shell提示符控制它,甚至可以通过SSH进行控制。您可以更改颜色、字体、打开新窗口、选项卡、设置标题、更改窗口布局、从一个窗口获取文本并将文本发送到另一个窗口等等。请参阅教程以开始使用。

您可以通过创建会话文件并使用kitty--session命令行标志或kitty.conf中的start_session选项来控制选项卡、窗口布局、工作目录、启动程序等。例如:

#为当前选项卡布局设置窗口布局all#为当前选项卡CD中的窗口设置工作目录~#创建一个窗口并运行其中指定的命令Launch zsh#创建一个设置了一些环境变量的窗口并在其中运行#vim其中启动env foo=bar vim#设置下一个窗口标题的标题与x启动irssi--profile x#创建新选项卡(new_tab之后的部分是将显示在选项卡栏中的可选选项卡#名称,如果省略,将改用活动窗口的#标题)new_tab my tab cd~/where#设置此选项卡中允许的布局enable_layout all,stack#设置当前布局堆栈启动zsh#新建操作系统窗口new_os_window#将新窗口大小设置为80x25单元os_window_size 80c 25c#为新操作系统窗口设置--class os_window_class mywindow启动sh#使当前窗口成为活动(聚焦)窗口启动emacs。

您可以按住Ctrl+Shift并单击URL以在浏览器中打开它。

您可以双击选择一个单词,然后拖动以选择更多单词。

您可以三次单击以选择一条线,然后拖动以选择更多线。

您可以按住Ctrl+Alt并用鼠标拖动以选择列内(另请参阅Rectangle_select_Modifier)。

即使终端程序通过按住Shift键抓住了鼠标,您也可以使用KITTY选择文本(另请参阅TERMINAL_SELECT_MODIRS)。

Kitty具有极其灵活和强大的字体选择功能。可以为常规字体、粗体字体、斜体字体和粗体+斜体字体指定各个族。您甚至可以为特定范围的代码字符指定特定的字体系列。这允许对文本呈现进行精确控制。它可以在电力线这样的应用中派上用场,而不需要使用补丁字体。请参阅字体中与字体相关的各种配置指令。

Kitty支持回滚查看历史记录,就像大多数终端一样。您可以使用键盘快捷键或鼠标滚轮来执行此操作。然而,小猫还有一个额外的、整洁的特征。有时,您需要更详细地研究回滚缓冲区,可能需要搜索一些文本,或者在键入后续命令时并排引用它。Kitty允许您通过按ctrl+Shift+h组合键来执行此操作,这将在您最喜欢的分页程序(默认情况下较少)中打开回滚缓冲区。颜色和文本格式将被保留。您可以在寻呼机中轻松地浏览回滚缓冲区。

此外,您还可以通过管道将回滚缓冲区的内容传递给在新窗口、选项卡或覆盖中运行的任意命令,例如:

当您按F1键时,将在新窗口中打开回滚缓冲区。有关详细信息,请参见Ctrl+Shift+h。

如果要使用管道或ctrl+Shift+h功能存储非常大量的回滚以进行查看,可以使用scroll back_pager_History_size选项。

除了可以从系统剪贴板复制/粘贴之外,在Kitty中,您还可以设置任意数量的复制粘贴缓冲区。为此,只需向您的kitty.conf添加类似以下内容:

这将允许您按F1将当前选择内容复制到名为a和F2的内部缓冲区,以便从该缓冲区粘贴。缓冲区名称是任意字符串,因此您可以根据需要定义任意数量的缓冲区。

Kitty具有基于常规表达式在屏幕上标记文本的能力。这在浏览长时间运行的程序或类似程序的输出时突出显示单词或短语非常有用。要了解此功能的工作原理,请参阅标记。

Kitty提供了极其强大的接口,例如从脚本或shell控制Kitty,以及自定义Kitten和ICAT-在终端显示图像,这使得它可以与其他工具无缝集成。有关用户创建的此类集成的列表,请参阅:与其它工具的集成。

较早版本的bash(例如,V3.2)不支持使用源命令进行进程替换,在这种情况下,您可以尝试另一种方法:

以上重要的事情是确保在调用compinit之后调用kitty来加载zshCompletions。

对于3.0.0之前的FISH版本,将以下内容添加到~/.config/fish/config.fish。默认情况下,更高版本的源完成。