@neocode-ai/web 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +54 -0
- package/astro.config.mjs +145 -0
- package/config.mjs +14 -0
- package/package.json +41 -0
- package/public/robots.txt +6 -0
- package/public/theme.json +183 -0
- package/src/assets/lander/check.svg +2 -0
- package/src/assets/lander/copy.svg +2 -0
- package/src/assets/lander/screenshot-github.png +0 -0
- package/src/assets/lander/screenshot-splash.png +0 -0
- package/src/assets/lander/screenshot-vscode.png +0 -0
- package/src/assets/lander/screenshot.png +0 -0
- package/src/assets/logo-dark.svg +20 -0
- package/src/assets/logo-light.svg +20 -0
- package/src/assets/logo-ornate-dark.svg +18 -0
- package/src/assets/logo-ornate-light.svg +18 -0
- package/src/assets/web/web-homepage-active-session.png +0 -0
- package/src/assets/web/web-homepage-new-session.png +0 -0
- package/src/assets/web/web-homepage-see-servers.png +0 -0
- package/src/components/Head.astro +50 -0
- package/src/components/Header.astro +128 -0
- package/src/components/Hero.astro +11 -0
- package/src/components/Lander.astro +713 -0
- package/src/components/Share.tsx +634 -0
- package/src/components/SiteTitle.astro +59 -0
- package/src/components/icons/custom.tsx +87 -0
- package/src/components/icons/index.tsx +4454 -0
- package/src/components/share/common.tsx +77 -0
- package/src/components/share/content-bash.module.css +85 -0
- package/src/components/share/content-bash.tsx +67 -0
- package/src/components/share/content-code.module.css +26 -0
- package/src/components/share/content-code.tsx +32 -0
- package/src/components/share/content-diff.module.css +153 -0
- package/src/components/share/content-diff.tsx +231 -0
- package/src/components/share/content-error.module.css +64 -0
- package/src/components/share/content-error.tsx +24 -0
- package/src/components/share/content-markdown.module.css +154 -0
- package/src/components/share/content-markdown.tsx +75 -0
- package/src/components/share/content-text.module.css +63 -0
- package/src/components/share/content-text.tsx +37 -0
- package/src/components/share/copy-button.module.css +30 -0
- package/src/components/share/copy-button.tsx +28 -0
- package/src/components/share/part.module.css +428 -0
- package/src/components/share/part.tsx +780 -0
- package/src/components/share.module.css +832 -0
- package/src/content/docs/1-0.mdx +67 -0
- package/src/content/docs/acp.mdx +156 -0
- package/src/content/docs/agents.mdx +720 -0
- package/src/content/docs/cli.mdx +597 -0
- package/src/content/docs/commands.mdx +323 -0
- package/src/content/docs/config.mdx +683 -0
- package/src/content/docs/custom-tools.mdx +170 -0
- package/src/content/docs/ecosystem.mdx +76 -0
- package/src/content/docs/enterprise.mdx +170 -0
- package/src/content/docs/formatters.mdx +130 -0
- package/src/content/docs/github.mdx +321 -0
- package/src/content/docs/gitlab.mdx +195 -0
- package/src/content/docs/ide.mdx +48 -0
- package/src/content/docs/index.mdx +359 -0
- package/src/content/docs/keybinds.mdx +191 -0
- package/src/content/docs/lsp.mdx +188 -0
- package/src/content/docs/mcp-servers.mdx +511 -0
- package/src/content/docs/models.mdx +223 -0
- package/src/content/docs/modes.mdx +331 -0
- package/src/content/docs/network.mdx +57 -0
- package/src/content/docs/permissions.mdx +237 -0
- package/src/content/docs/plugins.mdx +362 -0
- package/src/content/docs/providers.mdx +1889 -0
- package/src/content/docs/rules.mdx +180 -0
- package/src/content/docs/sdk.mdx +391 -0
- package/src/content/docs/server.mdx +286 -0
- package/src/content/docs/share.mdx +128 -0
- package/src/content/docs/skills.mdx +220 -0
- package/src/content/docs/themes.mdx +369 -0
- package/src/content/docs/tools.mdx +345 -0
- package/src/content/docs/troubleshooting.mdx +300 -0
- package/src/content/docs/tui.mdx +390 -0
- package/src/content/docs/web.mdx +136 -0
- package/src/content/docs/windows-wsl.mdx +113 -0
- package/src/content/docs/zen.mdx +251 -0
- package/src/content.config.ts +7 -0
- package/src/pages/[...slug].md.ts +18 -0
- package/src/pages/s/[id].astro +113 -0
- package/src/styles/custom.css +405 -0
- package/src/types/lang-map.d.ts +27 -0
- package/tsconfig.json +9 -0
|
@@ -0,0 +1,359 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Intro
|
|
3
|
+
description: Get started with NeoCode.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
import { Tabs, TabItem } from "@astrojs/starlight/components"
|
|
7
|
+
import config from "../../../config.mjs"
|
|
8
|
+
export const console = config.console
|
|
9
|
+
|
|
10
|
+
[**NeoCode**](/) is an open source AI coding agent. It's available as a terminal-based interface, desktop app, or IDE extension.
|
|
11
|
+
|
|
12
|
+

