Kitty: 又一款基于 GPU 加速的終端工具
基于 GPU 的功能強(qiáng)大的終端仿真器(跨平臺(tái)是王道)
近幾年越來(lái)越多人喜歡使用 ??dotfiles?
? 中進(jìn)行追蹤自己的服務(wù)端相關(guān)的工具配置,這樣就可以跨平臺(tái)使用,只需要同步一下配置,即可無(wú)痛使用機(jī)器了。
??Kitty?
? 是一個(gè)跨平臺(tái)、特性豐富的基于 ??GPU?
? 的終端模擬器。使用線程渲染將輸入延遲最小化,以及 ??GPU?
? 渲染技術(shù),使得肉眼可見(jiàn)的速度提升,以及降低系統(tǒng)負(fù)載和平滑的滾動(dòng)效果。它是一個(gè)輕量級(jí)的模擬器,可以通過(guò)腳本、??shell?
? 提示符和 ??SSH?
? 進(jìn)行控制。
- Kitty - 官方倉(cāng)庫(kù)
- Kitty - 官方文檔
- Kitty - 官方文檔 - 快捷鍵
- Kitty - 官方文檔 - 集成功能
1. 終端安裝
簡(jiǎn)單介紹終端的安裝以及相關(guān)的配置文件
如果你系統(tǒng)安裝(帶圖形化界面)之后,默認(rèn)的終端是 ??Gnome Terminal?
? 這個(gè),如果我們直接使用的話,比如分屏顯示、同時(shí)執(zhí)行命令等高級(jí)操作多需要借助于第三方插件來(lái)完成,比如使用功能 ??Tmux?
? 等。而 ??kitty?
? 是一個(gè)功能完備的終端,其包含的功能做了??Tmux?
? 所做的一切,且做的更好。
- 跨平臺(tái) (?
?Linux/macOS?
?) - 純文本的配置 (?
?config?
?) - 肉眼可見(jiàn)的速度提升 (?
?GPU?
?)
# 二進(jìn)制安裝
# Linux: ~/.local/kitty.app
# macOS: /Applications/kitty.app
$ curl -L https://sw.kovidgoyal.net/kitty/installer.sh | sh
# Ubuntu安裝
$ sudo apt update
$ sudo apt install kitty -y
$ kitty
# 任務(wù)欄顯示
$ ln -s ~/.local/kitty.app/bin/kitty ~/.local/bin/
$ cp ~/.local/kitty.app/share/applications/kitty.desktop ~/.local/share/applications/
$ cp ~/.local/kitty.app/share/applications/kitty-open.desktop ~/.local/share/applications/
$ sed -i "s|Icon=kitty|Icon=/home/$USER/.local/kitty.app/share/icons/hicolor/256x256/apps/kitty.png|g" ~/.local/share/applications/kitty*.desktop
# 默認(rèn)的配置文件
# 默認(rèn)不支持熱加載配置(需重進(jìn))
~/.config/kitty/kitty.conf
# 調(diào)試模式
$ kitty --debug-config
2. 使用方式
介紹如何快速使用該終端和其對(duì)應(yīng)快捷鍵組合!
- [1] Scrolling
Kitty 基于 GPU 的終端工具 - Scrolling
- [2] Tabs
Kitty 基于 GPU 的終端工具 - Tabs
- [3] Windows
Kitty 基于 GPU 的終端工具 - Scrolling
- [4] Other
Kitty 基于 GPU 的終端工具 - Scrolling
3. 開(kāi)箱即用
Kitty 的核心部分采用 C 編寫(xiě), UI 界面采用 python 展示!
??Kitty?
? 提供了極其強(qiáng)大的接口,如腳本控制、自定義 ??kittens?
? 和 ??icat?
? 看圖功能,允許它無(wú)縫地與其他工具集成。
- 查看更多的 Kitty 擴(kuò)展功能
Kitty 基于 GPU 的終端工具 - 開(kāi)箱即用
- 顯示的色彩效果是真的好
- [1] diff
# 對(duì)比
$ kitty +kitten diff file1 file2
# 集成到git配置里面
$ vim ~/.gitconfig
[diff]
tool = kitty
guitool = kitty.gui
[difftool]
prompt = false
trustExitCode = true
[difftool "kitty"]
cmd = kitty +kitten diff $LOCAL $REMOTE
[difftool "kitty.gui"]
cmd = kitty kitty +kitten diff $LOCAL $REMOTE
Kitty 基于 GPU 的終端工具 - diff
- 可以直接終端里面顯示圖片
- [2] icat
# 圖片
$ kitty +kitten icat
# 設(shè)置別名
$ vim ~/.zshrc
alias icat="kitty +kitten icat"
Kitty 基于 GPU 的終端工具 - icat
- 可以讓你即時(shí)預(yù)覽主題效果并支持一鍵切換
- [3] themes
# 主題
$ kitty +kitten themes
$ kitty +kitten themes --reload-in=all Dimmed Monokai
Kitty 基于 GPU 的終端工具 - themes
- 接受字符然后輸出對(duì)應(yīng)碼
- [4] Unicode input
# 輸出
$ kitty +kitten unicode_input
- 將終端所以的鏈接地址高亮起來(lái)并可以快捷打開(kāi)
- [5] Hints
# 設(shè)置快捷鍵綁定
$ map ctrl+g kitten hints \
--type=linenum \
--linenum-action=tab nvim +{line} {path}
Kitty 基于 GPU 的終端工具 - Hints
4. 缺點(diǎn)介紹
介紹該終端工具目前還沒(méi)有實(shí)現(xiàn)的特性!
tmux-plugins/tmux-resurrect
自動(dòng)保存tmux-plugins/tmux-continuum
自動(dòng)加載
- [1] 會(huì)話保存和加載
# kitty目前還沒(méi)有直接就拿來(lái)能用的插件方案
# https://github.com/kovidgoyal/kitty/issues/1197)
- 并沒(méi)有像
tmux
一樣自帶這個(gè)功能 - 但是其擴(kuò)展能力極強(qiáng),實(shí)現(xiàn)這個(gè) 非常輕松
- [2] 禪模式
# vim ~/.config/kitty/zoom_toggle.py
def main(args):
pass
from kittens.tui.handler import result_handler
@result_handler(no_ui=True)
def handle_result(args, answer, target_window_id, boss):
tab = boss.active_tab
if tab is not None:
if tab.current_layout.name == 'stack':
tab.last_used_layout()
else:
tab.goto_layout('stack')
- 有
panel
貌似可以實(shí)現(xiàn)類似的功能
- [3] 狀態(tài)欄
# 可以實(shí)現(xiàn)類似的功能
# https://sw.kovidgoyal.net/kitty/kittens/panel/
- 如果嘗試
ssh
到遠(yuǎn)程機(jī)器,可能會(huì)發(fā)生報(bào)錯(cuò)
- [4] 遠(yuǎn)程機(jī)器
# 不能使用遠(yuǎn)程SSH命令
# https://sw.kovidgoyal.net/kitty/faq
$ kitty +kitten ssh myserver
# 設(shè)置別名
$ vim ~/.zshrc
alias ssh="kitty +kitten ssh"
5. 參考鏈接
- Kitty – 一個(gè)被嚴(yán)重忽視的生產(chǎn)力利器