深色模式
Warp 使用入门
概述
Warp 是一个终端模拟器,用 Rust 编写并由 GPU 渲染界面。它最明显的特点是把每次执行的命令和它的输出合并成一个可选中、可复制、可搜索的「命令块」,同时内置了可以直接在会话里跑命令的 AI 智能体。目前支持 macOS、Linux 和 Windows。
与终端和 shell 的关系
Warp 就是终端模拟器本身,用来替代 macOS 自带的 Terminal 或 iTerm2,而不是运行在它们里面。想先在几个终端之间做横向比较,可以看 macOS 终端替代器对比。它并不替代 shell:命令仍然由 zsh、bash 或 fish 解释执行。
Warp 会向 shell 注入一段集成脚本,用来上报每条命令的开始、结束和退出码,这些边界信息就是命令块的来源。
需要区分的是,Warp 不是 tmux 那样的终端复用工具,它没有独立于界面运行的后台服务。关闭窗口时,其中的进程会随之结束;Warp 提供的会话恢复只会重开标签页和面板并回到原来的目录,不会接回原先的进程。要让远程任务在断开连接后继续运行,仍然需要在服务器上使用 tmux。
由于集成脚本接管了提示符,自定义的 PS1 默认不会生效。想继续用自己的提示符,需要在配置里显式开启 honor_ps1。
安装
使用 Homebrew 安装:
sh
brew install --cask warp安装后可以在 Warp 菜单的 About Warp 中查看版本,版本号形如 0.2026.07.29.09.05.02。
Warp 自带一个命令行工具 oz,用于在终端里直接调用它的智能体。它随应用一起安装,并在 Warp 会话中自动加入 PATH:
sh
oz --version结构
一个 Warp 窗口包含多个标签页,标签页可以拆分为多个面板,每个面板是一个独立的 shell 会话,会话中的每条命令又对应一个命令块。
Window:窗口,标签页可以在窗口之间拖动。Tab:标签页,可以命名、着色,也可以编成标签组。Pane:面板,一个标签页里的分屏区域,对应一个独立的 shell 会话。Block:命令块,一条命令连同它的输出、退出码和执行目录。
一个常见安排是:一个项目对应一个窗口,里面开几个标签页,每个标签页再按需要拆成多个面板。例如 dev 标签页里分出编辑器和开发服务两个面板,ops 标签页里单独放日志。
通用
Warp 的快捷键没有 tmux 那样的前缀键,都是直接按下的组合键。下文列出的是 macOS 上的默认值,Windows 与 Linux 大多把 CMD 换成 CTRL-SHIFT。
命令面板与设置
命令面板是找不到入口时的统一出发点,它同时搜索操作、设置项、快捷键、工作流、笔记本和本地文件。设置面板与配置文件是同一份配置的两个视图,改动会互相同步。
| 快捷键 | 作用 |
|---|---|
CMD-P | 打开命令面板 |
CMD-, | 打开设置面板 |
CTRL-CMD-K | 打开快捷键编辑器 |
CTRL-CMD-T | 打开主题选择器 |
CMD-O | 按名称搜索本地文件 |
CMD-L | 把焦点移回输入框 |
CTRL-SHIFT-? | 打开资源中心 |
在命令面板里输入前缀可以限定搜索范围,例如 w: 只搜工作流、n: 只搜笔记本、files: 只搜文件、actions: 只搜应用内操作。
命令面板与设置的操作标识
自定义快捷键时需要用到操作标识,它们也是 ~/.warp/keybindings.yaml 里的键名。
| 操作标识 | 作用 |
|---|---|
workspace:toggle_command_palette | 打开或关闭命令面板 |
workspace:show_settings | 打开设置面板 |
workspace:show_keybinding_settings | 打开快捷键编辑器 |
workspace:show_theme_chooser | 打开主题选择器 |
workspace:toggle_navigation_palette | 打开或关闭导航面板 |
workspace:toggle_resource_center | 打开或关闭资源中心 |
terminal:focus_input | 把焦点移回输入框 |
复制与查找
Warp 默认开启选中即复制,所以用鼠标划过输出就已经进了剪贴板。查找分两层:没有选中命令块时在整个会话里查找,选中命令块后 CMD-F 只在该块内查找。
| 快捷键 | 作用 |
|---|---|
CMD-C | 复制选中内容 |
CMD-V | 粘贴 |
CMD-F | 查找 |
CMD-G | 跳到下一个匹配 |
SHIFT-CMD-G | 跳到上一个匹配 |
Warp 还支持按住 CMD-OPT 拖动鼠标做矩形选择,适合从对齐的表格输出里只取一列。双击则是语义选择,会把 URL、文件路径、邮箱和 IP 地址当作一个整体,而不是只选中一个单词。
复制与查找的相关配置
| 配置项 | 作用 |
|---|---|
terminal.copy_on_select | 选中文本后自动复制,默认开启 |
terminal.smart_select.enabled | 双击时按路径、URL 等语义扩展选区 |
terminal.smart_select.word_char_allowlist | 参与智能选择的额外字符 |
terminal.osc52_clipboard_access | 是否允许远程程序通过 OSC 52 写剪贴板,默认拒绝 |
命令块(Block)
命令块是 Warp 里最基础的单位。传统终端只有一条连续的滚动缓冲区,Warp 把它切成一个个带边界的块,因此才能按块复制、跳转、过滤和分享。退出码非零的块会显示成红色,扫一眼就能找到失败的命令。
选择与导航
CMD-↑ 先选中最近一个块,之后用方向键在块之间移动。块内容很长时,用 SHIFT-CMD-↑ 和 SHIFT-CMD-↓ 在块的首尾之间跳转,而不是一行行滚。
| 快捷键 | 作用 |
|---|---|
CMD-↑ | 选中上一个命令块 |
CMD-↓ | 选中下一个命令块 |
↑ / ↓ | 在已选中的块之间移动 |
SHIFT-↑ / SHIFT-↓ | 向上或向下扩展选中的块 |
SHIFT-CMD-↑ | 滚动到选中块的开头 |
SHIFT-CMD-↓ | 滚动到选中块的末尾 |
CMD-A | 选中所有命令块 |
CMD-K | 清空所有命令块 |
HOME / END | 滚动到输出的开头或末尾 |
PAGE UP / PAGE DOWN | 按页滚动 |
输出被截断时,块对应的命令会固定显示在顶部;点击这个标题栏可以直接跳回块的开头。
复制与重新输入
命令和输出可以分开复制,这是命令块相对滚屏最实用的地方。重新输入会把历史命令送回输入框而不是立即执行,还有机会改参数。
| 快捷键 | 作用 |
|---|---|
SHIFT-CMD-C | 复制选中块的命令 |
ALT-SHIFT-CMD-C | 复制选中块的输出 |
CMD-I | 把选中块的命令重新填入输入框 |
SHIFT-CMD-I | 以 root 身份重新填入选中块的命令 |
CTRL-M | 打开命令块的右键菜单 |
CMD-I 的含义取决于焦点:选中了命令块时是重新输入,焦点在输入框时是检查当前命令。
书签与过滤
给块打书签后,右侧滚动条上会出现标记,ALT-↑ 和 ALT-↓ 在这些标记之间跳转,适合先标记关键步骤再回头对照。过滤只隐藏不匹配的行,清除过滤条件后原始输出仍在。
| 快捷键 | 作用 |
|---|---|
CMD-B | 给选中的块加或去掉书签 |
ALT-↑ | 跳到上一个书签 |
ALT-↓ | 跳到下一个书签 |
OPT-SHIFT-F | 打开或关闭选中块的过滤 |
SHIFT-CMD-S | 分享选中的命令块 |
过滤条支持正则、区分大小写和反向匹配,右侧的小输入框用于设置匹配行前后保留多少行上下文。分享会生成一个网页链接,格式和颜色都会保留,需要登录账号。
命令块的操作标识与配置
| 操作标识 | 作用 |
|---|---|
terminal:select_previous_block | 选中上一个命令块 |
terminal:select_next_block | 选中下一个命令块 |
terminal:select_all_blocks | 选中所有命令块 |
terminal:clear_blocks | 清空所有命令块 |
terminal:copy_commands | 复制命令 |
terminal:copy_outputs | 复制输出 |
terminal:reinput_commands | 重新输入命令 |
terminal:reinput_commands_with_sudo | 以 root 身份重新输入命令 |
terminal:bookmark_selected_block | 切换书签 |
terminal:select_bookmark_up | 跳到上一个书签 |
terminal:select_bookmark_down | 跳到下一个书签 |
terminal:open_share_block_modal | 打开分享对话框 |
terminal:scroll_up_one_line | 向上滚动一行,默认未绑定 |
terminal:scroll_down_one_line | 向下滚动一行,默认未绑定 |
| 配置项 | 作用 |
|---|---|
appearance.blocks.show_block_dividers | 显示命令块之间的分隔线 |
appearance.blocks.show_jump_to_bottom_of_block_button | 长输出显示跳到块末尾的按钮 |
terminal.maximum_grid_size | 单个会话保留的最大行数,默认 50000 |
在后台运行的进程如果继续输出,Warp 会把这些内容放进单独的后台块,因为它无法确定输出来自哪个进程。前台命令运行期间产生的后台输出会并入当前块。
标签页(Tab)
标签页适合按任务拆分,例如编辑、服务、日志和数据库控制台。它可以命名、着色、编组和固定,行为接近浏览器的标签页,包括拖出成新窗口。
创建与重命名
双击标签页即可改名。点击 + 右侧的箭头可以选择已保存的标签页配置,右键 + 还能恢复刚关掉的标签页。
| 快捷键 | 作用 |
|---|---|
CMD-T | 新建标签页 |
SHIFT-CMD-T | 重新打开最近关闭的标签页 |
切换与移动
编号切换只覆盖前八个标签页,CMD-9 固定跳到最后一个。CTRL-TAB 默认在标签页之间切换,也可以改成在最近使用的会话之间循环,这样它会把面板也算进来。
| 快捷键 | 作用 |
|---|---|
CMD-1 到 CMD-8 | 切换到第 1 至第 8 个标签页 |
CMD-9 | 切换到最后一个标签页 |
SHIFT-CMD-{ | 切换到上一个标签页 |
SHIFT-CMD-} | 切换到下一个标签页 |
CTRL-SHIFT-← | 把当前标签页左移 |
CTRL-SHIFT-→ | 把当前标签页右移 |
CTRL-TAB | 在标签页之间循环 |
分组与固定
标签页多了以后可以编组:右键某个标签页选择新建分组,或者先用 CMD 点选、SHIFT 连选多个标签页再一起编组。分组可以命名、着色和折叠,折叠后成员标签页会收起来。固定的标签页和分组会排在标签栏最前面,重开窗口后仍然保持固定。
关闭与恢复
CMD-W 关闭当前面板;它是标签页里最后一个面板时,标签页随之关闭。关闭后默认有 60 秒的撤销窗口,在这段时间内可以用 SHIFT-CMD-T 恢复。
| 快捷键 | 作用 |
|---|---|
CMD-W | 关闭当前面板或标签页 |
SHIFT-CMD-T | 恢复最近关闭的标签页 |
标签页的操作标识与配置
| 操作标识 | 作用 |
|---|---|
workspace:new_tab | 新建标签页 |
app:reopen_closed_session | 恢复最近关闭的会话 |
workspace:activate_prev_tab | 切换到上一个标签页 |
workspace:activate_next_tab | 切换到下一个标签页 |
workspace:activate_first_tab | 切换到第一个标签页 |
workspace:activate_last_tab | 切换到最后一个标签页 |
workspace:move_tab_left | 把当前标签页左移 |
workspace:move_tab_right | 把当前标签页右移 |
| 配置项 | 作用 |
|---|---|
general.new_tab_placement | 新标签页的插入位置,默认在当前标签页之后 |
general.undo_close.enabled | 允许撤销关闭 |
general.undo_close.grace_period | 撤销关闭的有效秒数,默认 60 |
general.restore_session | 启动时恢复上次的标签页和面板 |
general.should_confirm_close_session | 关闭仍在运行命令的会话时确认 |
keys.ctrl_tab_behavior_setting | CTRL-TAB 的行为 |
appearance.vertical_tabs.enabled | 用左侧竖排标签栏替代顶部标签栏 |
竖排标签栏会显示每个标签页和面板的目录、分支等信息,标签页很多时比顶部标签栏更容易辨认。
面板(Pane)
面板用于在同一个标签页里分屏,开发服务、日志输出和临时命令可以放在同一屏里观察。面板可以直接用鼠标拖动:拖到标签页内的其他位置会重排布局,拖到标签栏上则变成独立的标签页。
分割
CMD-D 向右分屏,SHIFT-CMD-D 向下分屏。需要向左或向上分屏时,在面板上右键选择对应方向。
| 快捷键 | 作用 |
|---|---|
CMD-D | 向右分割当前面板 |
SHIFT-CMD-D | 向下分割当前面板 |
新面板的起始目录由配置决定,默认继承上一个目录,也可以针对新窗口、新标签页和分屏分别设置。
切换与最大化
方向明确时用 OPT-CMD-方向键 直接跳到相邻面板,当前面板的角上会有一个三角标记。面板较多时先最大化当前面板更容易看清内容,再按一次还原。
| 快捷键 | 作用 |
|---|---|
OPT-CMD-方向键 | 切换到相邻面板 |
CMD-[ | 切换到上一个面板 |
CMD-] | 切换到下一个面板 |
SHIFT-CMD-ENTER | 最大化或还原当前面板 |
尺寸与同步输入
调整尺寸用 CTRL-CMD-方向键,移动的是当前面板对应方向上的分隔线。这组快捷键不会和 Mission Control 冲突,因为后者占用的是不带 CMD 的 CTRL-方向键。
同步输入用于把一条命令同时发到多个面板,适合对一组机器做相同操作。它与其他终端的「广播输入」略有不同:同步的是整条命令,而不是逐个按键。
| 快捷键 | 作用 |
|---|---|
CTRL-CMD-方向键 | 按方向移动面板分隔线 |
OPT-CMD-I | 开启或关闭当前标签页内的输入同步 |
同步范围还有「所有标签页的所有面板」一档,需要从命令面板搜索 synchronize 或在 Edit 菜单里选择。处于 vim 之类的替代编辑器模式时,同步只对同样处于该模式的面板生效。
关闭
CMD-W 关闭当前面板。面板里的 shell 正常退出时,面板也会关闭。
| 快捷键 | 作用 |
|---|---|
CMD-W | 关闭当前面板 |
面板的操作标识与配置
| 操作标识 | 作用 |
|---|---|
pane_group:add_right | 向右分屏 |
pane_group:add_down | 向下分屏 |
pane_group:navigate_left | 切换到左侧面板 |
pane_group:navigate_right | 切换到右侧面板 |
pane_group:navigate_up | 切换到上方面板 |
pane_group:navigate_down | 切换到下方面板 |
pane_group:navigate_prev | 切换到上一个面板 |
pane_group:navigate_next | 切换到下一个面板 |
pane_group:resize_left | 分隔线左移 |
pane_group:resize_right | 分隔线右移 |
pane_group:resize_up | 分隔线上移 |
pane_group:resize_down | 分隔线下移 |
pane_group:toggle_maximize_pane | 最大化或还原当前面板 |
| 配置项 | 作用 |
|---|---|
appearance.panes.should_dim_inactive_panes | 调暗非活动面板 |
appearance.panes.focus_pane_on_hover | 鼠标悬停即切换焦点 |
session.working_directory_config | 新窗口、新标签页和分屏的起始目录 |
session.new_session_shell_override | 新会话使用的 shell |
输入与历史
Warp 的输入框更接近编辑器:支持多行、多光标、语法高亮和错误下划线,命令写错时会在下方给出修正建议。历史记录按会话隔离,两个面板里的命令不会互相污染,关闭时再合并。
补全与建议
补全用模糊匹配,拼写不完全准确也能给出候选。自动建议来自历史记录和补全数据,接受方式有整条和逐段两种。
| 快捷键 | 作用 |
|---|---|
TAB | 打开补全菜单 |
→ 或 CTRL-F | 接受整条自动建议 |
CTRL-E | 光标在末尾时接受整条自动建议 |
CTRL-→ | 逐段接受自动建议 |
↑ | 按已输入前缀搜索历史 |
git、docker、kubectl、npm、brew、cargo、go 等常用命令有完整的补全描述,例如 git checkout 后按 TAB 会直接列出本地分支。命令别名也能补全:设置了 gc=git checkout 后,gc 的候选与 git checkout 一致。
搜索与纠错
CTRL-R 打开的是一个合并面板,历史记录、提示词和智能体对话都在里面,用前缀区分。命令执行失败后,如果 Warp 能给出修正建议,会在输入框上方显示,按 → 采纳。
| 快捷键 | 作用 |
|---|---|
CTRL-R | 打开命令搜索面板 |
CTRL-SHIFT-R | 打开工作流搜索面板 |
SHIFT-TAB | 在工作流的参数之间循环 |
命令搜索面板支持的前缀:h: 或 history: 限定历史记录,p: 或 prompts: 限定提示词,a: 或 ai_history: 限定智能体对话历史。
编辑
输入框保留了常用的 Emacs 风格按键,同时可以整体切换成 vim 模式。
| 快捷键 | 作用 |
|---|---|
CTRL-A | 移到行首 |
CTRL-E | 移到行尾 |
CTRL-K | 剪切光标右侧全部内容 |
CTRL-W | 剪切左侧一个单词 |
ALT-BACKSPACE | 删除左侧一个单词 |
CTRL-C | 清空输入框 |
CTRL-L | 清屏 |
CTRL-J | 插入换行,写多行命令时用 |
META-. | 插入上一条命令的最后一个参数 |
CMD-I | 检查当前命令,焦点需在输入框 |
CMD-Z / SHIFT-CMD-Z | 撤销与重做 |
输入与历史的相关配置
| 配置项 | 作用 |
|---|---|
terminal.input.autosuggestions.enabled | 开启自动建议 |
terminal.input.completions_open_while_typing | 边输入边弹出补全菜单,默认关闭 |
terminal.input.command_corrections | 对错误命令给出修正建议 |
terminal.input.syntax_highlighting | 输入语法高亮 |
terminal.input.error_underlining_enabled | 给可疑输入加下划线 |
terminal.input.alias_expansion_enabled | 输入时展开 shell 别名 |
terminal.input.honor_ps1 | 使用自定义的 PS1 提示符 |
terminal.input.input_box_type_setting | 输入框类型,classic 以终端为主,universal 以 AI 为主 |
appearance.input.input_mode | 输入框位置,默认固定在底部 |
text_editing.vim_mode_enabled | 输入框使用 vim 按键 |
text_editing.vim_status_bar | 显示 vim 模式状态栏 |
保存与复用
反复输入的目录、命令和分屏结构可以固化下来。Warp 提供两种方式:标签页配置保存的是布局和启动命令,Warp Drive 保存的是命令、文档和环境变量。
标签页配置(Tab Config)
标签页配置是 ~/.warp/tab_configs/ 下的 .toml 文件,一个文件描述一个标签页的布局、目录和启动命令,保存后会自动出现在 + 菜单里。除了手写,也可以右键任意标签页选择保存为配置,由 Warp 根据当前布局生成文件。
toml
name = "Blog"
color = "green"
[[panes]]
id = "root"
split = "horizontal"
children = ["editor", "server"]
[[panes]]
id = "editor"
type = "terminal"
directory = "~/projects/blog"
commands = ["nvim ."]
is_focused = true
[[panes]]
id = "server"
type = "terminal"
directory = "~/projects/blog"
commands = ["pnpm run dev"][[panes]] 是一个扁平数组,第一项是布局树的根。分支节点用 split 和 children 描述排列方式,horizontal 表示子面板左右排列,vertical 表示上下排列;叶子节点用 type 指定类型,terminal 是普通 shell,agent 直接进入智能体模式。
commands 里的命令按顺序执行,且会等上一条结束。ssh 这类不会交还控制权的命令后面不要再写别的命令,需要在远程执行的内容应该并入 ssh 命令本身。
标签页配置的参数与打开方式
顶层字段 name 是 + 菜单里显示的名称,title 自定义标签页标题,color 设置标签页颜色,取值为 black、red、green、yellow、blue、magenta、cyan、white 之一,具体色值来自当前主题。
叶子节点还支持 shell 指定该面板使用的 shell,is_focused 指定初始焦点,最多只能有一个面板设为 true。
用 [params.<name>] 声明参数后,可以在 directory、commands 和 title 里用 引用,打开时会弹出填写框。参数的 type 可以是 text、branch 或 repo,后两者分别提供分支和仓库选择器。
配置也可以通过 URI 直接打开,适合放进 Raycast、Alfred 或浏览器书签:
sh
open "warp://tab_config/blog"
open "warp://tab_config/blog?new_window=true"名称按文件名匹配且不区分大小写,与文件里的 name 字段无关,因为多个配置可以共用同一个显示名称。
Warp Drive
CMD-\ 打开 Warp Drive 侧边栏,里面存放工作流、笔记本、提示词和环境变量。个人空间的内容会随账号同步,加入团队后还会多一个团队空间,移进团队空间的内容对所有成员可见,且目前无法移回个人空间。
- 工作流:带参数和说明的命令,用
声明占位符,通过CTRL-SHIFT-R搜索并填参数后执行。相比别名,它可以搜索、可以附文档,也不需要重新加载 shell 配置。 - 笔记本:可执行的 Markdown 文档,命令块可以直接送进当前会话,适合写排障手册和上手指南。
- 环境变量:成组保存的变量,可以按项目切换。
工作流也可以不经 Warp Drive,直接以 YAML 文件保存:放在 ~/.warp/workflows/ 下只对本机生效,放在仓库的 .warp/workflows/ 下则随仓库分发给所有克隆的人。Warp Drive 里的每个对象都能导出成文件,工作流导出为 YAML,笔记本导出为 Markdown。
智能体(Agent)
Warp 默认把终端和智能体分成两种模式。新开的标签页处于终端模式,界面与普通终端一致;输入框下方的提示栏会显示当前可用的智能体操作。
| 快捷键 | 作用 |
|---|---|
CMD-ENTER | 把当前输入发给智能体,开始一轮对话 |
CMD-Y | 继续上一轮对话 |
CMD-↑ | 上一条命令失败时,把它的输出作为上下文附给智能体 |
ESC 或 CTRL-C | 退出智能体模式 |
智能体运行在当前会话里,会真的执行命令,因此权限控制比较重要。默认配置要求执行命令前逐条确认,并且把 rm、curl、ssh 以及各种 shell 本身列入了拒绝名单,避免绕过确认。这些都在 settings.toml 的 [agents.execution_profiles.default] 里,也可以在设置面板中调整。
智能体的相关配置与命令行工具
| 配置项 | 作用 |
|---|---|
agents.execution_profiles.default.execute_commands | 执行命令的确认策略,默认逐条询问 |
agents.execution_profiles.default.command_denylist | 始终拒绝执行的命令,用正则匹配 |
agents.execution_profiles.default.command_allowlist | 无需确认即可执行的命令 |
agents.execution_profiles.default.read_files | 读取文件的策略 |
agents.execution_profiles.default.apply_code_diffs | 应用代码改动的策略 |
agents.execution_profiles.default.web_search_enabled | 允许联网搜索 |
agents.warp_agent.input.ai_auto_detection_enabled | 自动识别输入是命令还是自然语言 |
agents.warp_agent.is_any_ai_enabled | 总开关,关闭后所有 AI 功能停用 |
agents.knowledge.rules_enabled | 读取仓库里的 WARP.md 规则 |
自动识别完全在本地进行,只有按下回车提交后输入才会发送出去。识别不准时可以在设置里把相应命令加入自然语言拒绝名单,或者直接关掉自动识别。
随应用安装的 oz 可以在任意终端里调用智能体,不必打开 Warp 界面:
sh
oz agent run -p "把 README 里的安装步骤更新成 pnpm"| 命令 | 作用 |
|---|---|
oz agent run -p "<任务>" | 在本地运行一次智能体任务 |
oz agent run --skill <名称> | 以某个技能作为起始提示运行 |
oz agent run-cloud | 在云端环境运行 |
oz run list | 列出运行记录 |
oz model list | 列出可用模型 |
oz login / oz whoami | 登录与查看当前账号 |
--output-format 支持 json、ndjson、pretty 和 text,需要把结果接进脚本时用前两种。
远程与子 shell
Warp 的命令块依赖 shell 集成,因此进入子 shell 或远程主机后需要重新建立这层连接,这个过程叫 Warpify。
运行 bash、zsh、fish、docker exec 等 Warp 认得的命令时,它会主动弹出横幅询问是否 Warpify;没有识别出来时,可以用 CTRL-I 手动触发。可以在 Warpify 设置里补充需要识别的命令,也支持写正则。
想跳过每次的确认横幅,把对应片段加到子 shell 的 rc 文件末尾,例如 ~/.zshrc:
sh
printf '\eP$f{"hook": "SourcedRcFileForWarp", "value": { "shell": "zsh"}}\x9c'SSH 走的是另一套机制。首次连接远程主机时,Warp 会询问是否安装 SSH 扩展;同意后它会在远程主机的 ~/.warp/remote-server 下安装一个伴生服务,用来提供远程文件树、代码编辑、代码审查和更可靠的补全。它以当前用户身份运行,不监听网络端口,不需要 root,也不会改动家目录以外的内容。
远程主机需要是 Linux 或 macOS,架构为 x86_64 或 aarch64,Linux 上还要求 glibc 2.31 及以上。不满足条件时 Warp 会在安装前就检测出来,安静地退回普通 SSH 会话。
不希望对某些主机做这些事时,可以在设置的 Warpify 页把它们加入拒绝名单,对应配置项是 warpify.ssh.ssh_hosts_denylist。把 ssh_extension_install_mode 设为 never_install 则不再询问,SSH 会话退回到旧的包装脚本方式;设为 always_install 则缺少扩展时直接安装。早期基于 tmux 的 Warpify 方案已经废弃,不再获得更新。
基础配置
Warp 的配置文件是 ~/.warp/settings.toml,保存后立即生效,不需要重启。设置面板和这个文件是双向同步的:面板里的改动会写回文件,手改文件也会反映到面板。文件语法有误时,Warp 会在顶部显示提示条,并对受影响的项回退到默认值。
toml
# 字体与主题
[appearance.text]
font_name = "JetBrains Mono"
font_size = 14.0
line_height_ratio = 1.3
[appearance.themes]
theme = "dracula"
# 调暗非活动面板,分屏多时更容易定位焦点
[appearance.panes]
should_dim_inactive_panes = true
# 边输入边弹补全,并保留自己的提示符
[terminal.input]
completions_open_while_typing = true
honor_ps1 = true
# 输入框使用 vim 按键
[text_editing]
vim_mode_enabled = true
vim_status_bar = true
# 启动时恢复上次的标签页和面板
[general]
restore_session = true编辑器里想要补全和校验,可以引用应用内置的 JSON Schema,位置是 /Applications/Warp.app/Contents/Resources/settings_schema.json。
快捷键单独存放在 ~/.warp/keybindings.yaml,格式是「操作标识: 按键」,修饰键用连字符连接,可用的修饰键有 ctrl、cmd、alt、meta 和 shift:
yaml
pane_group:navigate_prev: f1
pane_group:navigate_next: f2
terminal:copy_outputs: cmd-shift-o在设置面板里改快捷键也会写入这个文件,两种方式可以混用。与已有绑定冲突的按键会用橙色边框标出。
其他文件位置
macOS 上稳定版的所有文件都在 ~/.warp/ 下:
| 路径 | 内容 |
|---|---|
~/.warp/settings.toml | 配置文件 |
~/.warp/keybindings.yaml | 快捷键 |
~/.warp/themes/ | 自定义主题 |
~/.warp/tab_configs/ | 标签页配置 |
~/.warp/workflows/ | 本地工作流 |
~/.warp/.mcp.json | MCP 服务器配置 |
~/.warp/skills/ | 技能 |
~/Library/Logs/warp.log* | 日志 |
预览版使用 ~/.warp-preview/,但 MCP 配置和技能仍然共用 ~/.warp/,所以两个版本共存时这两项是共享的。Linux 遵循 XDG 规范,配置在 ~/.config/warp-terminal/;Windows 把可迁移数据放在 %APPDATA%,配置和状态放在 %LOCALAPPDATA%。
想恢复默认设置时,删除或改名 settings.toml 后重启即可,下次在设置面板里改动时文件会重新生成。