|
|
13
|
+
|
|
14
|
+
Let's get started.
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
#### Prerequisites
|
|
19
|
+
|
|
20
|
+
To use NeoCode in your terminal, you'll need:
|
|
21
|
+
|
|
22
|
+
1. A modern terminal emulator like:
|
|
23
|
+
- [WezTerm](https://wezterm.org), cross-platform
|
|
24
|
+
- [Alacritty](https://alacritty.org), cross-platform
|
|
25
|
+
- [Ghostty](https://ghostty.org), Linux and macOS
|
|
26
|
+
- [Kitty](https://sw.kovidgoyal.net/kitty/), Linux and macOS
|
|
27
|
+
|
|
28
|
+
2. API keys for the LLM providers you want to use.
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## Install
|
|
33
|
+
|
|
34
|
+
The easiest way to install NeoCode is through the install script.
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
curl -fsSL https://raw.githubusercontent.com/neopilot-ai/neocode/refs/heads/dev/install | bash
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
You can also install it with the following commands:
|
|
41
|
+
|
|
42
|
+
- **Using Node.js**
|
|
43
|
+
|
|
44
|
+
<Tabs>
|
|
45
|
+
|
|
46
|
+
<TabItem label="npm">
|
|
47
|
+
```bash
|
|
48
|
+
npm install -g neocode-ai
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
</TabItem>
|
|
52
|
+
|
|
53
|
+
<TabItem label="Bun">
|
|
54
|
+
```bash
|
|
55
|
+
bun install -g neocode-ai
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
</TabItem>
|
|
59
|
+
|
|
60
|
+
<TabItem label="pnpm">
|
|
61
|
+
```bash
|
|
62
|
+
pnpm install -g neocode-ai
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
</TabItem>
|
|
66
|
+
|
|
67
|
+
<TabItem label="Yarn">
|
|
68
|
+
```bash
|
|
69
|
+
yarn global add neocode-ai
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
</TabItem>
|
|
73
|
+
|
|
74
|
+
</Tabs>
|
|
75
|
+
|
|
76
|
+
- **Using Homebrew on macOS and Linux**
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
brew install neopilot-ai/tap/neocode
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
> We recommend using the NeoCode tap for the most up to date releases. The official `brew install neocode` formula is maintained by the Homebrew team and is updated less frequently.
|
|
83
|
+
|
|
84
|
+
- **Using Paru on Arch Linux**
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
paru -S neocode-bin
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
#### Windows
|
|
91
|
+
|
|
92
|
+
:::tip[Recommended: Use WSL]
|
|
93
|
+
For the best experience on Windows, we recommend using [Windows Subsystem for Linux (WSL)](/docs/windows-wsl). It provides better performance and full compatibility with NeoCode's features.
|
|
94
|
+
:::
|
|
95
|
+
|
|
96
|
+
- **Using Chocolatey**
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
choco install neocode
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
- **Using Scoop**
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
scoop install neocode
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
- **Using NPM**
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
npm install -g neocode-ai
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
- **Using Mise**
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
mise use -g github:neopilot-ai/neocode
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
- **Using Docker**
|
|
121
|
+
|
|
122
|
+
```bash
|
|
123
|
+
docker run -it --rm ghcr.io/neopilot-ai/neocode
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
Support for installing NeoCode on Windows using Bun is currently in progress.
|
|
127
|
+
|
|
128
|
+
You can also grab the binary from the [Releases](https://github.com/neopilot-ai/neocode/releases).
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
## Configure
|
|
133
|
+
|
|
134
|
+
With NeoCode you can use any LLM provider by configuring their API keys.
|
|
135
|
+
|
|
136
|
+
If you are new to using LLM providers, we recommend using [NeoCode Zen](/docs/zen).
|
|
137
|
+
It's a curated list of models that have been tested and verified by the NeoCode
|
|
138
|
+
team.
|
|
139
|
+
|
|
140
|
+
1. Run the `/connect` command in the TUI, select neocode, and head to [neo.khulnasoft.com/auth](https://neo.khulnasoft.com/auth).
|
|
141
|
+
|
|
142
|
+
```txt
|
|
143
|
+
/connect
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
2. Sign in, add your billing details, and copy your API key.
|
|
147
|
+
|
|
148
|
+
3. Paste your API key.
|
|
149
|
+
|
|
150
|
+
```txt
|
|
151
|
+
┌ API key
|
|
152
|
+
│
|
|
153
|
+
│
|
|
154
|
+
└ enter
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
Alternatively, you can select one of the other providers. [Learn more](/docs/providers#directory).
|
|
158
|
+
|
|
159
|
+
---
|
|
160
|
+
|
|
161
|
+
## Initialize
|
|
162
|
+
|
|
163
|
+
Now that you've configured a provider, you can navigate to a project that
|
|
164
|
+
you want to work on.
|
|
165
|
+
|
|
166
|
+
```bash
|
|
167
|
+
cd /path/to/project
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
And run NeoCode.
|
|
171
|
+
|
|
172
|
+
```bash
|
|
173
|
+
neocode
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
Next, initialize NeoCode for the project by running the following command.
|
|
177
|
+
|
|
178
|
+
```bash frame="none"
|
|
179
|
+
/init
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
This will get NeoCode to analyze your project and create an `AGENTS.md` file in
|
|
183
|
+
the project root.
|
|
184
|
+
|
|
185
|
+
:::tip
|
|
186
|
+
You should commit your project's `AGENTS.md` file to Git.
|
|
187
|
+
:::
|
|
188
|
+
|
|
189
|
+
This helps NeoCode understand the project structure and the coding patterns
|
|
190
|
+
used.
|
|
191
|
+
|
|
192
|
+
---
|
|
193
|
+
|
|
194
|
+
## Usage
|
|
195
|
+
|
|
196
|
+
You are now ready to use NeoCode to work on your project. Feel free to ask it
|
|
197
|
+
anything!
|
|
198
|
+
|
|
199
|
+
If you are new to using an AI coding agent, here are some examples that might
|
|
200
|
+
help.
|
|
201
|
+
|
|
202
|
+
---
|
|
203
|
+
|
|
204
|
+
### Ask questions
|
|
205
|
+
|
|
206
|
+
You can ask NeoCode to explain the codebase to you.
|
|
207
|
+
|
|
208
|
+
:::tip
|
|
209
|
+
Use the `@` key to fuzzy search for files in the project.
|
|
210
|
+
:::
|
|
211
|
+
|
|
212
|
+
```txt frame="none" "@packages/functions/src/api/index.ts"
|
|
213
|
+
How is authentication handled in @packages/functions/src/api/index.ts
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
This is helpful if there's a part of the codebase that you didn't work on.
|
|
217
|
+
|
|
218
|
+
---
|
|
219
|
+
|
|
220
|
+
### Add features
|
|
221
|
+
|
|
222
|
+
You can ask NeoCode to add new features to your project. Though we first recommend asking it to create a plan.
|
|
223
|
+
|
|
224
|
+
1. **Create a plan**
|
|
225
|
+
|
|
226
|
+
NeoCode has a _Plan mode_ that disables its ability to make changes and
|
|
227
|
+
instead suggest _how_ it'll implement the feature.
|
|
228
|
+
|
|
229
|
+
Switch to it using the **Tab** key. You'll see an indicator for this in the lower right corner.
|
|
230
|
+
|
|
231
|
+
```bash frame="none" title="Switch to Plan mode"
|
|
232
|
+
<TAB>
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
Now let's describe what we want it to do.
|
|
236
|
+
|
|
237
|
+
```txt frame="none"
|
|
238
|
+
When a user deletes a note, we'd like to flag it as deleted in the database.
|
|
239
|
+
Then create a screen that shows all the recently deleted notes.
|
|
240
|
+
From this screen, the user can undelete a note or permanently delete it.
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
You want to give NeoCode enough details to understand what you want. It helps
|
|
244
|
+
to talk to it like you are talking to a junior developer on your team.
|
|
245
|
+
|
|
246
|
+
:::tip
|
|
247
|
+
Give NeoCode plenty of context and examples to help it understand what you
|
|
248
|
+
want.
|
|
249
|
+
:::
|
|
250
|
+
|
|
251
|
+
2. **Iterate on the plan**
|
|
252
|
+
|
|
253
|
+
Once it gives you a plan, you can give it feedback or add more details.
|
|
254
|
+
|
|
255
|
+
```txt frame="none"
|
|
256
|
+
We'd like to design this new screen using a design I've used before.
|
|
257
|
+
[Image #1] Take a look at this image and use it as a reference.
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
:::tip
|
|
261
|
+
Drag and drop images into the terminal to add them to the prompt.
|
|
262
|
+
:::
|
|
263
|
+
|
|
264
|
+
NeoCode can scan any images you give it and add them to the prompt. You can
|
|
265
|
+
do this by dragging and dropping an image into the terminal.
|
|
266
|
+
|
|
267
|
+
3. **Build the feature**
|
|
268
|
+
|
|
269
|
+
Once you feel comfortable with the plan, switch back to _Build mode_ by
|
|
270
|
+
hitting the **Tab** key again.
|
|
271
|
+
|
|
272
|
+
```bash frame="none"
|
|
273
|
+
<TAB>
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
And asking it to make the changes.
|
|
277
|
+
|
|
278
|
+
```bash frame="none"
|
|
279
|
+
Sounds good! Go ahead and make the changes.
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
---
|
|
283
|
+
|
|
284
|
+
### Make changes
|
|
285
|
+
|
|
286
|
+
For more straightforward changes, you can ask NeoCode to directly build it
|
|
287
|
+
without having to review the plan first.
|
|
288
|
+
|
|
289
|
+
```txt frame="none" "@packages/functions/src/settings.ts" "@packages/functions/src/notes.ts"
|
|
290
|
+
We need to add authentication to the /settings route. Take a look at how this is
|
|
291
|
+
handled in the /notes route in @packages/functions/src/notes.ts and implement
|
|
292
|
+
the same logic in @packages/functions/src/settings.ts
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
You want to make sure you provide a good amount of detail so NeoCode makes the right
|
|
296
|
+
changes.
|
|
297
|
+
|
|
298
|
+
---
|
|
299
|
+
|
|
300
|
+
### Undo changes
|
|
301
|
+
|
|
302
|
+
Let's say you ask NeoCode to make some changes.
|
|
303
|
+
|
|
304
|
+
```txt frame="none" "@packages/functions/src/api/index.ts"
|
|
305
|
+
Can you refactor the function in @packages/functions/src/api/index.ts?
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
But you realize that it is not what you wanted. You **can undo** the changes
|
|
309
|
+
using the `/undo` command.
|
|
310
|
+
|
|
311
|
+
```bash frame="none"
|
|
312
|
+
/undo
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
NeoCode will now revert the changes you made and show your original message
|
|
316
|
+
again.
|
|
317
|
+
|
|
318
|
+
```txt frame="none" "@packages/functions/src/api/index.ts"
|
|
319
|
+
Can you refactor the function in @packages/functions/src/api/index.ts?
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
From here you can tweak the prompt and ask NeoCode to try again.
|
|
323
|
+
|
|
324
|
+
:::tip
|
|
325
|
+
You can run `/undo` multiple times to undo multiple changes.
|
|
326
|
+
:::
|
|
327
|
+
|
|
328
|
+
Or you **can redo** the changes using the `/redo` command.
|
|
329
|
+
|
|
330
|
+
```bash frame="none"
|
|
331
|
+
/redo
|
|
332
|
+
```
|
|
333
|
+
|
|
334
|
+
---
|
|
335
|
+
|
|
336
|
+
## Share
|
|
337
|
+
|
|
338
|
+
The conversations that you have with NeoCode can be [shared with your
|
|
339
|
+
team](/docs/share).
|
|
340
|
+
|
|
341
|
+
```bash frame="none"
|
|
342
|
+
/share
|
|
343
|
+
```
|
|
344
|
+
|
|
345
|
+
This will create a link to the current conversation and copy it to your clipboard.
|
|
346
|
+
|
|
347
|
+
:::note
|
|
348
|
+
Conversations are not shared by default.
|
|
349
|
+
:::
|
|
350
|
+
|
|
351
|
+
Here's an [example conversation](https://neo.khulnasoft.com/s/4XP1fce5) with NeoCode.
|
|
352
|
+
|
|
353
|
+
---
|
|
354
|
+
|
|
355
|
+
## Customize
|
|
356
|
+
|
|
357
|
+
And that's it! You are now a pro at using NeoCode.
|
|
358
|
+
|
|
359
|
+
To make it your own, we recommend [picking a theme](/docs/themes), [customizing the keybinds](/docs/keybinds), [configuring code formatters](/docs/formatters), [creating custom commands](/docs/commands), or playing around with the [NeoCode config](/docs/config).
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Keybinds
|
|
3
|
+
description: Customize your keybinds.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
NeoCode has a list of keybinds that you can customize through the NeoCode config.
|
|
7
|
+
|
|
8
|
+
```json title="neocode.json"
|
|
9
|
+
{
|
|
10
|
+
"$schema": "https://neo.khulnasoft.com/config.json",
|
|
11
|
+
"keybinds": {
|
|
12
|
+
"leader": "ctrl+x",
|
|
13
|
+
"app_exit": "ctrl+c,ctrl+d,<leader>q",
|
|
14
|
+
"editor_open": "<leader>e",
|
|
15
|
+
"theme_list": "<leader>t",
|
|
16
|
+
"sidebar_toggle": "<leader>b",
|
|
17
|
+
"scrollbar_toggle": "none",
|
|
18
|
+
"username_toggle": "none",
|
|
19
|
+
"status_view": "<leader>s",
|
|
20
|
+
"tool_details": "none",
|
|
21
|
+
"session_export": "<leader>x",
|
|
22
|
+
"session_new": "<leader>n",
|
|
23
|
+
"session_list": "<leader>l",
|
|
24
|
+
"session_timeline": "<leader>g",
|
|
25
|
+
"session_fork": "none",
|
|
26
|
+
"session_rename": "none",
|
|
27
|
+
"session_share": "none",
|
|
28
|
+
"session_unshare": "none",
|
|
29
|
+
"session_interrupt": "escape",
|
|
30
|
+
"session_compact": "<leader>c",
|
|
31
|
+
"session_child_cycle": "<leader>right",
|
|
32
|
+
"session_child_cycle_reverse": "<leader>left",
|
|
33
|
+
"session_parent": "<leader>up",
|
|
34
|
+
"messages_page_up": "pageup,ctrl+alt+b",
|
|
35
|
+
"messages_page_down": "pagedown,ctrl+alt+f",
|
|
36
|
+
"messages_line_up": "ctrl+alt+y",
|
|
37
|
+
"messages_line_down": "ctrl+alt+e",
|
|
38
|
+
"messages_half_page_up": "ctrl+alt+u",
|
|
39
|
+
"messages_half_page_down": "ctrl+alt+d",
|
|
40
|
+
"messages_first": "ctrl+g,home",
|
|
41
|
+
"messages_last": "ctrl+alt+g,end",
|
|
42
|
+
"messages_next": "none",
|
|
43
|
+
"messages_previous": "none",
|
|
44
|
+
"messages_copy": "<leader>y",
|
|
45
|
+
"messages_undo": "<leader>u",
|
|
46
|
+
"messages_redo": "<leader>r",
|
|
47
|
+
"messages_last_user": "none",
|
|
48
|
+
"messages_toggle_conceal": "<leader>h",
|
|
49
|
+
"model_list": "<leader>m",
|
|
50
|
+
"model_cycle_recent": "f2",
|
|
51
|
+
"model_cycle_recent_reverse": "shift+f2",
|
|
52
|
+
"model_cycle_favorite": "none",
|
|
53
|
+
"model_cycle_favorite_reverse": "none",
|
|
54
|
+
"variant_cycle": "ctrl+t",
|
|
55
|
+
"command_list": "ctrl+p",
|
|
56
|
+
"agent_list": "<leader>a",
|
|
57
|
+
"agent_cycle": "tab",
|
|
58
|
+
"agent_cycle_reverse": "shift+tab",
|
|
59
|
+
"input_clear": "ctrl+c",
|
|
60
|
+
"input_paste": "ctrl+v",
|
|
61
|
+
"input_submit": "return",
|
|
62
|
+
"input_newline": "shift+return,ctrl+return,alt+return,ctrl+j",
|
|
63
|
+
"input_move_left": "left,ctrl+b",
|
|
64
|
+
"input_move_right": "right,ctrl+f",
|
|
65
|
+
"input_move_up": "up",
|
|
66
|
+
"input_move_down": "down",
|
|
67
|
+
"input_select_left": "shift+left",
|
|
68
|
+
"input_select_right": "shift+right",
|
|
69
|
+
"input_select_up": "shift+up",
|
|
70
|
+
"input_select_down": "shift+down",
|
|
71
|
+
"input_line_home": "ctrl+a",
|
|
72
|
+
"input_line_end": "ctrl+e",
|
|
73
|
+
"input_select_line_home": "ctrl+shift+a",
|
|
74
|
+
"input_select_line_end": "ctrl+shift+e",
|
|
75
|
+
"input_visual_line_home": "alt+a",
|
|
76
|
+
"input_visual_line_end": "alt+e",
|
|
77
|
+
"input_select_visual_line_home": "alt+shift+a",
|
|
78
|
+
"input_select_visual_line_end": "alt+shift+e",
|
|
79
|
+
"input_buffer_home": "home",
|
|
80
|
+
"input_buffer_end": "end",
|
|
81
|
+
"input_select_buffer_home": "shift+home",
|
|
82
|
+
"input_select_buffer_end": "shift+end",
|
|
83
|
+
"input_delete_line": "ctrl+shift+d",
|
|
84
|
+
"input_delete_to_line_end": "ctrl+k",
|
|
85
|
+
"input_delete_to_line_start": "ctrl+u",
|
|
86
|
+
"input_backspace": "backspace,shift+backspace",
|
|
87
|
+
"input_delete": "ctrl+d,delete,shift+delete",
|
|
88
|
+
"input_undo": "ctrl+-,super+z",
|
|
89
|
+
"input_redo": "ctrl+.,super+shift+z",
|
|
90
|
+
"input_word_forward": "alt+f,alt+right,ctrl+right",
|
|
91
|
+
"input_word_backward": "alt+b,alt+left,ctrl+left",
|
|
92
|
+
"input_select_word_forward": "alt+shift+f,alt+shift+right",
|
|
93
|
+
"input_select_word_backward": "alt+shift+b,alt+shift+left",
|
|
94
|
+
"input_delete_word_forward": "alt+d,alt+delete,ctrl+delete",
|
|
95
|
+
"input_delete_word_backward": "ctrl+w,ctrl+backspace,alt+backspace",
|
|
96
|
+
"history_previous": "up",
|
|
97
|
+
"history_next": "down",
|
|
98
|
+
"terminal_suspend": "ctrl+z",
|
|
99
|
+
"terminal_title_toggle": "none",
|
|
100
|
+
"tips_toggle": "<leader>h"
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
## Leader key
|
|
108
|
+
|
|
109
|
+
NeoCode uses a `leader` key for most keybinds. This avoids conflicts in your terminal.
|
|
110
|
+
|
|
111
|
+
By default, `ctrl+x` is the leader key and most actions require you to first press the leader key and then the shortcut. For example, to start a new session you first press `ctrl+x` and then press `n`.
|
|
112
|
+
|
|
113
|
+
You don't need to use a leader key for your keybinds but we recommend doing so.
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## Disable keybind
|
|
118
|
+
|
|
119
|
+
You can disable a keybind by adding the key to your config with a value of "none".
|
|
120
|
+
|
|
121
|
+
```json title="neocode.json"
|
|
122
|
+
{
|
|
123
|
+
"$schema": "https://neo.khulnasoft.com/config.json",
|
|
124
|
+
"keybinds": {
|
|
125
|
+
"session_compact": "none"
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
## Desktop prompt shortcuts
|
|
133
|
+
|
|
134
|
+
The NeoCode desktop app prompt input supports common Readline/Emacs-style shortcuts for editing text. These are built-in and currently not configurable via `neocode.json`.
|
|
135
|
+
|
|
136
|
+
| Shortcut | Action |
|
|
137
|
+
| -------- | ---------------------------------------- |
|
|
138
|
+
| `ctrl+a` | Move to start of current line |
|
|
139
|
+
| `ctrl+e` | Move to end of current line |
|
|
140
|
+
| `ctrl+b` | Move cursor back one character |
|
|
141
|
+
| `ctrl+f` | Move cursor forward one character |
|
|
142
|
+
| `alt+b` | Move cursor back one word |
|
|
143
|
+
| `alt+f` | Move cursor forward one word |
|
|
144
|
+
| `ctrl+d` | Delete character under cursor |
|
|
145
|
+
| `ctrl+k` | Kill to end of line |
|
|
146
|
+
| `ctrl+u` | Kill to start of line |
|
|
147
|
+
| `ctrl+w` | Kill previous word |
|
|
148
|
+
| `alt+d` | Kill next word |
|
|
149
|
+
| `ctrl+t` | Transpose characters |
|
|
150
|
+
| `ctrl+g` | Cancel popovers / abort running response |
|
|
151
|
+
|
|
152
|
+
---
|
|
153
|
+
|
|
154
|
+
## Shift+Enter
|
|
155
|
+
|
|
156
|
+
Some terminals don't send modifier keys with Enter by default. You may need to configure your terminal to send `Shift+Enter` as an escape sequence.
|
|
157
|
+
|
|
158
|
+
### Windows Terminal
|
|
159
|
+
|
|
160
|
+
Open your `settings.json` at:
|
|
161
|
+
|
|
162
|
+
```
|
|
163
|
+
%LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
Add this to the root-level `actions` array:
|
|
167
|
+
|
|
168
|
+
```json
|
|
169
|
+
"actions": [
|
|
170
|
+
{
|
|
171
|
+
"command": {
|
|
172
|
+
"action": "sendInput",
|
|
173
|
+
"input": "\u001b[13;2u"
|
|
174
|
+
},
|
|
175
|
+
"id": "User.sendInput.ShiftEnterCustom"
|
|
176
|
+
}
|
|
177
|
+
]
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
Add this to the root-level `keybindings` array:
|
|
181
|
+
|
|
182
|
+
```json
|
|
183
|
+
"keybindings": [
|
|
184
|
+
{
|
|
185
|
+
"keys": "shift+enter",
|
|
186
|
+
"id": "User.sendInput.ShiftEnterCustom"
|
|
187
|
+
}
|
|
188
|
+
]
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
Save the file and restart Windows Terminal or open a new tab.
|