kitty 命令行接口(CLI)完全指南:从启动参数到 Tabs 与 Windows 管理
发布时间:2026/9/10 2:29:36 作者:尧图编辑部 阅读量:1,286
完全指南:从启动参数到 Tabs 与 Windows 管理)
kitty 命令行接口CLI完全指南从启动参数到 Tabs 与 Windows 管理【免费下载链接】kittyIf you live in the terminal, kitty is made for you! Cross-platform, fast, feature-rich, GPU based.项目地址: https://gitcode.com/GitHub_Trending/ki/kittykitty 是一个跨平台、基于 GPU 渲染、功能丰富的终端模拟器。本指南以 kitty 官方文档 docs/invocation.rst 为骨架系统讲解 kitty 的命令行调用方式包括全部启动选项的用途与取值、如何在启动时运行指定程序、以及启动后通过键盘快捷键管理 Tabs 与 Windows 的方法。读完本文你将能够熟练使用kitty [options] [program-to-run ...]完成日常终端会话、项目开发环境的搭建并理解这些选项在 kitty/launcher/main.c 与 kitty/simple_cli_definitions.py 中的底层实现。kitty 命令的基本调用形式kitty 的完整用法如下此格式由 docs/conf.py 从选项定义自动生成到generated/cli-kitty.rst再被 docs/invocation.rst 引用kitty [options] [program-to-run ...]其中[options]是 kitty 自身的启动选项用于控制窗口外观、配置文件、会话、远程控制等行为[program-to-run ...]是要在 kitty 中运行的程序及其参数。如果不指定kitty 默认启动一个交互式 shell。例如官方文档给出的典型示例启动 kitty 并保持窗口打开运行一段 shell 命令kitty --hold sh -c echo hello, world--hold的作用是当子进程退出后窗口保持打开并停留在一个 shell 提示符处方便你查看输出结果。需要注意该选项只影响第一个窗口你可以用关闭窗口的快捷键或输入 exit 命令退出。命令行选项的定义源在 kitty/simple_cli_definitions.py 的kitty_options_spec()函数中文档化的 CLI 参考就是由它渲染生成的。下面按功能分组逐一讲解这些选项。窗口外观与身份--class、--name、--title、--position这几个选项控制 kitty OS 窗口OS Window在桌面环境中的外观与身份标识其中前两个仅在非 macOS 平台生效定义中带conditionnot is_macos--class --app-id别名--app-id在 Wayland 下设置application id在 X11 下设置WM_CLASS窗口属性的 class 部分。默认值为kitty。--name --os-window-tag在 Wayland 下设置window tag在 X11 下设置WM_CLASS属性的 name 部分未指定时默认使用--class的值。--title -T设置 OS 窗口标题。注意这会永久覆盖程序内部设置的标题因此只在运行不设置标题的程序时使用。--position设置首个 OS 窗口在屏幕上的放置位置格式如10x20。该选项能否生效取决于桌面环境/窗口管理器的策略且在 Wayland 上永远不生效。如果想要 kitty 自动恢复上次的窗口位置可参考remember_window_position配置项见 docs/conf.rst。配置加载--config 与 --override--config -c指定要读取的配置文件路径类型为 list可多次指定以按顺序合并多个配置文件。使用特殊值NONE表示不加载任何配置文件也支持使用-或/dev/stdin从标准输入读取配置。文件选择器会补全*.conf文件以及none、NONE关键字。如果不指定该选项kitty 会按以下顺序搜索配置文件取第一个存在的文件$XDG_CONFIG_HOME/kitty/kitty.conf~/.config/kitty/kitty.confmacOS 上为~/Library/Preferences/kitty/kitty.conf$XDG_CONFIG_DIRS/kitty/kitty.conf如果设置了环境变量KITTY_CONFIG_DIRECTORY则总是使用该目录不再进行上述搜索。此外若系统级文件/etc/xdg/kitty/kitty.conf存在它会被合并到用户配置之前即优先级更低用于为所有用户提供系统级默认值。--override -o覆盖单个配置项类型为 list可多次指定。语法为namevalue例如kitty -o font_size20该选项的底层实现在 kitty/cli.pyparse_override()会把namevalue形式的字符串转换为name value的覆盖行再与配置文件一同交给load_config()处理。关于配置文件本身的语法注释、行续接、include/globinclude/envinclude/geninclude等指令详见 docs/conf.rst。工作目录与启动程序--directory --working-directory -d启动时切换到指定目录默认值为.。该选项带目录补全。--execute -e在选项定义中存在但标记为隐藏help 文本为!通常不需要手动使用。会话Session支持--session--session选项用于指定一个包含启动sessiontabs、windows、布局、程序的文件kitty --session ~/path/to/myproject/launch.kitty-session文件选择器支持*.session、*.kitty-session、*.kitty_session扩展名并相对配置目录解析使用-表示从 STDIN 读取文件名中的环境变量会被展开相对路径相对 kitty 配置目录解析特殊值none表示即使kitty.conf中指定了startup_session也不用会话注意使用该选项后命令行中指定的 program-to-run 参数会被忽略。一个简单的会话文件示例完整语法见 docs/sessions.rst# 设置当前 tab 的布局 layout tall # 设置当前 tab 中窗口的工作目录 cd ~/path/to/myproject # 创建主窗口并运行编辑器 launch --title Edit My Project /usr/bin/nvim # 创建侧边窗口运行 shell launch --title Build My Project # 创建另一个侧边窗口查看日志 launch --title Log for my project /usr/bin/tail -f /path/to/project/log/file单实例模式--single-instance、--instance-group 与 --wait-for-single-instance-window-close--single-instance -1只允许运行一个 kitty 实例。后续的调用会在现有实例中新建一个顶层窗口然后立即退出。这样可以让多个窗口共享 GPU 上的 sprite 缓存同时减少启动时间。可以用--start-ashidden启动一个后台 kitty 实例充当服务器。--instance-group与--single-instance配合使用。所有指定了相同 instance-group 的 kitty 调用都会在该组内第一个 kitty 实例中创建新窗口从而在同一台机器上维护多组相互独立的 kitty 实例。--wait-for-single-instance-window-close配合--single-instance使用。默认情况下 kitty 在新窗口创建后立即退出指定此选项后会一直等到新建窗口关闭才退出。注意如果找不到已存在的实例kitty 无论如何都会等待。单实例逻辑在 C 启动器中实现见 kitty/launcher/single-instance.c 与 kitty/launcher/main.chandle_fast_commandline()检测到single_instance标志后会先解析instance_group并调用single_instance_main()。远程控制--listen-on 与 --start-as--listen-on在指定的 socket 地址上监听控制消息。例如kitty -o allow_remote_controlyes --listen-on unix:/tmp/mykitty或 TCP 形式tcp:localhost:12345在 Linux 上还支持与文件无关的抽象 UNIX socket如unix:mykitty。环境变量会被展开相对路径相对临时目录解析。要控制 kitty可在kitten 中使用--to选项指定该地址kitten --to unix:/tmp/mykitty ls注意该选项只有在allow_remote_control设置为yes、socket或socket-only时才会生效也可以直接在kitty.conf中配置。若要从无窗口的 headless 模式启动可配合--start-ashidden。完整的远程控制教程见 docs/remote-control.rst。--start-as控制初始 OS 窗口的创建方式类型为 choices默认normal可取值取值含义normal正常窗口fullscreen全屏窗口maximized最大化窗口minimized最小化窗口hidden隐藏窗口适合作为单实例服务器该选项对--session创建的所有 OS 窗口都生效并会覆盖会话文件中指定的窗口状态。分离与挂起--detach、--detached-log、--hold、--grab-keyboard--detach从控制终端分离若存在的话。在 macOS 上应改用open -a kitty.app -n。--detached-log配合--detach使用指定保存 STDOUT/STDERR 的日志文件路径。--hold见上文保持第一个窗口在子进程退出后不关闭。--grab-keyboard抓取键盘使操作系统定义的全局快捷键被传递给 kitty 而不是被系统截获适合创建 OS 模态窗口。其效果取决于操作系统/窗口管理器/桌面环境在 Wayland 上仅在合成器实现 inhibit-keyboard-shortcuts 协议时有效在 macOS 上由于苹果不允许应用在无特殊权限的情况下抓取键盘而无效。--detach的实现细节在 kitty/launcher/main.c启动器创建管道、fork()子进程并调用setsid()脱离会话父进程等待子进程完成setsid()后立即退出同时将 stdin 重定向到/dev/null除非--session从 STDIN 读取把 stdout/stderr 重定向到--detached-log指定的文件默认为/dev/null。调试与诊断选项--version -v输出当前 kitty 版本。--dump-commands将子进程收到的命令输出到 STDOUT。--replay-commands回放之前--dump-commands转储的命令。可以在新窗口中回放kitty sh -c kitty --replay-commands /path/to/dump/file; read--dump-bytes将子进程收到的原始字节保存到指定文件。--debug-rendering --debug-gl调试渲染命令使所有 OpenGL 调用检查错误而非忽略并打印杂项调试信息适合排查渲染问题。--debug-input --debug-keyboard打印接收到的按键与鼠标事件。--debug-font-fallback打印主字体缺失字符时回退字体选择的信息。--watcher已废弃应改用kitty.conf中的watcher配置项。启动器如何快速处理命令行源码视角在 Python 主程序启动之前C 启动器会先做一遍快速命令行处理见 kitty/launcher/main.c。其关键流程delegate_to_kitten_if_possible()检查参数若第二个参数以开头则转交给kitten可执行文件对应kitten 远程控制若出现kitten name且该 kitten 属于被包装列表也直接exec对应 kitten。parse_and_check_kitty_cli()调用由 kitty/simple_cli_definitions.py 生成 C 代码parse_cli_for_kitty()生成的解析器文件为cli-parser-data_generated.h解析器骨架在 kitty/launcher/cli-parser.h 中支持长选项--opt、--optvalue、短选项组合以及选项参数分离等标准 POSIX 风格。若检测到--help/--version直接输出并退出若检测到--detach则执行上述分离逻辑若检测到--single-instance则调用single_instance_main()。最终把解析结果通过 Python C API 以kitty_run_data字典形式传给 Python 层见 kitty/launcher/main.c 与 kitty/cli.py 的apply_preparsed_cli_flags()避免重复解析。对布尔类型选项解析器接受y、yes、true表示真n、no、false表示假对 choices 类型会校验取值并给出合法值列表未知选项会给出Did you mean式的编辑距离提示见 kitty/launcher/cli-parser.h。Tabs 与 Windows启动后的多任务组织kitty 支持把多个程序组织成 tabs 和 windows。顶层组织单位是 OS 窗口OS Window每个 OS 窗口包含一个或多个 tab每个 tab 包含一个或多个 kitty 窗口window。这些窗口可以像平铺窗口管理器那样以多种布局layout排列。以下快捷键均可通过kitty.conf自定义完整可映射动作列表见 docs/actions.rst高级映射方式见 docs/mapping.rst。滚动Scrolling滚动动作只在终端处于主屏幕main screen时生效当备用屏幕alternate screen激活例如全屏编辑器时按键事件会传递给终端内运行的程序。动作快捷键向上滚动一行scroll_line_upmacOS 另见⌥⌘⇞、⌘↑向下滚动一行scroll_line_downmacOS 另见⌥⌘⇟、⌘↓向上翻页scroll_page_upmacOS 另见⌘⇞向下翻页scroll_page_downmacOS 另见⌘⇟滚到顶部scroll_homemacOS 另见⌘↖滚到底部scroll_endmacOS 另见⌘↘跳到上一个 shell 提示符scroll_to_previous_prompt依赖 shell 集成见 docs/shell-integration.rst跳到下一个 shell 提示符scroll_to_next_prompt同上在 less 中浏览回滚缓冲show_scrollback浏览上一条命令输出show_last_command_output依赖 shell 集成在 less 中搜索回滚缓冲search_scrollbackmacOS 另见⌘FTabs动作快捷键新建 tabnew_tabmacOS 另见⌘t关闭 tabclose_tabmacOS 另见⌘w下一个 tabnext_tabmacOS 另见⌃⇥、⇧⌘]上一个 tabprevious_tabmacOS 另见⇧⌃⇥、⇧⌘[下一个布局next_layouttab 前移move_tab_forwardtab 后移move_tab_backward设置 tab 标题set_tab_titlemacOS 另见⇧⌘iWindows动作快捷键新建窗口new_windowmacOS 另见⌘↩新建 OS 窗口new_os_windowmacOS 另见⌘n关闭窗口close_windowmacOS 另见⇧⌘d调整窗口大小start_resizing_windowmacOS 另见⌘r下一个窗口next_window上一个窗口previous_window窗口前移move_window_forward窗口后移move_window_backward窗口移到顶部move_window_to_top视觉聚焦窗口focus_visible_window视觉交换窗口swap_with_window聚焦第 N 个窗口first_window、second_window……tenth_windowmacOS 另见⌘1到⌘9从左上角顺时针编号其他常用快捷键动作快捷键显示本帮助show_kitty_doc复制到剪贴板copy_to_clipboardmacOS 另见⌘c从剪贴板粘贴paste_from_clipboardmacOS 另见⌘v从选区粘贴paste_from_selection将选区传给程序pass_selection_to_program增大字号increase_font_sizemacOS 另见⌘减小字号decrease_font_sizemacOS 另见⌘-恢复字号reset_font_sizemacOS 另见⌘0切换全屏toggle_fullscreenmacOS 另见⌃⌘f切换最大化toggle_maximized输入 Unicode 字符input_unicode_charactermacOS 另见⌃⌘space在浏览器打开 URLopen_url重置终端reset_terminalmacOS 另见⌥⌘r编辑kitty.confedit_config_filemacOS 另见⌘,重载kitty.confreload_config_filemacOS 另见⌃⌘,调试kitty.confdebug_configmacOS 另见⌥⌘,打开 kitty shellkitty_shell提高背景透明度increase_background_opacity降低背景透明度decrease_background_opacity完整背景透明度full_background_opacity重置背景透明度reset_background_opacity在 kitty.conf 中自定义窗口管理快捷键basic.rst还给出了几组开箱即用的映射范例把它们写入 kitty.conf通常位于~/.config/kitty/kitty.conf即可生效仿照 vim 的窗口移动习惯聚焦相邻窗口并移动窗口map ctrlleft neighboring_window left map shiftleft move_window right map ctrldown neighboring_window down map shiftdown move_window up ...切换到之前激活的窗口nth_window对正数从零开始计数聚焦第 n 个窗口负数则取之前激活的窗口map ctrlp nth_window -1切换到第 n 个 OS 窗口只接受从 1 开始的正数map ctrl1 nth_os_window 1把当前窗口分离并移动到另一个 tab 或 OS 窗口# 将窗口移动到新的 OS 窗口 map ctrlf2 detach_window # 将窗口移动到新的 tab map ctrlf3 detach_window new-tab # 将窗口移动到之前激活的 tab map ctrlf3 detach_window tab-prev # 将窗口移动到当前 tab 左侧的 tab map ctrlf3 detach_window tab-left # 将窗口移动到当前 tab 左侧新建的 tab map ctrlf3 detach_window new-tab-left # 询问要移动到哪个 tab map ctrlf4 detach_window ask分离当前 tab# 将 tab 移动到新的 OS 窗口 map ctrlf2 detach_tab # 询问要移动到哪个 OS 窗口 map ctrlf4 detach_tab ask关闭当前 tab 内除活动窗口外的所有窗口map f9 close_other_windows_in_tab另外同一 kitty 实例内的 tabs 可以直接用鼠标拖拽来重新排列、分离或移动到另一个 OS 窗口。与 kitty 命令行相关的其他文档docs/basic.rst本文 Tabs/Windows 章节的原始出处docs/conf.rstkitty.conf语法与配置项总览docs/sessions.rst会话文件的完整语法与goto_session用法docs/remote-control.rst通过kitten 与--listen-onsocket 控制 kitty 的完整教程docs/actions.rst所有可映射到按键的动作清单docs/mapping.rst更复杂的按键映射模态映射、按应用映射等源码实现kitty/simple_cli_definitions.pyCLI 选项定义、kitty/launcher/main.c启动器快速命令行处理、kitty/launcher/cli-parser.hCLI 解析器骨架、kitty/cli.pyPython 侧解析与配置合并。掌握以上命令行选项与快捷键体系后无论是快速启动一个临时终端、按会话文件恢复整个开发环境还是用单实例/远程控制搭建自动化工作流都可以在 kitty 的命令行接口上直接完成。【免费下载链接】kittyIf you live in the terminal, kitty is made for you! Cross-platform, fast, feature-rich, GPU based.项目地址: https://gitcode.com/GitHub_Trending/ki/kitty创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考