kitty 可映射动作与按键映射完全指南:从动作分组到默认快捷键速查
2026/9/6 18:20:00 网站建设 项目流程

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

本篇指南围绕 kitty 的"可映射动作"(Mappable actions)体系展开:说明所有动作如何绑定到按键与鼠标事件、11 个动作分组各自包含哪些能力、以及仓库内置的全部默认键盘/鼠标快捷键。读完本文,你可以直接查到自己想要的动作与默认键位,并在kitty.conf中定制映射、组合宏、甚至用命令行面板(command palette)交互式触发任意动作。

一、什么是"可映射动作"

kitty 文档docs/actions.rst开篇即定义了本页的定位:所有列出的动作都可以通过kitty.conf中的mapmouse_map指令绑定到任意按键或鼠标事件上;每个动作旁标注的"默认快捷键"就是配置示例,键盘映射的进阶语法(组合、多键、模态映射等)在docs/mapping.rst中详述。

除了静态阅读,文档还指出了一条交互式路径:按下command_palette对应的快捷键(默认Ctrl+Shift+F3)可打开 command palette,在其中搜索并直接触发所有动作。

这一页并非手写,而是由源码在文档构建时自动生成:docs/conf.pywrite_conf_docs中调用kitty.actions.as_rst(),将结果写入generated/actions.rst,再由docs/actions.rst通过 include 引入。因此本文的清单与仓库源码始终保持一致。

二、动作清单是如何从源码生成的

理解生成机制后,你就能在源码中精确定位任何一个动作的实现。

1. 用@ac装饰器登记动作。kitty/types.py 定义了动作分组类型与登记装饰器:

ActionGroup = Literal['cp', 'sc', 'win', 'tab', 'fs', 'mouse', 'mk', 'lay', 'misc', 'debug', 'session'] class ActionSpec(NamedTuple): group: str doc: str def ac_T -> Callable[[_T], _T]: def w(f: _T) -> _T: setattr(f, 'action_spec', ActionSpec(group, doc)) return f return w

装饰器的第二个参数doc就是文档中该动作的说明文字:首行作为短帮助,其余行作为长帮助。

2. 反射收集 Window / Tab / Boss 三类对象上的所有动作。kitty/actions.py 的get_all_actions()遍历WindowTabBoss三个类,凡是带有action_spec属性的方法都会进入清单;文档中动作名(如copy_to_clipboard)就是方法名。此外源码还手工补入了一个特殊动作no_op——把某个快捷键映射到no_op后,kitty 将不再拦截该按键,而是原样传给终端内的程序:

ans['misc'].append(Action( 'no_op', 'misc', 'Unbind a shortcut', 'Mapping a shortcut to no_op causes kitty to not intercept the key stroke anymore, ' 'instead passing it to the program running inside it.'))

3. 关联默认快捷键。kitty/actions.py 的as_rst()会遍历definition.iter_all_maps()——即 kitty/options/definition.py 中全部默认map()条目,把每个动作与其默认快捷键配对输出,形如 "Default shortcuts using this action: ..."。kitten动作还会自动链接到对应 kitten 的文档页。

4. 动作分组。kitty/actions.py 中的groups字典定义了 11 个分组及其标题:

