File size: 6,804 Bytes
0dbc9de
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
---
title: Skr贸ty klawiszowe
description: Dostosuj swoje skr贸ty klawiszowe.
---

OpenCode zawiera list臋 skr贸t贸w klawiszowych, kt贸re mo偶na dostosowa膰 za pomoc膮 `tui.json`.

```json title="tui.json"
{
  "$schema": "https://opencode.ai/tui.json",
  "keybinds": {
    "leader": "ctrl+x",
    "app_exit": "ctrl+c,ctrl+d,<leader>q",
    "editor_open": "<leader>e",
    "theme_list": "<leader>t",
    "sidebar_toggle": "<leader>b",
    "scrollbar_toggle": "none",
    "username_toggle": "none",
    "status_view": "<leader>s",
    "tool_details": "none",
    "session_export": "<leader>x",
    "session_new": "<leader>n",
    "session_list": "<leader>l",
    "session_timeline": "<leader>g",
    "session_fork": "none",
    "session_rename": "none",
    "session_share": "none",
    "session_unshare": "none",
    "session_interrupt": "escape",
    "session_compact": "<leader>c",
    "session_child_first": "<leader>down",
    "session_child_cycle": "<leader>right",
    "session_child_cycle_reverse": "<leader>left",
    "session_parent": "<leader>up",
    "messages_page_up": "pageup,ctrl+alt+b",
    "messages_page_down": "pagedown,ctrl+alt+f",
    "messages_line_up": "ctrl+alt+y",
    "messages_line_down": "ctrl+alt+e",
    "messages_half_page_up": "ctrl+alt+u",
    "messages_half_page_down": "ctrl+alt+d",
    "messages_first": "ctrl+g,home",
    "messages_last": "ctrl+alt+g,end",
    "messages_next": "none",
    "messages_previous": "none",
    "messages_copy": "<leader>y",
    "messages_undo": "<leader>u",
    "messages_redo": "<leader>r",
    "messages_last_user": "none",
    "messages_toggle_conceal": "<leader>h",
    "model_list": "<leader>m",
    "model_cycle_recent": "f2",
    "model_cycle_recent_reverse": "shift+f2",
    "model_cycle_favorite": "none",
    "model_cycle_favorite_reverse": "none",
    "variant_cycle": "ctrl+t",
    "variant_list": "none",
    "command_list": "ctrl+p",
    "agent_list": "<leader>a",
    "agent_cycle": "tab",
    "agent_cycle_reverse": "shift+tab",
    "input_clear": "ctrl+c",
    "input_paste": "ctrl+v",
    "input_submit": "return",
    "input_newline": "shift+return,ctrl+return,alt+return,ctrl+j",
    "input_move_left": "left,ctrl+b",
    "input_move_right": "right,ctrl+f",
    "input_move_up": "up",
    "input_move_down": "down",
    "input_select_left": "shift+left",
    "input_select_right": "shift+right",
    "input_select_up": "shift+up",
    "input_select_down": "shift+down",
    "input_line_home": "ctrl+a",
    "input_line_end": "ctrl+e",
    "input_select_line_home": "ctrl+shift+a",
    "input_select_line_end": "ctrl+shift+e",
    "input_visual_line_home": "alt+a",
    "input_visual_line_end": "alt+e",
    "input_select_visual_line_home": "alt+shift+a",
    "input_select_visual_line_end": "alt+shift+e",
    "input_buffer_home": "home",
    "input_buffer_end": "end",
    "input_select_buffer_home": "shift+home",
    "input_select_buffer_end": "shift+end",
    "input_delete_line": "ctrl+shift+d",
    "input_delete_to_line_end": "ctrl+k",
    "input_delete_to_line_start": "ctrl+u",
    "input_backspace": "backspace,shift+backspace",
    "input_delete": "ctrl+d,delete,shift+delete",
    "input_undo": "ctrl+-,super+z",
    "input_redo": "ctrl+.,super+shift+z",
    "input_word_forward": "alt+f,alt+right,ctrl+right",
    "input_word_backward": "alt+b,alt+left,ctrl+left",
    "input_select_word_forward": "alt+shift+f,alt+shift+right",
    "input_select_word_backward": "alt+shift+b,alt+shift+left",
    "input_delete_word_forward": "alt+d,alt+delete,ctrl+delete",
    "input_delete_word_backward": "ctrl+w,ctrl+backspace,alt+backspace",
    "history_previous": "up",
    "history_next": "down",
    "terminal_suspend": "ctrl+z",
    "terminal_title_toggle": "none",
    "tips_toggle": "<leader>h",
    "display_thinking": "none"
  }
}
```

