-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy path15.html
More file actions
276 lines (276 loc) · 30.9 KB
/
Copy path15.html
File metadata and controls
276 lines (276 loc) · 30.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="description" content="CodeClub - OpenCode 快捷键" />
<meta name="author" content="Jackson" />
<title>OpenCode 快捷键 - CodeClub</title>
<link rel="icon" type="image/x-icon" href="../../img/logo.png" />
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link
href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap"
rel="stylesheet"
/>
<link
rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css"
crossorigin="anonymous"
referrerpolicy="no-referrer"
/>
<link rel="stylesheet" href="../../css/main.css" />
<link rel="stylesheet" href="../../css/dark-mode.css" />
<link rel="stylesheet" href="../../css/mobile-optimizations.css" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/marked/12.0.0/marked.min.js"></script>
<style>
.tutorial-page {
max-width: 1200px;
margin: 70px auto 40px;
padding: 0 20px;
display: flex;
gap: 20px;
}
.tutorial-sidebar {
width: 240px;
flex-shrink: 0;
position: sticky;
top: 70px;
max-height: calc(100vh - 90px);
overflow-y: auto;
background: var(--bg-secondary, #fff);
border-radius: 8px;
padding: 16px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
}
.tutorial-sidebar h3 {
font-size: 15px;
margin: 0 0 12px;
color: var(--text-primary, #1a1a2e);
padding-bottom: 8px;
border-bottom: 2px solid var(--primary, #3b82f6);
}
.tutorial-sidebar a {
display: block;
padding: 5px 8px;
color: var(--text-secondary, #666);
text-decoration: none;
font-size: 13px;
border-radius: 4px;
line-height: 1.4;
}
.tutorial-sidebar a:hover {
background: var(--primary, #3b82f6);
color: #fff;
}
.tutorial-sidebar a.active {
background: var(--primary, #3b82f6);
color: #fff;
font-weight: 600;
}
.tutorial-main {
flex: 1;
min-width: 0;
}
.tutorial-article {
background: var(--bg-secondary, #fff);
border-radius: 8px;
padding: 32px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
}
.tutorial-article h1 {
font-size: 26px;
margin-bottom: 16px;
color: var(--text-primary, #1a1a2e);
border-bottom: 2px solid var(--primary, #3b82f6);
padding-bottom: 12px;
}
.markdown-body {
font-size: 15px;
line-height: 1.8;
color: var(--text-secondary, #333);
}
.markdown-body h1 {
font-size: 24px;
border-bottom: 1px solid var(--border, #e5e7eb);
padding-bottom: 8px;
}
.markdown-body h2 {
font-size: 20px;
border-bottom: 1px solid var(--border, #e5e7eb);
padding-bottom: 6px;
}
.markdown-body h3 {
font-size: 17px;
}
.markdown-body pre {
background: #1e1e2e;
color: #cdd6f4;
padding: 16px;
border-radius: 8px;
overflow-x: auto;
}
.markdown-body code {
font-family: 'Fira Code', 'Cascadia Code', monospace;
font-size: 14px;
}
.markdown-body p code {
background: #f1f5f9;
padding: 2px 6px;
border-radius: 4px;
color: #e83e8c;
}
.markdown-body blockquote {
border-left: 4px solid var(--primary, #3b82f6);
padding: 12px 20px;
margin: 16px 0;
background: #f8fafc;
border-radius: 0 8px 8px 0;
}
.markdown-body img {
max-width: 100%;
border-radius: 8px;
}
.markdown-body table {
border-collapse: collapse;
width: 100%;
margin: 16px 0;
}
.markdown-body table th,
.markdown-body table td {
border: 1px solid var(--border, #e5e7eb);
padding: 8px 12px;
text-align: left;
}
.markdown-body table th {
background: var(--bg-primary, #f8fafc);
font-weight: 600;
}
.markdown-body table tr:nth-child(2n) {
background: var(--bg-primary, #f8fafc);
}
.markdown-body ul,
.markdown-body ol {
padding-left: 24px;
margin: 12px 0;
}
.markdown-body li {
margin: 4px 0;
}
.markdown-body hr {
border: none;
border-top: 1px solid var(--border, #e5e7eb);
margin: 24px 0;
}
.markdown-body a {
color: var(--primary, #3b82f6);
text-decoration: none;
}
.markdown-body a:hover {
text-decoration: underline;
}
.page-navigation {
display: flex;
justify-content: space-between;
margin-top: 24px;
padding-top: 16px;
border-top: 1px solid var(--border, #e5e7eb);
}
.page-nav-link {
color: var(--primary, #3b82f6);
text-decoration: none;
font-weight: 500;
font-size: 14px;
}
.page-nav-link:hover {
text-decoration: underline;
}
.source-link {
margin-top: 16px;
font-size: 13px;
color: var(--text-secondary, #999);
}
.source-link a {
color: var(--primary, #3b82f6);
}
@media (max-width: 768px) {
.tutorial-page {
flex-direction: column;
}
.tutorial-sidebar {
width: 100%;
position: static;
max-height: 200px;
}
}
</style>
</head>
<body>
<nav class="navbar">
<div class="navbar-container">
<a class="navbar-brand" href="../../index.html">
<img src="../../img/logo.png" alt="CodeClub" width="32" height="32" />
<span>CodeClub</span>
</a>
<button class="mobile-menu-toggle" aria-label="切换导航菜单"><span></span><span></span><span></span></button>
<ul class="navbar-nav">
<li><a class="nav-link" href="../../index.html">首页</a></li>
<li><a class="nav-link" href="../../nav.html">网址导航</a></li>
<li><a class="nav-link" href="../../blog/">博客</a></li>
<li><a class="nav-link" href="../../wiki/index.html" target="_blank">WiKi</a></li>
<li><a class="nav-link active" href="../index.html">教程</a></li>
<li><a class="nav-link" href="../../book.html">图书</a></li>
<li><a class="nav-link" href="../../contact.html">联系我</a></li>
<li><a class="nav-link" href="../../about.html">关于我</a></li>
</ul>
</div>
</nav>
<div class="tutorial-page">
<div class="tutorial-sidebar">
<h3>📖 OpenCode</h3>
<a href="0.html">OpenCode 教程</a>
<a href="1.html">OpenCode 简介</a>
<a href="2.html">OpenCode 安装</a>
<a href="3.html">OpenCode 配置</a>
<a href="4.html">OpenCode 第一次使用</a>
<a href="5.html">OpenCode VSCode</a>
<a href="6.html">OpenCode 终端界面</a>
<a href="7.html">OpenCode CLI 使用</a>
<a href="8.html">OpenCode Web 使用</a>
<a href="9.html">OpenCode GitHub</a>
<a href="10.html">OpenCode GitLab</a>
<a href="11.html">OpenCode 工具</a>
<a href="12.html">OpenCode 规则</a>
<a href="13.html">OpenCode 代理</a>
<a href="14.html">OpenCode 主题</a>
<a href="15.html" class="active">OpenCode 快捷键</a>
<a href="16.html">OpenCode 自定义命令</a>
<a href="17.html">OpenCode 格式化工具</a>
<a href="18.html">OpenCode 权限配置</a>
<a href="19.html">OpenCode LSP 服务器配置</a>
<a href="20.html">OpenCode MCP 服务器配置</a>
<a href="21.html">OpenCode Skills</a>
<a href="22.html">OpenCode 自定义工具</a>
</div>
<div class="tutorial-main">
<div class="tutorial-article">
<div class="markdown-body" id="md-content"></div>
<div class="page-navigation">
<a href="14.html" class="page-nav-link">← OpenCode 主题</a>
<a href="16.html" class="page-nav-link">OpenCode 自定义命令 →</a>
</div>
<div class="source-link">原文来源:<a href="https://www.runoob.com" target="_blank">菜鸟教程</a></div>
</div>
</div>
</div>
<footer class="footer">
<div class="footer-content"><p>© 2024 CodeClub. All rights reserved.</p></div>
</footer>
<script src="../../js/dark-mode.js"></script>
<script src="../../js/mobile-menu.js"></script>
<script>
const md = `# OpenCode 快捷键配置详解\n\n\nOpenCode 提供了一套完整的键盘快捷键系统,涵盖应用控制、会话管理、消息浏览、模型切换和输入编辑等各类操作。\n\n所有快捷键均可通过 \`tui.json\` 文件进行自定义。\n\n\n\n\n---\n\n\n## 配置文件\n\n\n快捷键配置写在 \`tui.json\` 文件的 \`keybinds\` 字段下,每条记录的键名为操作名称,值为对应的快捷键:\n\n\n\n\n## 实例\n\n{\n\n "$schema": "https://opencode.ai/tui.json",\n\n "keybinds": {\n\n "leader": "ctrl+x", // 前导键设置(见下方说明)\n\n "session_new": "n", // 新建会话:先按前导键,再按 n\n\n "model_list": "m", // 打开模型列表:先按前导键,再按 m\n\n "session_compact": "none" // 将值设为 "none" 可禁用该快捷键\n\n }\n\n}\n\n\n\n一个操作可以绑定多个快捷键,用英文逗号分隔,任意一个触发即可执行该操作:\n\n\n\n\n## 实例\n\n{\n\n "$schema": "https://opencode.ai/tui.json",\n\n "keybinds": {\n\n // 以下写法表示:按 pageup 或按 ctrl+alt+b,都可以向上翻页\n\n "messages_page_up": "pageup,ctrl+alt+b"\n\n }\n\n}\n\n\n\n\n---\n\n\n## 前导键(Leader Key)\n\n\nOpenCode 的大多数快捷键采用**前导键(Leader Key)**机制:先按下前导键,再按功能键,两键组合触发对应操作。这样设计的好处是避免与终端本身的快捷键产生冲突。\n\n\n\n默认前导键为 \`ctrl+x\`。例如,新建会话的快捷键是 \`n\`,实际操作为:先按 \`ctrl+x\`,再按 \`n\`。\n\n\n\n你可以将前导键改为任意组合键:\n\n\n\n\n## 实例\n\n{\n\n "$schema": "https://opencode.ai/tui.json",\n\n "keybinds": {\n\n "leader": "ctrl+x" // 修改前导键为其他按键,如 "ctrl+space"、"alt+x" 等\n\n // 配置中的 占位符会自动替换为这里设置的按键\n\n }\n\n}\n\n\n\n不一定必须使用前导键机制来设置快捷键——也可以直接绑定普通按键或组合键。但建议优先使用前导键,以避免与终端快捷键冲突。\n\n\n\n\n---\n\n\n## 禁用快捷键\n\n\n将任意快捷键的值设为 \`"none"\` 即可禁用该操作,禁用后按任何键都不会触发它:\n\n\n\n\n## 实例\n\n{\n\n "$schema": "https://opencode.ai/tui.json",\n\n "keybinds": {\n\n "session_compact": "none", // 禁用"压缩会话"快捷键\n\n "scrollbar_toggle": "none", // 禁用"切换滚动条"快捷键\n\n "tips_toggle": "none" // 禁用"切换提示"快捷键\n\n }\n\n}\n\n\n\n\n---\n\n\n## 完整快捷键列表\n\n\n\n### 1、应用与界面\n\n\n\n \n \n 操作名称\n 默认快捷键\n 说明\n \n \n \n \n \`app_exit\`\n \`ctrl+c\`, \`ctrl+d\`, \`q\`\n 退出 OpenCode\n \n \n \`editor_open\`\n \`e\`\n 用外部编辑器打开当前输入内容\n \n \n \`theme_list\`\n \`t\`\n 打开主题列表,切换界面主题\n \n \n \`sidebar_toggle\`\n \`b\`\n 显示或隐藏侧边栏\n \n \n \`scrollbar_toggle\`\n 无(默认禁用)\n 显示或隐藏滚动条\n \n \n \`username_toggle\`\n 无(默认禁用)\n 显示或隐藏用户名\n \n \n \`status_view\`\n \`s\`\n 查看当前状态信息\n \n \n \`tool_details\`\n 无(默认禁用)\n 查看工具调用详情\n \n \n \`command_list\`\n \`ctrl+p\`\n 打开命令面板,搜索所有可用命令\n \n \n \`tips_toggle\`\n \`h\`\n 显示或隐藏使用提示\n \n \n \`display_thinking\`\n 无(默认禁用)\n 显示或隐藏模型的思考过程\n \n \n \`terminal_suspend\`\n \`ctrl+z\`\n 挂起终端(将 OpenCode 放到后台,回到 shell;输入 \`fg\` 可恢复)\n \n \n \`terminal_title_toggle\`\n 无(默认禁用)\n 显示或隐藏终端标题栏\n \n \n\n\n\n### 2、会话管理\n\n\n\n \n \n 操作名称\n 默认快捷键\n 说明\n \n \n \n \n \`session_new\`\n \`n\`\n 新建一个会话\n \n \n \`session_list\`\n \`l\`\n 查看所有历史会话列表\n \n \n \`session_export\`\n \`x\`\n 导出当前会话内容\n \n \n \`session_timeline\`\n \`g\`\n 查看当前会话的时间线\n \n \n \`session_fork\`\n 无(默认禁用)\n 从当前位置创建一个分支会话\n \n \n \`session_rename\`\n 无(默认禁用)\n 重命名当前会话\n \n \n \`session_share\`\n 无(默认禁用)\n 分享当前会话\n \n \n \`session_unshare\`\n 无(默认禁用)\n 取消分享当前会话\n \n \n \`session_interrupt\`\n \`escape\`\n 中断当前正在运行的响应\n \n \n \`session_compact\`\n \`c\`\n 压缩当前会话上下文,减少 Token 占用\n \n \n \`session_child_first\`\n \`↓\`\n 跳转到第一个子会话\n \n \n \`session_child_cycle\`\n \`→\`\n 在子会话间向前循环切换\n \n \n \`session_child_cycle_reverse\`\n \`←\`\n 在子会话间向后循环切换\n \n \n \`session_parent\`\n \`↑\`\n 返回父会话\n \n \n\n\n\n### 3、消息浏览\n\n\n\n \n \n 操作名称\n 默认快捷键\n 说明\n \n \n \n \n \`messages_page_up\`\n \`pageup\`, \`ctrl+alt+b\`\n 向上翻一页消息\n \n \n \`messages_page_down\`\n \`pagedown\`, \`ctrl+alt+f\`\n 向下翻一页消息\n \n \n \`messages_line_up\`\n \`ctrl+alt+y\`\n 向上滚动一行\n \n \n \`messages_line_down\`\n \`ctrl+alt+e\`\n 向下滚动一行\n \n \n \`messages_half_page_up\`\n \`ctrl+alt+u\`\n 向上滚动半页\n \n \n \`messages_half_page_down\`\n \`ctrl+alt+d\`\n 向下滚动半页\n \n \n \`messages_first\`\n \`ctrl+g\`, \`home\`\n 跳转到最早的第一条消息\n \n \n \`messages_last\`\n \`ctrl+alt+g\`, \`end\`\n 跳转到最新的最后一条消息\n \n \n \`messages_next\`\n 无(默认禁用)\n 跳转到下一条消息\n \n \n \`messages_previous\`\n 无(默认禁用)\n 跳转到上一条消息\n \n \n \`messages_last_user\`\n 无(默认禁用)\n 跳转到最后一条用户消息\n \n \n \`messages_copy\`\n \`y\`\n 复制当前消息内容到剪贴板\n \n \n \`messages_undo\`\n \`u\`\n 撤销上一步操作\n \n \n \`messages_redo\`\n \`r\`\n 重做撤销的操作\n \n \n \`messages_toggle_conceal\`\n \`h\`\n 折叠或展开消息中的隐藏内容\n \n \n\n\n\n### 4、模型与代理\n\n\n\n \n \n 操作名称\n 默认快捷键\n 说明\n \n \n \n \n \`model_list\`\n \`m\`\n 打开模型列表,选择切换当前使用的模型\n \n \n \`model_cycle_recent\`\n \`f2\`\n 在最近使用过的模型中向前循环切换\n \n \n \`model_cycle_recent_reverse\`\n \`shift+f2\`\n 在最近使用过的模型中向后循环切换\n \n \n \`model_cycle_favorite\`\n 无(默认禁用)\n 在收藏的模型中向前循环切换\n \n \n \`model_cycle_favorite_reverse\`\n 无(默认禁用)\n 在收藏的模型中向后循环切换\n \n \n \`variant_cycle\`\n \`ctrl+t\`\n 在当前模型的变体(如 thinking 模式)之间循环切换\n \n \n \`agent_list\`\n \`a\`\n 打开代理列表,选择切换当前使用的代理\n \n \n \`agent_cycle\`\n \`tab\`\n 向前循环切换代理\n \n \n \`agent_cycle_reverse\`\n \`shift+tab\`\n 向后循环切换代理\n \n \n\n\n\n### 5、输入框编辑\n\n\n\n \n \n 操作名称\n 默认快捷键\n 说明\n \n \n \n \n \`input_submit\`\n \`return\`\n 发送当前输入内容\n \n \n \`input_newline\`\n \`shift+return\`, \`ctrl+return\`, \`alt+return\`, \`ctrl+j\`\n 在输入框中插入换行(不发送)\n \n \n \`input_clear\`\n \`ctrl+c\`\n 清空输入框内容\n \n \n \`input_paste\`\n \`ctrl+v\`\n 粘贴剪贴板内容到输入框\n \n \n \`input_move_left\`\n \`left\`, \`ctrl+b\`\n 光标向左移动一个字符\n \n \n \`input_move_right\`\n \`right\`, \`ctrl+f\`\n 光标向右移动一个字符\n \n \n \`input_move_up\`\n \`up\`\n 光标向上移动一行\n \n \n \`input_move_down\`\n \`down\`\n 光标向下移动一行\n \n \n \`input_word_forward\`\n \`alt+f\`, \`alt+right\`, \`ctrl+right\`\n 光标向前跳过一个单词\n \n \n \`input_word_backward\`\n \`alt+b\`, \`alt+left\`, \`ctrl+left\`\n 光标向后跳过一个单词\n \n \n \`input_line_home\`\n \`ctrl+a\`\n 移动到当前行的开头\n \n \n \`input_line_end\`\n \`ctrl+e\`\n 移动到当前行的末尾\n \n \n \`input_visual_line_home\`\n \`alt+a\`\n 移动到当前视觉行(换行显示的行)的开头\n \n \n \`input_visual_line_end\`\n \`alt+e\`\n 移动到当前视觉行的末尾\n \n \n \`input_buffer_home\`\n \`home\`\n 跳转到整个输入框内容的最开头\n \n \n \`input_buffer_end\`\n \`end\`\n 跳转到整个输入框内容的最末尾\n \n \n \`input_delete_to_line_end\`\n \`ctrl+k\`\n 删除从光标到当前行末尾的所有内容\n \n \n \`input_delete_to_line_start\`\n \`ctrl+u\`\n 删除从当前行开头到光标的所有内容\n \n \n \`input_delete_line\`\n \`ctrl+shift+d\`\n 删除光标所在的整行\n \n \n \`input_backspace\`\n \`backspace\`, \`shift+backspace\`\n 删除光标前一个字符\n \n \n \`input_delete\`\n \`ctrl+d\`, \`delete\`, \`shift+delete\`\n 删除光标后一个字符\n \n \n \`input_delete_word_forward\`\n \`alt+d\`, \`alt+delete\`, \`ctrl+delete\`\n 删除光标后一个单词\n \n \n \`input_delete_word_backward\`\n \`ctrl+w\`, \`ctrl+backspace\`, \`alt+backspace\`\n 删除光标前一个单词\n \n \n \`input_undo\`\n \`ctrl+-\`, \`super+z\`\n 撤销输入框中的上一步编辑\n \n \n \`input_redo\`\n \`ctrl+.\`, \`super+shift+z\`\n 重做撤销的编辑\n \n \n\n\n\n### 6、文本选择\n\n\n\n \n \n 操作名称\n 默认快捷键\n 说明\n \n \n \n \n \`input_select_left\`\n \`shift+left\`\n 向左选中一个字符\n \n \n \`input_select_right\`\n \`shift+right\`\n 向右选中一个字符\n \n \n \`input_select_up\`\n \`shift+up\`\n 向上选中一行\n \n \n \`input_select_down\`\n \`shift+down\`\n 向下选中一行\n \n \n \`input_select_word_forward\`\n \`alt+shift+f\`, \`alt+shift+right\`\n 向前选中一个单词\n \n \n \`input_select_word_backward\`\n \`alt+shift+b\`, \`alt+shift+left\`\n 向后选中一个单词\n \n \n \`input_select_line_home\`\n \`ctrl+shift+a\`\n 从光标位置选中到当前行开头\n \n \n \`input_select_line_end\`\n \`ctrl+shift+e\`\n 从光标位置选中到当前行末尾\n \n \n \`input_select_visual_line_home\`\n \`alt+shift+a\`\n 从光标位置选中到当前视觉行开头\n \n \n \`input_select_visual_line_end\`\n \`alt+shift+e\`\n 从光标位置选中到当前视觉行末尾\n \n \n \`input_select_buffer_home\`\n \`shift+home\`\n 从光标位置选中到输入框最开头\n \n \n \`input_select_buffer_end\`\n \`shift+end\`\n 从光标位置选中到输入框最末尾\n \n \n\n\n\n### 7、输入历史\n\n\n\n \n \n 操作名称\n 默认快捷键\n 说明\n \n \n \n \n \`history_previous\`\n \`up\`\n 调出上一条历史输入(输入框为空时有效)\n \n \n \`history_next\`\n \`down\`\n 调出下一条历史输入\n \n \n\n\n\n---\n\n\n## 桌面版内置输入快捷键\n\n\nOpenCode 桌面版的提示词输入框额外内置了一套 **Readline / Emacs 风格**的文本编辑快捷键,**这些快捷键为内置功能,无法通过 \`tui.json\` 修改或禁用**:\n\n\n\n\n \n \n 快捷键\n 操作\n \n \n \n \n \`ctrl+a\`\n 移动到当前行的开头\n \n \n \`ctrl+e\`\n 移动到当前行的末尾\n \n \n \`ctrl+b\`\n 光标向后移动一个字符\n \n \n \`ctrl+f\`\n 光标向前移动一个字符\n \n \n \`alt+b\`\n 光标向后移动一个单词\n \n \n \`alt+f\`\n 光标向前移动一个单词\n \n \n \`ctrl+d\`\n 删除光标所在位置的字符\n \n \n \`ctrl+k\`\n 删除从光标到行尾的内容\n \n \n \`ctrl+u\`\n 删除从光标到行首的内容\n \n \n \`ctrl+w\`\n 删除前一个单词\n \n \n \`alt+d\`\n 删除后一个单词\n \n \n \`ctrl+t\`\n 交换光标前后两个字符的位置\n \n \n \`ctrl+g\`\n 取消当前弹出窗口,或中止正在运行的响应\n \n \n\n\n\n---\n\n\n## 配置 Shift+Enter 换行\n\n\n部分终端默认不会将带修饰键的 Enter(如 \`Shift+Enter\`)作为独立按键发送,导致在 OpenCode 中按 \`Shift+Enter\` 无法换行而是直接发送消息。需要在终端中手动配置该按键的转义序列。\n\n\n\n\n### Windows Terminal 配置方法\n\n\n**第一步:**打开 Windows Terminal 的 \`settings.json\` 文件,路径为:\n\n\n\n\n\`\`\`\n%LOCALAPPDATA%\\Packages\\Microsoft.WindowsTerminal_8wekyb3d8bbwe\\LocalState\\settings.json\n\`\`\`\n\n\n**第二步:**在文件的根级 \`actions\` 数组中添加以下配置,定义一个发送 \`Shift+Enter\` 转义序列的动作:\n\n\n\n\n## 实例\n\n"actions": [\n\n {\n\n "command": {\n\n "action": "sendInput",\n\n "input": "\\u001b[13;2u" // Shift+Enter 对应的标准转义序列(CSI u 格式)\n\n },\n\n "id": "User.sendInput.ShiftEnterCustom"\n\n }\n\n]\n\n\n\n**第三步:**在文件的根级 \`keybindings\` 数组中添加按键绑定,将 \`Shift+Enter\` 映射到上面定义的动作:\n\n\n\n\n## 实例\n\n"keybindings": [\n\n {\n\n "keys": "shift+enter",\n\n "id": "User.sendInput.ShiftEnterCustom"\n\n }\n\n]\n\n\n\n**第四步:**保存 \`settings.json\` 文件后,重启 Windows Terminal 或打开一个新标签页使配置生效。\n\n\n\n如果你使用的是其他终端(如 iTerm2、Kitty、Alacritty 等),请参考对应终端的文档,找到"按键映射"或"Key bindings"相关设置,将 \`Shift+Enter\` 配置为发送 \`\\u001b[13;2u\` 转义序列即可。\n\n \n \n \n \n \n\n \n \n [ OpenCode 自定义命令](http://www.runoob.com/opencode/opencode-commands.html)\n \n\n \n \n \n \n \n\n\n\n\n \n \n \n### 点我分享笔记\n\n \n \n \n \n \n \n [取消](https://www.runoob.comjavascript:;)\n\n\n \n \n \n \n \n \n\n\n 分享笔记\n \n \n \n \n \n \n\n 昵称昵称 (必填)\n 邮箱邮箱 (必填)\n 引用地址引用地址\n \n\n \n \n \n \n\n \n \n\n\n\n\n\n\n\n\n\n \n\n \n\n\n\n\n\n\n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n\n\n\n\n\n 在线实例\n\n\n ·[HTML 实例](https://www.runoob.com/html/html-examples.html)\n\n\n ·[CSS 实例](https://www.runoob.com/css/css-examples.html)\n\n\n ·[JavaScript 实例](https://www.runoob.com/js/js-examples.html)\n\n\n ·[Ajax 实例](https://www.runoob.com/ajx/ajax-examples.html)\n\n\n ·[jQuery 实例](https://www.runoob.com/jquery/jquery-examples.html)\n\n\n ·[XML 实例](https://www.runoob.com/xml/xml-examples.html)\n\n\n ·[Java 实例](https://www.runoob.com/java/java-examples.html)\n\n\n\n\n\n 字符集&工具\n\n\n · [HTML 字符集设置](https://www.runoob.com/charsets/html-charsets.html)\n\n\n · [HTML ASCII 字符集](https://www.runoob.com/tags/html-ascii.html)\n\n\n · [JS 混淆/加密](https://www.jyshare.com/front-end/6939/)\n\n\n · [PNG/JPEG 图片压缩](https://www.jyshare.com/front-end/6232/)\n\n\n · [HTML 拾色器](https://www.runoob.com/tags/html-colorpicker.html)\n\n\n · [JSON 格式化工具](https://www.jyshare.com/front-end/53)\n\n\n · [随机数生成器](https://www.jyshare.com/front-end/6680/)\n\n\n\n\n 最新更新\n\n\n ·\n [\n OpenCode 自定义... ](http://www.runoob.com/opencode/opencode-custom-tools.html)\n\n\n ·\n [\n OpenCode Skills ](http://www.runoob.com/opencode/opencode-skills.html)\n\n\n ·\n [\n OpenCode MCP 服... ](http://www.runoob.com/opencode/opencode-mcp.html)\n\n\n ·\n [\n OpenCode LSP 服... ](http://www.runoob.com/opencode/opencode-lsp.html)\n\n\n ·\n [\n OpenCode 权限配置 ](http://www.runoob.com/opencode/opencode-permissions.html)\n\n\n ·\n [\n OpenCode 格式化... ](http://www.runoob.com/opencode/opencode-formatter.html)\n\n\n ·\n [\n OpenCode 自定义... ](http://www.runoob.com/opencode/opencode-commands.html)\n\n\n\n\n 站点信息\n\n\n ·\n [意见反馈](https://www.runoob.commailto:admin@runoob.com)\n\n\n ·\n [免责声明](https://www.runoob.com/disclaimer)\n\n\n ·\n [关于我们](https://www.runoob.com/aboutus)\n\n\n ·\n [文章归档](https://www.runoob.com/archives)\n\n\n\n\n\n\n\n **关注微信**\n\n\n\n \n\n\n\n\n\n\n Copyright © 2013-2026 **[菜鸟教程](https://www.runoob.com//www.runoob.com/)** \n **[runoob.com](https://www.runoob.com//www.runoob.com/)** All Rights Reserved. 备案号:[闽ICP备15012807号-1](https://beian.miit.gov.cn/)\n\n\n\n [ ](https://www.runoob.comjavascript:void(0))\n [](https://www.runoob.comjavascript:void(0))\n [](https://www.runoob.comjavascript:void(0))\n\n\n\n#### 微信关注\n\n `;
document.getElementById('md-content').innerHTML = marked.parse(md);
</script>
</body>
</html>