快捷键与命令
文档编写中
部分内容可能尚不完整。
ThinkTerm 自己加的快捷键很少。键位表是 WezTerm 的,只有下面说的数字键除外;ThinkTerm 在终端周围加的东西 —— Space、Thread、Live Overview、远程主机 —— 大多靠鼠标、命令面板,或者在 macOS 上靠菜单栏来用。这些命令都可以在设置的快捷键页或配置文件里绑上按键。
ThinkTerm 加的快捷键
| 操作 | macOS | Linux 和 Windows |
|---|---|---|
| 打开设置 | ⌘, | Ctrl+Shift+, |
| 打开或关闭命令面板 | ⌘⇧P | Ctrl+Shift+P |
| 查找线程 | ⌘P | — |
| 打开侧边栏里第 1 到第 9 个 Thread | ⌘1 到 ⌘9 | Ctrl+Shift+1 到 9 |
| 跳到第 1 到第 8 个标签,9 是最后一个 | Ctrl+1 到 Ctrl+9 | Ctrl+1 到 Ctrl+9 |
其余都是 WezTerm 的默认键位,列在 WezTerm 的 Default Key Assignments 页面上:⌘T 新建标签,⌘W 关闭标签,⌘C 和 ⌘V,调整字号的那几个键,等等。在 macOS 上 Ctrl+Shift+P 同样能打开命令面板,和 WezTerm 里一样。⌘P 打开命令面板时直接停在 查找线程 组里;在 macOS 以外 Ctrl+P 属于 shell,所以它没有默认按键。
数字键
⌘1 到 ⌘9(macOS 以外是 Ctrl+Shift+1 到 9)打开侧边栏里从上往下数的前九个 Thread,只数有 Thread 的行。按住 ⌘(macOS 以外是 Ctrl+Shift)大约半秒,这些行就会各自显示到达它的按键。这期间按了别的键,就会取消这次显示,直到那些键松开,所以你自己设的快捷键永远不会让数字闪一下。两者都跟着快捷键页走:在那里改了某个键,要按住的键和显示的数字也随之改变。
标签换到了 Ctrl+1 到 Ctrl+8,Ctrl+9 是最后一个标签,所有系统都一样;在 WezTerm 里它们在 macOS 上是 ⌘1 到 ⌘9,其他系统是 Ctrl+Shift+1 到 9。于是单独的 Ctrl 加数字,不再到达终端里的程序,比如 vim 里的 Ctrl-6,或 Emacs 和 readline 里当作撤销的 Ctrl-7。把这个键绑到 DisableDefaultAssignment,就能还给程序。
thinkterm show-keys 打印实际生效的键位表,你自己加的键也合在里面,在快捷键页设置的也在其中。设置 disable_default_key_bindings = true 会把 ThinkTerm 的快捷键连同 WezTerm 的一起去掉 —— 但命令面板会保留它的默认组合键,除非你自己的某个组合键已经能打开它,或者你已经把这些组合键绑给了别的动作或腾空了。在快捷键页设置的快捷键不受它影响。
没有快捷键的那些
除了 macOS 上用 ⌘P 的 查找线程,以及前九个 Thread 的数字键,切换 Space 或 Project,新建 Thread,开关侧边栏,打开 Live Overview 和 Library,都没有默认按键。要用的话,走这些地方:
| 想要 | 用 |
|---|---|
| 跳到任意 Space 里的任意 Thread | 上面的数字键(侧边栏里的前九个),侧边栏底部的 查找线程,macOS 上的 Shell › Find Thread,或命令面板里的 查找线程 组 |
| 切换 Space | 侧边栏顶部的 Space 菜单,命令面板里的 切换空间 组,或 Previous Space 和 Next Space(macOS 上在 Window 菜单,也可以用命令面板) |
| 新建 Space | Space 菜单 › 新建空间 |
| 给当前所在的 Project 加一个 Thread | 侧边栏顶部的 新建会话,macOS 上的 Shell › New Thread,或命令面板里的 New Thread |
| 打开 Live Overview | 侧边栏底部它的按钮,macOS 上的 Shell › Live Overview,或命令面板里的 Live Overview |
| 打开 Library(每个 Space 一张卡片,取代左侧边栏) | 侧边栏底部它的按钮,macOS 上的 Shell › ThinkTerm Library,或命令面板里的 ThinkTerm Library |
| 打开远程主机 | 侧边栏底部它的按钮,macOS 上的 Shell › Remote Hosts...,或命令面板 |
| 显示或隐藏侧边栏 | 标签栏里的侧边栏按钮,macOS 上的 View › Toggle Left Sidebar 和 View › Toggle Right Sidebar,或命令面板 |
| 重命名标签 | 标签右键菜单里的 重命名标签页… |
这些都有可以绑到按键上的动作 —— 见 绑定 ThinkTerm 的动作。除了新建 Space 和重命名标签,其余也都可以在快捷键页上绑;那里的列表只收命令面板默认就有的动作。跳到某个具体的 Thread 或 Space 没有专门的动作,但命令面板能让你只用键盘到达:打开它,输入名字里的几个字,只要 搜索组内条目 开着(默认就是开的),搜索就会深入 查找线程 和 切换空间 两个组。
命令面板
⌘⇧P(Linux 和 Windows 上是 Ctrl+Shift+P)打开命令面板,macOS 上的 Edit › Activate Command Palette 也一样。它列出 ThinkTerm 和 WezTerm 的全部命令,有按键的连按键一起显示,随着输入逐步收窄。再按一次快捷键、按 Escape、按 Ctrl+G,或在面板外点一下,都会关掉它。
命令面板是一张带页脚的窄卡片。列表最上面是 查找线程,以及几个人们最常用的命令:新建 Thread、标签和窗口,拆分 pane,关闭标签,搜索,以及设置。最近用过的排在前面,其余照那个顺序,再往后是各个组和所有其他命令。每一行显示该命令当前绑定的键,在快捷键页里设置的也算,查找线程 也显示它自己的键。只在复制模式里才起作用的键不显示。鼠标在行上移动时,选中项会跟着走。
页脚写着两个键:修改快捷键 是 ⌘↵(Linux 和 Windows 上是 Ctrl+Enter),执行 是 Enter。修改快捷键 会打开 设置 › 快捷键,并把选中命令的名字填进 搜索动作,这样你在找到它的地方就能改它的快捷键;点页脚的按钮效果相同。如果快捷键页里没有这样的命令(比如选中的是一个组或一个 Thread),就以空搜索打开。
另有两个地方会直接打开到某一组里。侧边栏底部的 查找线程 按钮(macOS 上还有 ⌘P)打开时就在 查找线程 组里;在 设置 › 外观 里点 当前配色方案,打开时就在 更换主题 里。从这两处退出来,回到的都是完整列表。
选择它的快捷键
设置 › 命令面板 有四行:
| 设置 | 作用 |
|---|---|
快捷键 | 打开和关闭命令面板的组合键:⌘ ⇧ P(默认)、⌘ P、⌘ K 或 ⌃ ⇧ P |
显示行数 | 列表滚动之前显示多少条结果。默认的 自动 按窗口大小来定,否则为 1 到 30 |
字体大小 | 面板里文字的大小,8 到 32 磅。重置后回到配置里的 command_palette_font_size,不设置就是 13 |
搜索组内条目 | 在顶层搜索时,是否也列出几个组内的匹配。默认开启 |
在 macOS 以外,这些标签里的 ⌘ 指的是 Super 键,只有默认那项例外:在那里 ⌘ ⇧ P 是 Ctrl+Shift+P,因为桌面环境通常把 Super 留给自己用。
这里选的组合键会并入 快捷键页 设置的快捷键,绑给命令面板,所以它压过这个组合键原本的作用。⌘ K 是要留意的那个:在 WezTerm 的键位里 ⌘K 是清空回滚,选了 ⌘ K 之后它改为打开命令面板。清空回滚仍然留在命令面板里,名为 Clear scrollback。同样,在 macOS 上选 ⌘ P 会把 ⌘P 从 查找线程 手里拿走。默认的组合键属于键位表,不属于这项设置,所以不管你选哪个,⌘⇧P 和 Ctrl+Shift+P 都照常有效。thinkterm show-keys 会列出你选的组合键。
这两处共用组合键。选了一个组合键,就会把快捷键页在它上面设置的东西清掉;在快捷键页把同一个组合键设给别的动作,则会取代这里的选择。菜单里的四个组合键都不再能打开命令面板时 —— 比如默认的那个在快捷键页被删掉,或者给了别的动作 —— 快捷键 这一行会显示 在「快捷键」页设置。
命令面板里的按键
| 按键 | 作用 |
|---|---|
| ↑ ↓,或 Ctrl+P 和 Ctrl+N | 移动选中项 |
| Page Up、Page Down | 选中项移动一页 |
| Home、End | 搜索框为空时,跳到第一项或最后一项;否则移动光标 |
| Enter | 运行选中的命令,或打开选中的组 |
| Tab | 打开选中的组 |
| Backspace | 在组内且搜索框为空时,退出这个组,并恢复你离开时的搜索内容和选中项 |
| Ctrl+U | 清空搜索 |
| ⌘Enter(Linux 和 Windows 上是 Ctrl+Enter) | 打开 设置 › 快捷键,搜索选中的命令 |
| Escape、Ctrl+G 或命令面板快捷键 | 关闭命令面板 |
| ⌘A、⌘C、⌘X、⌘V | 在搜索框里全选、复制、剪切、粘贴。Linux 和 Windows 上是 Ctrl |
| ⌘← ⌘→、⌘⌫ | 光标到开头或结尾、删除到开头。仅 macOS |
| ⌥← ⌥→、⌥⌫ | 按词移动或删除。Linux 和 Windows 上是 Ctrl |
组
成批的同类命令会被收进组里,免得上千个配色方案把其余命令淹没。组像文件夹一样打开。
| 组 | 里面有什么 |
|---|---|
查找线程 | 每个 Space 里每个保存下来的 Thread,归在各自的 Project 下,右侧标出所属的 Space。置顶的 Thread 排在最前,已归档 Project 的 Thread 排在最后,标着 (已归档)。搜索会匹配 Thread、它的 Project、它的 Space,以及文件夹路径。选中一个时,如有需要会先切换 Space |
更换主题 | 全部配色方案,包括内置的和你配置里 color_schemes 定义的,最上面是 使用配置默认值。移动选中项时,每个方案都会在窗口上预览;按 Enter 则应用到所有窗口并记住它。以其他任何方式关掉命令面板,颜色都会还原 |
切换空间 | 这个窗口可以显示的 Space。有三个或更多时才出现 |
切换工作区 | WezTerm 自己的多路复用器工作区,当前所在的除外 |
在域中新建标签页、连接域、断开域 | 多路复用器的域,和 WezTerm 里一样 |
启动 | 你的 launch_menu 里的条目 |
后五个只有在条目达到三个或更多时才收成组;不足三个时,它们的命令直接留在主列表里。搜索内容达到两个字符后,每个组内最多三个匹配会列在直接匹配之后,所以输入一个配色方案的名字,不必先打开 更换主题 也能找到它。搜索组内条目 可以关掉这一行为。
查找线程 是唯一能列出当前 Space 以外的 Thread、以及已归档 Thread 的地方;侧边栏一次只显示一个 Space。
最近使用
命令面板会记住你运行过什么。常用、近用的命令排在命令列表顶部(在各个组和常用命令下面),更换主题 里你选过的方案也会以同样的方式往前排。这份记录是 ThinkTerm 数据目录里的 recent-commands.json —— 数据目录在哪里见 配置 —— 最多保留 200 条,满了先丢最少用的。
你自己的命令可以用 WezTerm 的 augment-command-palette 事件加进来,和在 WezTerm 里一样。
macOS 菜单
ThinkTerm 自己的命令和 WezTerm 的一起放在 macOS 菜单栏里:
| 菜单 | 菜单项 | 按键 |
|---|---|---|
| ThinkTerm | About ThinkTerm | |
| ThinkTerm | Check for Updates... —— 打开 设置 › 软件更新 | |
| ThinkTerm | Reload configuration | ⌘R |
| ThinkTerm | Settings... | ⌘, |
| ThinkTerm | Hide Application | ⌘H |
| ThinkTerm | Quit ThinkTerm | ⌘Q |
| ThinkTerm | Quit and Stop Session Server —— 退出,并结束后台会话服务器里的每个终端 | |
| Shell | New Thread —— 给你所在的 Project 加一个 Thread | |
| Shell | Live Overview | |
| Shell | ThinkTerm Library | |
| Shell | Remote Hosts... | |
| Shell | Add Remote Host... —— 打开远程主机,并新建一个空白主机 | |
| Shell | Find Thread —— 打开命令面板,停在它的 查找线程 组里 | ⌘P |
| Edit | Activate Command Palette | ⌘⇧P |
| View | Toggle Left Sidebar | |
| View | Toggle Right Sidebar | |
| Window | Previous Space | |
| Window | Next Space | |
| Window | Select Thread(Activate 1st Thread 到 Activate 9th Thread) | ⌘1 到 ⌘9 |
Linux 和 Windows 没有菜单栏。在那里,同样的命令以同样的名字出现在命令面板里,About ThinkTerm、Hide Application 和 Quit ThinkTerm 除外。
有几个命令只在命令面板里,既没有菜单项也没有按键:
| 命令 | 作用 |
|---|---|
Archive Active Workspace | 归档你所在的 Project:关闭它的 pane,保留它的 Thread 和布局 |
Show Archived Workspaces | 在侧边栏底部显示已归档的 Project,直到再运行一次或窗口关闭 |
查找线程、更换主题 和 切换空间 这几个组 | 见上文 |
这两个命令名里的「workspace」指的是 Project,也就是侧边栏菜单里的叫法。切换工作区 组则是另一回事:那是 WezTerm 的多路复用器工作区。菜单栏、命令面板和快捷键页里的命令名都跟着界面语言走,切换语言时菜单栏会立刻重建。本页的表格里,命令名按英文名书写。命令面板按英文名记住你运行过的命令,所以换了语言,最近使用记录仍然有效。归档的细节见 Space、Project 与 Thread。
绑定 ThinkTerm 的动作
按键在配置文件的 keys 表里设置,和 WezTerm 完全一样 —— 见 WezTerm 的 Key Binding 页面。ThinkTerm 在 wezterm.action 里加了这些动作:
| 动作 | 作用 |
|---|---|
OpenSettings | 打开设置 |
CheckForUpdates | 打开设置里的软件更新页 |
QuitAndStopSessionServer | 退出 ThinkTerm 并停止后台会话服务器,其中每个终端都会结束 |
ToggleLiveOverview | 打开或关闭 Live Overview |
ToggleLibrary | 用 Library 取代左侧边栏显示,再用一次则换回侧边栏 |
ActivateWorkspaceThreadByIndex | 打开侧边栏里该编号那一行的 Thread,从 0 数起,只数有 Thread 的行。前九个已绑定到数字键 |
OpenSshHosts | 打开或关闭远程主机 |
AddRemoteHost | 打开远程主机,并新建一个空白主机 |
OpenThreadSearch | 打开命令面板,停在它的 查找线程 组里,同侧边栏的 查找线程 按钮 |
CreateWorkspaceThreadInActiveProject | 给你所在的 Project 加一个 Thread,同侧边栏的 新建会话 |
ToggleWorkspaceSidebar | 显示或隐藏左侧边栏 |
ToggleRightSidebar | 显示或隐藏右侧边栏 |
CreateSpace | 新建一个 Space,把窗口切过去,并让它的名字进入编辑状态 |
ActivateSpaceRelative | 让窗口移动指定个数的 Space,负数向前,顺序与在侧边栏上滑动经过的顺序相同,到头就停。-1 和 1 就是 Previous Space 和 Next Space |
ArchiveActiveProject | 归档你所在的 Project,同 Archive Active Workspace |
ToggleShowArchivedProjects | 在侧边栏里显示或隐藏已归档的 Project |
PromptRenameTab | 让当前标签的名字进入编辑状态 |
SpawnTabToRight | 在当前标签右侧紧挨着新开一个标签,开在指定的域里 |
SetColorScheme | 按名字切换终端配色方案,同 更换主题,并记住它 |
FocusPluginPanel | 在右侧边栏打开给定 id 的插件的面板,并把键盘交给它;面板拿着键盘时再按一次,键盘就还给终端。见 插件 |
local wezterm = require 'wezterm'
local act = wezterm.action
local config = wezterm.config_builder()
config.keys = {
{ key = 'o', mods = 'CMD|SHIFT', action = act.ToggleLiveOverview },
{ key = 'LeftArrow', mods = 'CMD|ALT', action = act.ActivateSpaceRelative(-1) },
{ key = 'RightArrow', mods = 'CMD|ALT', action = act.ActivateSpaceRelative(1) },
{ key = 'b', mods = 'CMD|ALT', action = act.ToggleRightSidebar },
{ key = 'n', mods = 'CMD|ALT', action = act.CreateSpace },
{ key = 'r', mods = 'CMD|ALT', action = act.PromptRenameTab },
{ key = 't', mods = 'CMD|ALT', action = act.SpawnTabToRight 'CurrentPaneDomain' },
{ key = 'd', mods = 'CMD|ALT', action = act.SetColorScheme 'Dracula' },
}
return config你绑上的动作会在命令面板里显示它的按键;默认不在命令面板里的动作,比如 PromptRenameTab,一旦有了按键也会出现在里面。FocusPluginPanel 是例外:插件的面板从侧边栏进入,所以不管它有什么按键,这个动作都不会出现在命令面板里。
Escape 与 Enter
在 Library 里,Escape 换回侧边栏,除非别的东西先拿到了键盘:对话框、复制模式、Live Overview,或右侧边栏里的输入框。其他按键仍然交给旁边的终端。
在 Live Overview 里,Escape 关闭它。如果某张卡片正在询问是否关闭它的终端,第一次按 Escape 是回答「否」,再按一次才关闭总览。
就地重命名时 —— Space、Project、Thread、标签,或者文件面板里的文件 —— 名字打开时已经全部选中。Enter 保留新名字,Escape 放弃。点击别处或切到别的应用,也会像 Enter 一样保留。名字里的复制、粘贴和光标按键,与命令面板搜索框里的相同。
快捷键页
设置 › 快捷键 让你不碰配置文件就能修改快捷键。它画出一块键盘 —— macOS 上是 Mac 布局,其他系统是 PC 布局 —— 每个键显示它在上方所开修饰键下运行的动作。
键盘上方是一个 搜索动作 框和四个修饰键开关:macOS 上是 ⌘ Command、⇧ Shift、⌥ Option 和 ⌃ Control,其他系统是 Ctrl、Shift、Alt 和 Super(Windows 上是 Win)。键盘上画出的修饰键也能拨动同一组开关。开关一开始在 macOS 上是 ⌘,其他系统上是 Ctrl+Shift,也就是各平台自带快捷键的起手修饰键。点一个键,可以看到它的组合键、它运行的动作,以及这个快捷键的来源;下面的按钮取决于这个键是什么:
| 这个键 | 含义 | 按钮 |
|---|---|---|
动作名称,默认 | ThinkTerm 或 WezTerm 内置的快捷键 | 修改…、删除 |
动作名称,配置文件 | 来自配置文件 keys 的快捷键 | 修改…、删除 |
动作名称,已修改 | 在这一页设置的快捷键。它如果取代了配置文件里的另一个,详情里会写出那个动作 | 修改…、删除、恢复默认 |
已删除 | 在这一页从这个键上拿掉的默认或配置文件快捷键 | 恢复默认、分配… |
未使用,键面空白 | 没有绑定任何东西 | 分配… |
系统 | 操作系统会在 ThinkTerm 看到之前就取走这个组合键,比如 macOS 上的 ⌘Tab,或 Linux 和 Windows 上的 Alt+Tab | 无 |
Shell | 可以绑,但 shell 和终端里的程序要用它:单独按或只加 Shift 的 Enter、方向键、字母之类的键,或者加 Ctrl 或 Alt 的可打印字符键。绑了它,它们就用不上了 | 仍然分配… |
删除 会腾空这个组合键。恢复默认 收回在这一页设置的东西,于是这个键回到配置文件或默认键位给它的样子。
修改快捷键
在某个键上点 修改…,或在搜索列表里点某个动作旁的 添加快捷键,会请你按新的组合键:提示是 请按下「动作」的新快捷键,Esc 取消。。只按修饰键没有反应;单独按或只加 Shift 的非功能键也没有,因为那只会输入或移动光标。系统取走的组合键会被拒绝,页面继续等你按下一个。在 macOS 上,等待期间菜单快捷键暂时不起作用,所以 ⌘W 会被记录下来,而不是关掉标签。
如果这个组合键已经运行着另一个动作,页面会告诉你,并给出 替换 或 取消;如果 shell 和它的程序要用它,则给出 仍然使用 或 取消。修改一个键会让动作离开原来的组合键:原组合键被腾空,如果它原本是在这一页设置的,则回到配置文件或默认的那个动作。
在空闲的键上点 分配…,会在 为 …… 选一个动作 的提示下列出动作,每一行有一个把这个键交给该动作的 分配 按钮。在 搜索动作 里输入,会收窄这个列表;没有键在分配时,则会列出名称匹配的动作,每行带着它现有的快捷键和一个 添加快捷键 按钮,点它会像上面一样请你按组合键。两种列表都最多显示 50 个,之后是 还有 n 个,缩小搜索范围即可看到。
用 wezterm.action_callback 做出来的函数所对应的动作,不能在这里修改,也不能给它换组合键:函数只能保存在 thinkterm.lua 里,所以页面不动它,并告诉你原因。
你改过的
设置过任何东西之后,你改过的 会列出每一个与配置文件和默认键位不同的快捷键,带着标签 —— 新增、已修改 或 已删除 —— 和一个按钮:新增的是 删除,其余是 恢复默认。点一行会在键盘上显示它的键。下面的 全部恢复默认 会忘掉这一页设置的所有快捷键,命令面板的 快捷键 选择也一并清除。
保存在哪里
在这里设置的快捷键保存在 settings.json 的 keymap.keys 下,写法与配置文件 keys 的 { key, mods, action } 相同,配置文件本身从不被改写。这里设置的快捷键优先于配置文件的 keys,配置文件的 keys 又优先于默认键位。被删掉的默认或配置文件快捷键,会在它的组合键上记成 DisableDefaultAssignment。这里只管默认键表,不管具名的 key_tables。
修改会立刻对所有打开的窗口生效,无需重新加载配置,macOS 菜单栏也会显示新的按键。
其他地方的按键
- TUI 有一套自己的键位,以 Ctrl-b 为前缀 —— 见 TUI。
- 浏览器页面有自己的按键和自己的搜索快捷键 —— 见 网页访问。
- 笔记编辑器的按键见 文件与笔记。
- 终端里右键做什么,以及用来叫出菜单的 Ctrl(macOS 上是 Control),见 复制与粘贴。把 pane 标签拖到某一格上来加入、分屏或互换,见 窗口标签与 pane 标签。
相关
- Space、Project 与 Thread —— 命令面板里的 Space 和 Thread 命令作用的对象
- 窗口 —— 侧边栏、Live Overview 和标签栏
- 配置 ——
keys表所在的配置文件 - 命令行 ——
thinkterm show-keys