---

## Klucz lidera

opencode u偶ywa klucza `leader` dla g艂贸wnych skr贸t贸w klawiszowych. Rozwi膮zanie problemu konflikt贸w w terminalu.

Domy艣lnie `ctrl+x` jest klawiszem g艂贸wnym i g艂贸wn膮 akcj膮 wymaga najpierw naci艣ni臋cia klawisza lidera, a nast臋pnie skr贸tu. Na przyk艂ad, aby ponownie zastosowa膰, nast臋pnie nast臋puje `ctrl+x`, a nast臋pnie nast臋puje `n`.

Nie musisz mie膰 klawisza wiod膮cego do skr贸t贸w klawiszowych, ale zalecamy to Reg.

---

## Wy艂膮cz powi膮zanie klawiszy

Mo偶esz wy艂膮czy膰 skr贸t klawiszowy, dodaj膮c klucz do `tui.json` z warto艣ci膮 "none".

```json title="tui.json"
{
  "$schema": "https://opencode.ai/tui.json",
  "keybinds": {
    "session_compact": "none"
  }
}
```

---

## Skr贸ty monit贸w na pulpicie

Pole sprawdzania aplikacji komputerowej opencode obs艂uguje popularne skr贸ty w stylu Readline/Emacs do edycji tekstu. S膮 one dost臋pne i obecnie nie mo偶na ich skonfigurowa膰 za pomoc膮 `opencode.json`.

| Skr贸t    | Akcja                                                         |
| -------- | ------------------------------------------------------------- |
| `ctrl+a` | Przejd藕 do 藕r贸d艂a regularnej linii                            |
| `ctrl+e` | Przejd藕 na koniec bie偶膮cej linii                              |
| `ctrl+b` | Przesu艅 kursor do ty艂u o jeden znak                           |
| `ctrl+f` | Przesu艅 kursor o jeden znak do przodu                         |
| `alt+b`  | Przesu艅 kursor o jedno s艂owo wstecz                           |
| `alt+f`  | Przesu艅 kursor do przodu o jedno s艂owo                        |
| `ctrl+d` | Usu艅 znak pod kursorem                                        |
| `ctrl+k` | Zabij do ko艅ca linii                                          |
| `ctrl+u` | Zabij na pocz膮tek linii                                       |
| `ctrl+w` | Zabij poprzednie s艂owo                                        |
| `alt+d`  | Zabij nast臋pne s艂owo                                          |
| `ctrl+t` | Transponuj znaki                                              |
| `ctrl+g` | Anuluj wyskakuj膮ce okienka / przerwij uruchamianie odpowiedzi |

---

## Shift+Enter

Istniej膮 terminale, kt贸re nie wysy艂aj膮 klawiszy modyfikuj膮cych z Enterem. Mo偶e by膰 konieczne skonfigurowanie terminala tak, aby wys艂a膰 `Shift+Enter` jako przerwanie zako艅czenia.

### Terminal Windowsowy

Otw贸rz sw贸j `settings.json` pod adresem:

```
%LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json
```

Dodaj do tablicy `actions` na poziomie wy偶szym:

```json
"actions": [
  {
    "command": {
      "action": "sendInput",
      "input": "\u001b[13;2u"
    },
    "id": "User.sendInput.ShiftEnterCustom"
  }
]
```

Dodaj do tablicy `keybindings` na poziomie wy偶szym:

```json
"keybindings": [
  {
    "keys": "shift+enter",
    "id": "User.sendInput.ShiftEnterCustom"
  }
]
```

Zapisz plik i uruchom ponownie terminal Windows lub otw贸rz now膮 kart臋.