Skip to content

快捷键与命令 ​

文档编写中

部分内容可能尚不完整。

ThinkTerm 自己加的快捷键很少。键位表是 WezTerm 的,只有下面说的数字键除外;ThinkTerm 在终端周围加的东西 —— Space、Thread、Live Overview、远程主机 —— 大多靠鼠标、命令面板,或者在 macOS 上靠菜单栏来用。这些命令都可以在设置的快捷键页或配置文件里绑上按键。

ThinkTerm 加的快捷键 ​

操作macOSLinux 和 Windows
打开设置⌘,Ctrl+Shift+,
打开或关闭命令面板⌘⇧PCtrl+Shift+P
查找线程⌘P—
打开侧边栏里第 1 到第 9 个 Thread⌘1 到 ⌘9Ctrl+Shift+1 到 9
跳到第 1 到第 8 个标签,9 是最后一个Ctrl+1 到 Ctrl+9Ctrl+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 菜单,也可以用命令面板)
新建 SpaceSpace 菜单 › 新建空间
给当前所在的 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 菜单栏里:

菜单菜单项按键
ThinkTermAbout ThinkTerm
ThinkTermCheck for Updates... —— 打开 设置 › 软件更新
ThinkTermReload configuration⌘R
ThinkTermSettings...⌘,
ThinkTermHide Application⌘H
ThinkTermQuit ThinkTerm⌘Q
ThinkTermQuit and Stop Session Server —— 退出,并结束后台会话服务器里的每个终端
ShellNew Thread —— 给你所在的 Project 加一个 Thread
ShellLive Overview
ShellThinkTerm Library
ShellRemote Hosts...
ShellAdd Remote Host... —— 打开远程主机,并新建一个空白主机
ShellFind Thread —— 打开命令面板,停在它的 查找线程 组里⌘P
EditActivate Command Palette⌘⇧P
ViewToggle Left Sidebar
ViewToggle Right Sidebar
WindowPrevious Space
WindowNext Space
WindowSelect 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 的插件的面板,并把键盘交给它;面板拿着键盘时再按一次,键盘就还给终端。见 插件
lua
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 标签。

相关 ​