分组代码标题典型动作所在类
cpCopy/pasteWindow / Boss
scScrollingWindow
winWindow managementWindow / Tab / Boss
tabTab managementBoss
fsFont sizesBoss
mouseMouse actionsWindow
mkMarksWindow / Boss
layLayoutsTab
miscMiscellaneousBoss(含no_op
debugDebuggingBoss / Window
sessionSessionsBoss

从源码结构看,当前仓库中标注@ac的方法约有 140 处,分布在 kitty/window.py(42 处)、kitty/boss.py(71 处)、kitty/tabs.py(28 处)三个文件。

三、各分组的核心动作速览

以下按分组摘录高频动作,均取自源码@ac装饰器的文档字符串,实现位置见文件链接。

Copy/paste(cp—— kitty/window.py、kitty/boss.py:

动作说明
copy_to_clipboard将当前窗口选中文本复制到剪贴板
copy_ansi_to_clipboard带 ANSI 格式码复制
copy_or_interrupt有选中则复制,否则发送 SIGINT(Ctrl+C)
copy_and_clear_or_interrupt复制并清除选区,否则发送 SIGINT
pass_selection_to_program把选中文本作为命令行参数传给指定程序
clear_selection清除当前选区
paste_from_clipboard/paste_from_selection从剪贴板 / 主选区粘贴

Scrolling(sc—— kitty/window.py:scroll_line_upscroll_line_down(支持smooth平滑滚动参数)、scroll_page_up/scroll_page_down(整页滚动)、scroll_home(回到回卷缓冲顶部)、scroll_end(回到底部)、show_scrollback(用 less 式分页器浏览回卷缓冲)、show_last_command_outputscroll_prompt_to_bottom(把 shell 提示行滚动到屏幕底部)。

Window management(win—— 分布在 kitty/boss.py、kitty/tabs.py:new_windownew_os_windowclose_windownext_window/previous_windowfirst_window~tenth_window(直接聚焦第 1~10 个窗口)、move_window_forward/move_window_backward/move_window_to_topneighboring_window/move_window(按方向键导航/移动)、start_resizing_windowreset_window_sizes(撤销动态调窗)、focus_visible_window(可视化选窗,字符集由visual_window_select_characters配置)、swap_with_windowtoggle_fullscreentoggle_maximizedclose_os_windowquit

Tab management(tab—— kitty/boss.py:new_tabnext_tab/previous_tabclose_tabclose_other_tabs_in_os_windowgoto_tab(按序号跳转)、move_tab_forward/move_tab_backwardset_tab_titleselect_tab(交互式选择标签页)。

Font sizes(fs—— 通过change_font_size动作参数化:all +2.0(全体字号加 2 磅)、all *2.0(放大一倍)、all 0(复位)。默认快捷键见下文速查表。

Mouse actions(mouse—— kitty/window.py:mouse_handle_click(处理点击,可作用于selectionlinkprompt)、mouse_click_urlmouse_selection(普通/矩形/按词/按行选取)、paste_selection(中键粘贴主选区)等,均可作为mouse_map右侧的动作。

Marks(mk——toggle_marker(开关当前标记)、create_markerremove_markerscroll_to_mark(跳到上/下一个标记)。

Layouts(lay—— kitty/tabs.py:next_layout(切换下一个启用布局,可带步长)、last_used_layoutgoto_layout(切到指定布局)、toggle_layoutlayout_action(执行布局专属动作,详见 layouts 文档)。

Miscellaneous(misc—— 杂项,包含:edit_config_file(在编辑器中打开 kitty.conf)、kitten(运行任意 kitten,文档自动链接到对应页)、input_unicode_character(调用 unicode_input kitten)、open_url/open_url_with_hintssleep(按秒/分/时/天休眠,可小数)、remote_control/remote_control_script(触发远程控制命令或脚本)、launch(按 launch 规范开窗)、discard_event(完全丢弃事件,不传给程序)、no_op(释放该键)、grab_keyboard/ungrab_keyboardshow_error,以及 macOS 专属的hide_macos_appminimize_macos_window等。

Debugging(debug——debug_config(查看当前生效配置)、show_kitty_env_varsdump_lines_with_attrs(dump 屏幕行及属性)、simulate_color_scheme_preference_changetest_dragging(配合 mouse_map 测试拖拽)。

Sessions(session——goto_session(切换/创建会话)、save_as_session(把当前状态存为会话文件)、goto_previous_session

四、默认键盘映射全表

以下表格完整摘自 kitty/options/definition.py 中map()的默认值(kitty_mod默认为Ctrl+Shift,可在配置中整体更改;标注 macos 的条目仅在 macOS 上生效)。这就是文档中"每个动作的默认快捷键"一栏的数据来源。

功能快捷键绑定的动作
复制到剪贴板kitty_mod+ccopy_to_clipboard
粘贴(剪贴板)kitty_mod+vpaste_from_clipboard
粘贴(主选区)kitty_mod+sshift+insertpaste_from_selection
选区传给程序kitty_mod+opass_selection_to_program
上行/下行滚动kitty_mod+up/downkitty_mod+k/jscroll_line_up/scroll_line_down smooth
上页/下页滚动kitty_mod+page_up/page_downscroll_page_up/scroll_page_down
滚到顶/底kitty_mod+home/endscroll_home/scroll_end
滚到上一个 shell 提示行kitty_mod+zscroll_to_prompt -1
分页器浏览回卷缓冲kitty_mod+hshow_scrollback
浏览上一条命令输出kitty_mod+gshow_last_command_output
新建窗口kitty_mod+enternew_window
新建 OS 窗口kitty_mod+nnew_os_window
关闭窗口kitty_mod+wclose_window
下一个/上一个窗口kitty_mod+]/[next_window/previous_window
窗口前移/后移/置顶kitty_mod+f/b/`move_window_forward/move_window_backward/move_window_to_top
开始拖拽调窗kitty_mod+rstart_resizing_window
聚焦第 1~10 个窗口kitty_mod+1kitty_mod+0first_windowtenth_window
可视化选窗/换窗kitty_mod+f7/f8focus_visible_window/swap_with_window
下一个/上一个标签页kitty_mod+right/leftctrl+tab/ctrl+shift+tabnext_tab/previous_tab
新建/关闭标签页kitty_mod+t/qnew_tab/close_tab
标签页前移/后移kitty_mod+./,move_tab_forward/move_tab_backward
设置标签页标题kitty_mod+alt+tset_tab_title
切换布局kitty_mod+lnext_layout
增大/减小/复位字号kitty_mod+equal/pluskitty_mod+minus/kp_subtractkitty_mod+backspacechange_font_size all +2.0/-2.0/0
打开 URL(hints)kitty_mod+eopen_url_with_hints
插入选中路径/行/单词/哈希kitty_mod+p>f/>l/>w/>h多键映射,调用kitten hints --type path/line/word/hash --program -
插入选定文件/目录kitty_mod+p>c/>dkitten choose-files [--mode=dir]
打开选中文件指定行 / 超链接kitty_mod+p>n/>ykitten hints --type linenum/--type hyperlink
全屏/最大化kitty_mod+f11/f10toggle_fullscreen/toggle_maximized
Unicode 输入kitty_mod+ukitten unicode_input
编辑配置文件kitty_mod+f2edit_config_file
打开 kitty 命令行 shellkitty_mod+escapekitty_shell window
背景透明度增减/满/复位kitty_mod+a>m/>l/>1/>dset_background_opacity +0.1/-0.1/1/default
复位终端kitty_mod+deleteclear_terminal reset active
重载 kitty.confkitty_mod+f5load_config_file
调试配置kitty_mod+f6debug_config
打开命令面板kitty_mod+f3command_palette

macOS 专属映射还包括:cmd+enter新窗口、cmd+n新 OS 窗口、shift+cmd+d关窗、cmd+1cmd+0聚焦窗口、shift+cmd+]/[切标签页、cmd+t新标签页、cmd+w关标签页/关 OS 窗口、ctrl+cmd+f全屏、cmd+,编辑配置、opt+cmd+r复位终端、cmd+q退出等。

所有字母类默认快捷键均带--allow-fallback=shifted,ascii,即同时匹配"按住 Shift 的字符"与"该物理键在 US 布局下的字符",从而在非拉丁键盘布局(俄语、阿拉伯语等)下依然可用;该机制的完整说明见 mapping 文档。

五、默认鼠标映射全表

鼠标绑定通过mouse_map指令配置,语法为mouse_map 按钮名 事件类型 模式 动作,事件类型取值press/release/doublepress/triplepress/quadruplepress,模式取值ungrabbed(程序未抓取鼠标)与grabbed。默认条目(kitty/options/definition.py 中的 28 条mma()):

功能鼠标事件模式动作
点击链接或移动光标左键单击ungrabbedmouse_handle_click selection link prompt
抓取状态下点击链接shift+左键单击grabbed,ungrabbedmouse_handle_click selection link prompt
点击链接(释放时)ctrl+shift+左键释放grabbed,ungrabbedmouse_handle_click link
中键粘贴主选区中键释放ungrabbedpaste_from_selection
开始选择左键按下ungrabbedmouse_selection normal
矩形选择ctrl+alt+左键按下ungrabbedmouse_selection rectangle
选中一个词左键双击ungrabbedmouse_selection word
选中一行左键三击ungrabbedmouse_selection line
从行首选中一行alt+左键三击ungrabbedmouse_selection line_from_begin
从点击点选中到行尾ctrl+alt+左键三击ungrabbedmouse_selection line_from_point
扩展选区右键按下ungrabbedmouse_selection extend
扩展选区(shift)shift+左键按下ungrabbedmouse_selection extend
抓取状态下中键粘贴shift+中键释放ungrabbed,grabbedpaste_selection
抓取状态下左键选择/双击选词/三击选行shift+左键/shift+alt+左键/ctrl+shift+alt+左键grabbed 等mouse_selection系列
查看点击的命令输出ctrl+shift+右键按下ungrabbedmouse_show_command_output

kitty 还内置了"链接点击拦截"细节:ctrl+shift+左键press阶段先discard_event丢弃按压事件、在release阶段再触发mouse_handle_click link,避免与选区操作互相干扰——这也是"一个鼠标事件拆成两条映射"的范例写法。

六、用 map / mouse_map 定制你自己的映射

kitty.conf中的map基本语法(摘自 mapping 文档):

# 基本形式:修饰键+键 → 动作 map ctrl+a new_window_with_cwd # 组合多个动作(宏),用冒号分隔 map kitty_mod+e combine : new_window : next_layout # 多键序列 map ctrl+f>2 set_font_size 20 # 释放默认快捷键(映射到空或 no_op,按键将传给终端内程序) map kitty_mod+enter # 完全丢弃事件(连程序也不给) map kitty_mod+f1 discard_event # 触发远程控制命令 / 脚本 / kitten map f1 remote_control set-spacing margin=30 map f1 remote_control_script /path/to/myscript map f1 kitten mykitten.py # 发送任意文本或按键 map f1 send_text normal,application echo Hello, world!\r map alt+s send_key ctrl+s

映射进阶能力(均出自 mapping 文档,此处给出要点以便配合动作清单使用):

  • 模态映射map --new-mode mw kitty_mod+f7创建模式后,map --mode mw ...为该模式定义按键,可用--on-unknownbeep/ignore/end/passthrough)与--on-action end控制未知键与动作后行为;
  • 条件映射map --when-focus-on title:...仅在焦点窗口满足条件时生效(例如编辑器运行时释放某个组合键,避免与程序内快捷键冲突);
  • 超时map_timeout 2.0设置全局多键/模态超时,map --new-mode resize --timeout 5.0 ...可按模式覆盖;
  • 调试kitty --debug-input打印每次按键的系统事件与 kitty 处理结果;kitten show-key(加-m kitty使用 kitty 键盘协议)查看应用实际收到的按键。

七、用 command palette 浏览与触发全部动作

回到docs/actions.rst提到的第二条路径:默认映射map kitty_mod+f3 command_palette(即Ctrl+Shift+F3,定义于 kitty/options/definition.py)打开 command palette 面板。

面板中的要点(详见 kittens/command-palette 文档):

  • 已绑定快捷键的动作与未绑定的动作(标记(unmapped))一起按类别列出,鼠标绑定单独成节;F12切换是否显示未绑定动作;
  • 输入即搜,跨key / action / category三列做大小写不敏感匹配,支持单词精确、前缀与最多两处拼写容错,匹配更多词项的条目排名更高;
  • Enter执行选中动作,Escape清空搜索或关闭面板,方向键/Ctrl+N/P/Ctrl+J/K/Page Up/Down/Home/End 导航,鼠标点击可直接执行;
  • 自定的模态键盘映射会以独立分组头显示。

"发现未绑定动作 → 记下动作名 → 回kitty.conf添加映射"正是动作清单与面板配合的日常工作流。

八、参考文件索引

内容路径
动作清单原始页面(include 生成文件)docs/actions.rst
动作自动采集与 RST 生成kitty/actions.py
@ac装饰器与ActionGroup定义kitty/types.py
动作实现(窗口级)kitty/window.py
动作实现(标签页/布局级)kitty/tabs.py
动作实现(Boss 级:标签页、字体、会话等)kitty/boss.py
默认 map / mouse_map 全部条目kitty/options/definition.py
按键映射语法进阶docs/mapping.rst
command palette 文档与实现docs/kittens/command-palette.rst、kittens/command_palette/main.go

适用前提:以上内容基于当前仓库的源码与配置定义,默认快捷键以definition.pymap()/mma()的默认值为准;macOS 专属条目在 Linux 上不会生效,kitty_mod的实际组合取决于你的kitty.conf设置。

【免费下载链接】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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询