leditrc.5 - ledit - Text editor (WIP) | |
git clone git://lumidify.org/ledit.git (fast, but not encrypted) | |
git clone https://lumidify.org/ledit.git (encrypted, but very slow) | |
git clone git://4kcetb7mo7hj6grozzybxtotsub5bempzo4lirzc3437amof2c2impyd.onion/… | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
leditrc.5 (34158B) | |
--- | |
1 .Dd October 6, 2023 | |
2 .Dt LEDITRC 5 | |
3 .Os | |
4 .Sh NAME | |
5 .Nm leditrc | |
6 .Nd configuration file for | |
7 .Xr ledit 1 | |
8 .Sh DESCRIPTION | |
9 .Nm | |
10 is the configuration file for the text editor | |
11 .Xr ledit 1 , | |
12 which can be used to configure the theme and key bindings used. | |
13 .Pp | |
14 The description of the format given here is terrible, so it's | |
15 probably more useful to look at the example config provided in | |
16 .Pa leditrc.example . | |
17 .Pp | |
18 The parser recognizes four different types of structures: | |
19 strings, lists, statements, and assignments. | |
20 .Pp | |
21 A string is simply any sequence of characters surrounded by double quote… | |
22 Double quotes must be backslash-escaped. | |
23 If a string does not contain any whitespace or the special | |
24 characters | |
25 .Sq \&" , | |
26 .Sq { , | |
27 .Sq } , | |
28 or | |
29 .Sq = , | |
30 the double quotes are not required. | |
31 .Pp | |
32 A statement is a sequence of strings, separated by whitespace and | |
33 all on the same line. | |
34 .Pp | |
35 An assignment is of the form | |
36 .Aq identifier | |
37 = | |
38 .Aq structure , | |
39 where | |
40 .Aq identifier | |
41 is a string and | |
42 .Aq structure | |
43 is a string or a list. | |
44 .Pp | |
45 A list is a sequence of assignments and/or statements that is | |
46 enclosed by curly braces. | |
47 The assignments/statements must be separated by newlines. | |
48 .Pp | |
49 The configuration file consists of several top-level assignments | |
50 which are described in the following sections. | |
51 .Sh BASIC CONCEPTS | |
52 Some terminology should probably be explained in order to understand the | |
53 rest of this manual. | |
54 .Bl -tag -width Ds | |
55 .It Ar word | |
56 Whatever Pango defines a word to be. | |
57 This probably uses Unicode semantics (UAX #29), but I'm not entirely sur… | |
58 .It Ar bigword | |
59 A sequence of non-whitespace characters. | |
60 .It Ar character | |
61 A Unicode character. | |
62 Note that, when used as an argument (for instance when setting a mark), | |
63 .Ar character | |
64 can mean pretty much any string, as long as it is given to the program | |
65 in one event. | |
66 Yes, this is inconsistent and confusing. | |
67 .It Ar grapheme | |
68 As defined by Unicode (UAX #29). | |
69 A grapheme may be composed of multiple Unicode characters. | |
70 The cursor is only allowed to be at valid grapheme boundaries, but | |
71 some operations work with characters, while others work with graphemes. | |
72 .It Ar paste buffer | |
73 When text is deleted or explicitly copied (yanked), it is written to the | |
74 paste buffer so that it can be pasted later. | |
75 The paste buffer is either character or line based, depending on whether | |
76 the deletion/copying operation was line or character based. | |
77 If a character based paste buffer is pasted, the text is inserted right | |
78 at the cursor position. | |
79 When it is line based, the text is inserted after the line. | |
80 .It Ar softline/hardline | |
81 A hardline is an actual line separated from the other lines by a newline | |
82 character. | |
83 A softline is a displayed line, but might only be part of a | |
84 hardline if the text is wrapped. | |
85 .Xr ledit 1 | |
86 can be in hardline or softline mode. | |
87 Some commands change their behavior depending on this mode, for instance | |
88 to move the cursor down a certain number of softlines instead of hardlin… | |
89 .El | |
90 .Sh THEME | |
91 The theme may be configured by assigning | |
92 .Ar theme | |
93 to a list of assignments, each of which sets one of the following | |
94 possible properties. | |
95 Colors are given in the form #RRGGBB, where the | |
96 .Sq # | |
97 is optional (mainly because | |
98 .Sq # | |
99 also starts comments in the configuration file format). | |
100 .Bl -tag -width Ds | |
101 .It Ar text-font | |
102 Font used for all text. | |
103 Default: Monospace | |
104 .It Ar text-size | |
105 Text size (in points or whatever pango uses). | |
106 Default: 12 | |
107 .It Ar text-fg | |
108 Text color in main editing area. | |
109 Default: #000000 | |
110 .It Ar text-bg | |
111 Background color in main editing area. | |
112 Default: #FFFFFF | |
113 .It Ar cursor-fg | |
114 Color of text under cursor. | |
115 Default: #FFFFFF | |
116 .It Ar cursor-bg | |
117 Color of text cursor. | |
118 Default: #000000 | |
119 .It Ar selection-fg | |
120 Color of selected text. | |
121 Default: #FFFFFF | |
122 .It Ar selection-bg | |
123 Color of selection. | |
124 Default: #000000 | |
125 .It Ar bar-fg | |
126 Color of text in status bar/line editor. | |
127 Default: #000000 | |
128 .It Ar bar-bg | |
129 Background color of status bar/line editor. | |
130 Default: #CCCCCC | |
131 .It Ar bar-cursor | |
132 Color of text cursor in line editor. | |
133 Default: #000000 | |
134 .It Ar bar-fmt | |
135 Format string for the bottom bar. | |
136 The following substitutions are performed: | |
137 .Bl -tag -width Ds | |
138 .It %% | |
139 The character | |
140 .Ql % | |
141 itself. | |
142 .It %l | |
143 The current line index of the cursor (1-indexed). | |
144 .It %b | |
145 The current byte index of the cursor (1-indexed). | |
146 Note that this is really only the raw byte position. | |
147 There currently is no way to get the unicode character position in the f… | |
148 .It %k | |
149 The current keyboard layout used for mapping keys. | |
150 .It %m | |
151 The current mode. | |
152 .It %h | |
153 The current hardline/softline mode. | |
154 .It %s | |
155 A separator. | |
156 The remaining space is divided equally between all separators. | |
157 .El | |
158 .Pp | |
159 Default: %k%s%l,%b%s%m|%h | |
160 .It Ar scrollbar-width | |
161 Width of scrollbar in pixels. | |
162 Default: 10 | |
163 .It Ar scrollbar-step | |
164 Number of pixels scrolled with each scroll event. | |
165 Default: 20 | |
166 .It Ar scrollbar-bg | |
167 Background color of scrollbar. | |
168 Default: #CCCCCC | |
169 .It Ar scrollbar-fg | |
170 Color of scrollbar handle. | |
171 Default: #000000 | |
172 .It Ar highlight-search | |
173 Whether entire words should be highlighted when searching or replacing w… | |
174 Note that the mode is automatically switched to visual when this is set … | |
175 This is a bit weird, but in order to keep everything a bit more consiste… | |
176 only allowed in visual mode. | |
177 Default: false | |
178 .It Ar extra-line-spacing | |
179 Extra space between each line (in pixels). | |
180 Note that this is very rudimentary at the moment. | |
181 In particular, selections covering multiple lines do not highlight the e… | |
182 Default: 0 | |
183 .El | |
184 .Sh BINDINGS | |
185 The key bindings may be configured by assigning | |
186 .Ar bindings | |
187 to a list of the following assignments. | |
188 .Bl -tag -width Ds | |
189 .It Ar language | |
190 .Pp | |
191 This is the language string for the key layout, as given by XKB. | |
192 .It Ar basic-keys | |
193 .Pp | |
194 This is a list of statements of the form | |
195 .Pp | |
196 .Sy bind | |
197 .Aq func_name | |
198 .Op Sy keysym Aq keysym | |
199 .Op Sy text Aq text | |
200 .Op Sy catchall | |
201 .Op Sy modes Aq modes | |
202 .Op Sy mods Aq mods | |
203 .Pp | |
204 .Sy keysym | |
205 is the symbolic description for a key, | |
206 .Sy text | |
207 is the text corresponding to a key. | |
208 .Sy catchall | |
209 is a catchall for any key which can for instance be used to insert text. | |
210 Note that a key binding containing | |
211 .Sy catchall | |
212 should always be at the end of the list so it does not prevent | |
213 any other key bindings from being used. | |
214 .Pp | |
215 Exactly one of | |
216 .Sy text , | |
217 .Sy keysym , | |
218 and | |
219 .Sy catchall | |
220 must be specified. | |
221 See | |
222 .Sx KEYSYMS | |
223 for a list of all currently supported keysyms. | |
224 .Pp | |
225 .Sy mods | |
226 specifies modifier keys. | |
227 The current options are | |
228 .Ar shift , | |
229 .Ar control , | |
230 .Ar mod1 , | |
231 .Ar mod3 , | |
232 .Ar mod4 , | |
233 .Ar mod5 , | |
234 and | |
235 .Ar any . | |
236 .Ar mod1 | |
237 is usually Alt, | |
238 .Ar mod4 | |
239 is usually the super key. | |
240 Note that | |
241 .Ar mod2 | |
242 and | |
243 .Ar lock | |
244 are missing because these are usually numlock and caps lock, respectivel… | |
245 which would mess up the key bindings because they would all need to opti… | |
246 include these. | |
247 This key handling is currently a bit of a mess because it isn't really c… | |
248 which modifier keys should be ignored and which shouldn't. | |
249 As an additional bit of weirdness, | |
250 .Ar control | |
251 is currently masked out before obtaining the text or symbolic name corre… | |
252 to a key because it can cause issues in certain cases (XKB tries to be | |
253 .Dq smart | |
254 and map some keys back to the default language, but that completely mess… | |
255 up all the key handling that | |
256 .Xr ledit 1 | |
257 does). | |
258 Oh, one more thing - for keys that are specified with text instead of a … | |
259 .Ar shift | |
260 is masked out of the current modifier state before checking if it matche… | |
261 configured state because it is usually included implicitly in the text. | |
262 Please let me know if you have any ideas how to make the key handling a … | |
263 .Pp | |
264 .Sy modes | |
265 specifies the allowed modes and can be a combination of | |
266 .Ar normal , | |
267 .Ar visual , | |
268 and | |
269 .Ar insert . | |
270 .Pp | |
271 Multiple mods or modes can be given by joining them with | |
272 .Sq | . | |
273 .Pp | |
274 .Aq func_name | |
275 may be one of the following functions. | |
276 The possible modes are listed beside the function names. | |
277 If | |
278 .Ar num | |
279 is listed beside the function name, this means that the function supports | |
280 key repetition (the number can be constructed with the | |
281 .Ar push | |
282 functions). | |
283 If | |
284 .Ar char | |
285 is listed beside the function name, this means that a character must be | |
286 typed immediately after calling the function (this is used e.g. to get a | |
287 character when setting a mark). | |
288 .Pp | |
289 Functions that overwrite the paste buffer usually only do that in normal | |
290 and visual mode. | |
291 It isn't entirely clear what the best behavior here would be. | |
292 .Bl -tag -width Ds | |
293 .It Ar append-after-cursor Op normal, visual, insert | |
294 Move the cursor after the current character and enter insert mode. | |
295 .It Ar append-after-eol Op normal, visual, insert | |
296 Move the cursor to the end of the current line and enter insert mode. | |
297 This function modifies its behavior in softline mode. | |
298 .It Ar append-line-above Op normal, visual, insert | |
299 Insert a line before the current line, move the cursor to it, and enter … | |
300 This function modifies its behavior in softline mode. | |
301 Note that even in softline mode, a hardline is inserted, but the | |
302 insertion position may be different. | |
303 This may not be entirely logical, but I'm not sure what would be more | |
304 logical. | |
305 .It Ar append-line-below Op normal, visual, insert | |
306 Insert a line after the current line, move the cursor to it, and enter i… | |
307 This function modifies its behavior in softline mode. | |
308 Note that even in softline mode, a hardline is inserted, but the | |
309 insertion position may be different. | |
310 This may not be entirely logical, but I'm not sure what would be more | |
311 logical. | |
312 .It Ar change Oo normal, visual, insert Oc Oo num Oc | |
313 In normal and insert mode, delete the text from the current | |
314 position until the position given by the next motion command | |
315 and enter insert mode (or just stay in insert mode). | |
316 In visual mode, delete the selected text and enter insert mode. | |
317 .Ar num | |
318 is used to influence the next motion command. | |
319 .Ar change | |
320 itself can also be used as the motion command, in which case the | |
321 given number of lines is deleted. | |
322 When that is the case, the behavior is modified in softline mode. | |
323 .It Ar change-to-eol Op normal | |
324 Delete the text from the current position until the end of the line | |
325 and enter insert mode. | |
326 This function modifies its behavior in softline mode. | |
327 .It Ar clipboard-copy Op normal, visual, insert | |
328 Copy the last text that was selected to the clipboard. | |
329 Note: Due to the way this is currently implemented, text can be copied | |
330 even if it isn't selected anymore, as long as nothing else has been | |
331 selected in the meantime. | |
332 I haven't decided yet if this is a feature or a bug. | |
333 .It Ar clipboard-paste Op normal, visual, insert | |
334 Paste the clipboard contents at the current position. | |
335 In visual mode, the current selection is first deleted. | |
336 Note: The selection deletion and clipboard insertion are currently | |
337 registered as two independent undo operations, so undo/redo will only | |
338 undo/redo one of them at a time. | |
339 This is a bug, but it is difficult to fix due to the bad design decisions | |
340 made during the development of | |
341 .Xr ledit 1 . | |
342 .It Ar cursor-down Oo normal, visual, insert Oc Oo num Oc | |
343 Move the cursor | |
344 .Ar num | |
345 lines down. | |
346 In visual mode, the selection is changed. | |
347 This function modifies its behavior in softline mode. | |
348 .It Ar cursor-left Oo normal, visual, insert Oc Oo num Oc | |
349 Move the cursor | |
350 .Ar num | |
351 positions to the left, but only on the same line. | |
352 In visual mode, the selection is changed. | |
353 Note that the movement is visual, i.e. it will actually move logically | |
354 forwards in right-to-left text. | |
355 .It Ar cursor-right Oo normal, visual, insert Oc Oo num Oc | |
356 Move the cursor | |
357 .Ar num | |
358 positions to the right, but only on the same line. | |
359 In visual mode, the selection is changed. | |
360 Note that the movement is visual, i.e. it will actually move logically | |
361 backwards in right-to-left text. | |
362 .It Ar cursor-to-beginning Op normal, visual, insert | |
363 Move the cursor to the beginning of the current line. | |
364 In visual mode, the selection is changed. | |
365 This function modifies its behavior in softline mode. | |
366 See also | |
367 .Ar key-0 | |
368 .It Ar cursor-to-first-non-whitespace Op normal, visual, insert | |
369 Move the cursor to the first non-whitespace character on the current lin… | |
370 In visual mode, the selection is changed. | |
371 This function modifies its behavior in softline mode. | |
372 .It Ar cursor-up Oo normal, visual, insert Oc Oo num Oc | |
373 Move the cursor | |
374 .Ar num | |
375 lines up. | |
376 In visual mode, the selection is changed. | |
377 This function modifies its behavior in softline mode. | |
378 .It Ar delete Oo normal, visual, insert Oc Oo num Oc | |
379 In normal or insert mode, delete the text from the current position | |
380 until the position given by the next motion command. | |
381 In visual mode, delete the selected text. | |
382 .Ar num | |
383 is used to influence the next motion command. | |
384 .Ar delete | |
385 itself can also be used as the motion command, in which case the | |
386 given number of lines is deleted. | |
387 When that is the case, the behavior is modified in softline mode. | |
388 .It Ar delete-chars-backwards Oo normal, insert Oc Oo num Oc | |
389 Delete | |
390 .Ar num | |
391 unicode characters before the cursor, but at most up to the | |
392 beginning of the current line. | |
393 .It Ar delete-chars-backwards-multiline Oo normal, insert Oc Oo num Oc | |
394 Delete | |
395 .Ar num | |
396 unicode characters before the cursor, possibly going onto | |
397 a previous line (the newline counts as one character). | |
398 .It Ar delete-chars-forwards Oo normal, insert Oc Oo num Oc | |
399 Delete | |
400 .Ar num | |
401 unicode characters after the cursor, but at most up to the | |
402 end of the current line. | |
403 .It Ar delete-chars-forwards-multiline Op normal, insert | |
404 Delete | |
405 .Ar num | |
406 unicode characters before the cursor, possibly going onto | |
407 another line (the newline counts as one character). | |
408 .It Ar delete-graphemes-backwards Oo normal, insert Oc Oo num Oc | |
409 Delete | |
410 .Ar num | |
411 unicode graphemes before the cursor, but at most up to the | |
412 beginning of the current line. | |
413 .It Ar delete-graphemes-backwards-multiline Oo normal, insert Oc Oo num … | |
414 Delete | |
415 .Ar num | |
416 unicode graphemes before the cursor, possibly going onto | |
417 a previous line (the newline counts as one grapheme). | |
418 .It Ar delete-graphemes-forwards Oo normal, insert Oc Oo num Oc | |
419 Delete | |
420 .Ar num | |
421 unicode graphemes after the cursor, but at most up to the | |
422 end of the current line. | |
423 .It Ar delete-graphemes-forwards-multiline Oo normal, insert Oc Oo num Oc | |
424 Delete | |
425 .Ar num | |
426 unicode graphemes after the cursor, possibly going onto | |
427 another line (the newline counts as one grapheme). | |
428 .It Ar delete-to-eol Op normal, insert | |
429 Delete everything from the current position to the end of the line. | |
430 This function modifies its behavior in softline mode. | |
431 .It Ar enter-commandedit Op normal, visual, insert | |
432 Open the line editor for typing commands. | |
433 In visual mode, the selection range is automatically pasted into the lin… | |
434 so commands can be performed on it. | |
435 .It Ar enter-insert Op normal, visual | |
436 Enter insert mode. | |
437 .It Ar enter-searchedit-backwards Op normal, insert, visual | |
438 Open the line editor for searching backwards. | |
439 Note that no regex is currently supported. | |
440 .It Ar enter-searchedit-forwards Op normal, insert, visual | |
441 Open the line editor for searching forwards. | |
442 Note that no regex is currently supported. | |
443 .It Ar enter-visual Op normal, insert | |
444 Enter visual mode. | |
445 .It Ar return-to-normal Op normal, visual, insert | |
446 Return to normal mode. | |
447 If already in normal mode, discard all stored previous keys | |
448 (e.g. key repetition). | |
449 .It Ar find-char-backwards Oo normal, visual, insert Oc Oo num Oc Oo cha… | |
450 Move cursor backward | |
451 .Ar num | |
452 times to the character given by | |
453 .Ar char . | |
454 Note that all the | |
455 .Ar find-* | |
456 functions are weird because the behavior changes slightly depending on t… | |
457 they are called in and whether they are used as a motion command for ano… | |
458 command like | |
459 .Ar delete . | |
460 This behavior is approximately copied from vi and/or vim. | |
461 .It Ar find-char-forwards Oo normal, visual, insert Oc Oo num Oc Oo char… | |
462 Move cursor forward | |
463 .Ar num | |
464 times to the character given by | |
465 .Ar char . | |
466 The caveat mentioned for | |
467 .Ar find-char-backwards | |
468 also applies. | |
469 .It Ar find-next-char-backwards Oo normal, visual, insert Oc Oo num Oc O… | |
470 Move cursor backward | |
471 .Ar num | |
472 times to the position after the character given by | |
473 .Ar char . | |
474 The caveat mentioned for | |
475 .Ar find-char-backwards | |
476 also applies. | |
477 .It Ar find-next-char-forwards Oo normal, visual, insert Oc Oo num Oc Oo… | |
478 Move cursor forward | |
479 .Ar num | |
480 times to the position before the character given by | |
481 .Ar char . | |
482 The caveat mentioned for | |
483 .Ar find-char-backwards | |
484 also applies. | |
485 .It Ar insert-at-beginning Op normal | |
486 Move cursor to the beginning of the line and enter insert mode. | |
487 This function changes its behavior in softline mode. | |
488 .It Ar insert-text Op insert | |
489 Insert the typed text at the current cursor position. | |
490 .It Ar join-lines Oo normal, insert Oc Oo num Oc | |
491 Join the current line with the next | |
492 .Ar num | |
493 lines. | |
494 Whitespace at the beginning of the joined lines is deleted, but it | |
495 is ensured that there is always at least a space between two joined | |
496 lines. | |
497 Note that this function always works on hard lines, regardless | |
498 of the current mode. | |
499 .It Ar jump-to-mark Oo normal, visual, insert Oc Oo char Oc | |
500 Jump to the mark given by | |
501 .Ar char . | |
502 In visual mode, the selection end is moved to the position of the mark. | |
503 .It Ar key-0 Op normal, visual, insert | |
504 This is a special function to handle the usual vi behavior of using | |
505 the key 0 both for moving to the beginning of the line and for adding | |
506 the digit 0 to the end of the current key repetition number. | |
507 If there was no previous key or the previous key expects a motion | |
508 command, | |
509 .Ar cursor-to-beginning | |
510 is called. | |
511 If the previous key was a number (i.e. one of the | |
512 .Ar push | |
513 commands), | |
514 .Ar push-0 | |
515 is called. | |
516 .It Ar insert-mark Oo normal, visual, insert Oc Oo char Oc | |
517 Insert a mark | |
518 .Ar char | |
519 with the current position. | |
520 .It Ar move-to-eol Op normal, visual, insert | |
521 Move to the end of the current line. | |
522 In visual mode, the selection end is moved as well. | |
523 This function modifies its behavior in softline mode. | |
524 .It Ar move-to-line Oo normal, visual, insert Oc Oo num Oc | |
525 Move to line number | |
526 .Ar num . | |
527 If | |
528 .Ar num | |
529 is not give, move to the last line in the buffer. | |
530 In visual mode, the selection end is moved as well. | |
531 .It Ar next-bigword Oo normal, visual, insert Oc Oo num Oc | |
532 Move forward | |
533 .Ar num | |
534 bigwords. | |
535 In visual mode, the selection is modified as well. | |
536 .It Ar next-bigword-end Oo normal, visual, insert Oc Oo num Oc | |
537 Move forward | |
538 .Ar num | |
539 end-of-bigwords. | |
540 In visual mode, the selection is modified as well. | |
541 .It Ar next-word Oo normal, visual, insert Oc Oo num Oc | |
542 Move forward | |
543 .Ar num | |
544 words. | |
545 In visual mode, the selection is modified as well. | |
546 .It Ar next-word-end Oo normal, visual, insert Oc Oo num Oc | |
547 Move forward | |
548 .Ar num | |
549 end-of-words. | |
550 In visual mode, the selection is modified as well. | |
551 .It Ar paste-buffer Op normal, insert | |
552 Paste text from the paste buffer after the current cursor position if th… | |
553 is character-based and after the current line if it is line-based. | |
554 Note that this does take into account the hard line/soft line mode, but … | |
555 a bit weirdly when in soft line mode - it inserts the text after the cur… | |
556 line but adds newlines on both sides. | |
557 This behavior may be changed in the future if it turns out there's a mor… | |
558 behavior for soft line mode. | |
559 .It Ar paste-buffer-backwards Op normal, insert | |
560 Paste text from the paste buffer before the current cursor position if t… | |
561 is character-based and before the current line if it is line-based. | |
562 The quirk for | |
563 .Ar paste-buffer | |
564 applies here as well. | |
565 .It Ar previous-bigword Oo normal, visual, insert Oc Oo num Oc | |
566 Move backward | |
567 .Ar num | |
568 bigwords. | |
569 In visual mode, the selection is modified as well. | |
570 .It Ar previous-word Oo normal, visual, insert Oc Oo num Oc | |
571 Move backward | |
572 .Ar num | |
573 words. | |
574 In visual mode, the selection is modified as well. | |
575 .It Ar push-0 Op normal, visual, insert | |
576 Add the digit 0 to the end of the current key repetition number. | |
577 See also | |
578 .Ar key-0 | |
579 .It Ar push-1 Op normal, visual, insert | |
580 Add the digit 1 to the end of the current key repetition number. | |
581 .It Ar push-2 Op normal, visual, insert | |
582 Add the digit 2 to the end of the current key repetition number. | |
583 .It Ar push-3 Op normal, visual, insert | |
584 Add the digit 3 to the end of the current key repetition number. | |
585 .It Ar push-4 Op normal, visual, insert | |
586 Add the digit 4 to the end of the current key repetition number. | |
587 .It Ar push-5 Op normal, visual, insert | |
588 Add the digit 5 to the end of the current key repetition number. | |
589 .It Ar push-6 Op normal, visual, insert | |
590 Add the digit 6 to the end of the current key repetition number. | |
591 .It Ar push-7 Op normal, visual, insert | |
592 Add the digit 7 to the end of the current key repetition number. | |
593 .It Ar push-8 Op normal, visual, insert | |
594 Add the digit 8 to the end of the current key repetition number. | |
595 .It Ar push-9 Op normal, visual, insert | |
596 Add the digit 9 to the end of the current key repetition number. | |
597 .It Ar redo Oo normal, insert Oc Oo num Oc | |
598 Redo | |
599 .Ar num | |
600 operations. | |
601 Note that this changes depending on the mode. | |
602 All operations performed in insert mode are considered as one | |
603 operation when performing redo in normal mode. | |
604 .It Ar repeat-command Oo normal Oc Oo num Oc | |
605 Repeat the previous command | |
606 .Ar num | |
607 times. | |
608 .Pp | |
609 !!!!!!!!!!!!! NOTE/FIXME: This is broken currently. | |
610 In vi, everything done during insert mode is considered to be one | |
611 operation, so it counts as one command when using repeat-command. | |
612 However, since a lot of commands here now work in insert mode as well, | |
613 that doesn't make much sense anymore. | |
614 Most of the commands discard the previous key information because that's | |
615 what should happen in normal mode, and it is not clear what the logical | |
616 action would be in insert mode. | |
617 .It Ar replace Oo normal Oc Oo char Oc | |
618 Replace the character under the cursor with | |
619 .Ar char . | |
620 .It Ar break-line Op normal, insert | |
621 Break the line at the current position, i.e. insert a newline character. | |
622 .It Ar screen-down Oo normal, insert Oc Oo num Oc | |
623 Scroll | |
624 .Ar num | |
625 screens down. | |
626 .It Ar screen-up Oo normal, insert Oc Oo num Oc | |
627 Scroll | |
628 .Ar num | |
629 screens up. | |
630 .It Ar scroll-lines-down Oo normal, insert Oc Oo num Oc | |
631 Move | |
632 .Ar num | |
633 lines down. | |
634 If | |
635 .Ar count | |
636 is not given, scroll down the number of lines specified by the last | |
637 .Ar screen-down | |
638 or | |
639 .Ar screen-up | |
640 command. | |
641 If this is the first such command, scroll down half a screen. | |
642 Note that this command works with soft lines, regardless of the current … | |
643 .It Ar scroll-lines-up Oo normal, insert Oc Oo num Oc | |
644 Move | |
645 .Ar num | |
646 lines up. | |
647 If | |
648 .Ar count | |
649 is not given, scroll up the number of lines specified by the last | |
650 .Ar screen-down | |
651 or | |
652 .Ar screen-up | |
653 command. | |
654 If this is the first such command, scroll up half a screen. | |
655 Note that this command works with soft lines, regardless of the current … | |
656 .It Ar scroll-with-cursor-down Oo normal, insert Oc Oo num Oc | |
657 Move | |
658 .Ar num | |
659 lines down, attempting to leave the cursor in its current line and chara… | |
660 Note that this command works with soft lines, regardless of the current … | |
661 .It Ar scroll-with-cursor-up Oo normal, insert Oc Oo num Oc | |
662 Move | |
663 .Ar num | |
664 lines up, attempting to leave the cursor in its current line and charact… | |
665 Note that this command works with soft lines, regardless of the current … | |
666 .It Ar search-next Op normal, insert, visual | |
667 Move to the next search result. | |
668 .It Ar search-previous Op normal, insert, visual | |
669 Move to the previous search result. | |
670 .It Ar show-line Op normal, visual, insert | |
671 Show the current file name, whether the buffer has been modified since t… | |
672 write, and current line number. | |
673 .It Ar switch-selection-end Op visual | |
674 Switch the end of the selection that can be moved. | |
675 .It Ar toggle-hard-line-based Op normal, visual, insert | |
676 Toggle the line mode between hardline and softline. | |
677 .It Ar uppercase Op normal, insert | |
678 .It Ar lowercase Op normal, insert | |
679 Replace the character at the current cursor position with the uppercase/… | |
680 If utf8proc support is not enabled, this will use the standard C library… | |
681 .Fn toupper | |
682 and | |
683 .Fn tolower , | |
684 so it will not work with most Unicode characters. | |
685 Note that even with utf8proc, it will not work in all cases because some… | |
686 more complex handling (e.g. characters that require multiple characters … | |
687 uppercase), which is not supported. | |
688 .It Ar undo Oo normal, insert Oc Oo num Oc | |
689 Undo | |
690 .Ar num | |
691 operations. | |
692 Note that this changes depending on the mode. | |
693 All operations performed in insert mode are considered as one | |
694 operation when performing undo in normal mode. | |
695 .It Ar yank Oo normal, visual, insert Oc Oo num Oc | |
696 In normal or insert mode, yank (copy to the paste buffer) the text from | |
697 the current position until the position given by the next motion command. | |
698 In visual mode, yank the selected text. | |
699 .Ar num | |
700 is used to influence the next motion command. | |
701 .Ar yank | |
702 itself can also be used as the motion command, in which case the | |
703 given number of lines is yanked. | |
704 When that is the case, the behavior is modified in softline mode. | |
705 .It Ar yank-lines Oo normal, insert Oc Oo num Oc | |
706 Yank (copy to the paste buffer) | |
707 .Ar num | |
708 lines. | |
709 This function modifies its behavior in softline mode. | |
710 .El | |
711 .Pp | |
712 Note: There are still a lot of weird parts when using functions in | |
713 modes that they weren't originally designed for (e.g. a lot of them | |
714 were only made for normal mode but now also work in insert mode). | |
715 The behavior is not set in stone yet and will probably still change | |
716 quite a bit based on any feedback I receive. | |
717 .It Ar command-keys | |
718 .Pp | |
719 This is the same as | |
720 .Ar basic-keys , | |
721 except that | |
722 .Sy modes | |
723 must be a combination of | |
724 .Ar substitute , | |
725 .Ar edit , | |
726 .Ar edit-search , | |
727 and | |
728 .Ar edit-search-backwards . | |
729 .Pp | |
730 .Ar substitute | |
731 is the mode while performing a substitution with confirmation. | |
732 .Ar edit | |
733 is the mode while typing a command in the line editor. | |
734 .Ar edit-search | |
735 is the mode while typing a forwards search in the line editor. | |
736 .Ar edit-search-backwards | |
737 is the mode while typing a backwards search in the line editor. | |
738 .Pp | |
739 The possible functions are given in the following list, with | |
740 the allowed modes listed beside each function. | |
741 .Bl -tag -width Ds | |
742 .It Ar edit-backspace Op edit, edit-search, edit-search-backwards | |
743 Delete one unicode character before the cursor. | |
744 .It Ar edit-cursor-left Op edit, edit-search, edit-search-backwards | |
745 Move the cursor one to the left. | |
746 .It Ar edit-cursor-right Op edit, edit-search, edit-search-backwards | |
747 Move the cursor one to the right. | |
748 .It Ar edit-cursor-to-beginning Op edit, edit-search, edit-search-backwa… | |
749 Move the cursor to the beginning of the line. | |
750 .It Ar edit-cursor-to-end Op edit, edit-search, edit-search-backwards | |
751 Move the cursor to the end of the line. | |
752 .It Ar edit-delete Op edit, edit-search, edit-search-backwards | |
753 Delete one unicode character after the cursor. | |
754 .It Ar edit-discard Op edit, edit-search, edit-search-backwards | |
755 Exit the line editor and cancel the search or command. | |
756 .It Ar edit-insert-text Op edit, edit-search, edit-search-backwards | |
757 Insert the typed text in the line editor at the current cursor position. | |
758 .It Ar edit-next-command Op edit | |
759 Move forwards through the command history. | |
760 .It Ar edit-next-search Op edit-search, edit-search-backwards | |
761 Move forwards through the search history. | |
762 .It Ar edit-previous-command Op edit | |
763 Move backwards through the command history. | |
764 .It Ar edit-previous-search Op edit-search, edit-search-backwards | |
765 Move backwards through the search history. | |
766 .It Ar edit-submit Op edit | |
767 Submit the command. | |
768 .It Ar edit-submit-backwards-search Op edit-search-backwards | |
769 Submit the search. | |
770 .It Ar edit-submit-search Op edit-search | |
771 Submit the search. | |
772 .It Ar substitute-no Op substitute | |
773 Reject the current substitution. | |
774 .It Ar substitute-no-all Op substitute | |
775 Reject the current substitution and all further ones. | |
776 .It Ar substitute-yes Op substitute | |
777 Confirm the current substitution. | |
778 .It Ar substitute-yes-all Op substitute | |
779 Confirm the current substitution and all further ones. | |
780 .El | |
781 .Pp | |
782 Note that the bindings for the substitution commands are also displayed | |
783 on screen during the substitution. | |
784 However, only the default English bindings are shown because anything | |
785 else would require work (and might look very weird if the mapping | |
786 includes characters like diacritics that can't be displayed properly | |
787 on their own). | |
788 .It Ar commands | |
789 .Pp | |
790 This is a list of statements of the form | |
791 .Pp | |
792 .Sy bind | |
793 .Aq func_name | |
794 .Aq text | |
795 .Pp | |
796 Note that the terminology is currently a bit inconsistent. | |
797 Sometimes, | |
798 .Dq commands | |
799 refers to the key commands, sometimes to the commands | |
800 written in the line editor, which are documented in this section. | |
801 .Pp | |
802 Also note that the commands which take filenames currently use the entir… | |
803 the line as the filename instead of doing any string parsing. | |
804 This may be changed in the future. | |
805 .Pp | |
806 The possible functions are given in the following list, together with | |
807 the calling convention when calling them with the configured bindings. | |
808 .Pp | |
809 .Bl -tag -width Ds -compact | |
810 .It Cm write | |
811 .It Xo | |
812 .Sm off | |
813 .Aq binding-text | |
814 .Op \&! | |
815 .Sm on | |
816 .Op Ar filename | |
817 .Xc | |
818 Write the buffer to | |
819 .Op Ar filename , | |
820 or, if no filename is given, to the file the buffer was read from. | |
821 If | |
822 .Sq \&! | |
823 is specified, the file will be attempted to be written to even if there | |
824 is something blocking it (e.g. the modified date of the file is newer | |
825 than it was when it was opened). | |
826 .Pp | |
827 .It Cm quit | |
828 .It Xo | |
829 .Sm off | |
830 .Aq binding-text | |
831 .Op \&! | |
832 .Sm on | |
833 .Xc | |
834 Quit. | |
835 If | |
836 .Sq \&! | |
837 is specified, quit even when there are unsaved changes. | |
838 .Pp | |
839 .It Cm write-quit | |
840 .It Xo | |
841 .Sm off | |
842 .Aq binding-text | |
843 .Op \&! | |
844 .Sm on | |
845 .Op Ar filename | |
846 .Xc | |
847 Write and quit afterwards. | |
848 The | |
849 .Sq \&! | |
850 is interpreted as for normal writing. | |
851 .Pp | |
852 .It Cm substitute | |
853 .It Xo | |
854 .Sm off | |
855 .Op Ar range | |
856 .Aq binding-text | |
857 .Cm / Ar pattern Cm / Ar replace Cm / | |
858 .Op Ar options | |
859 .Sm on | |
860 .Xc | |
861 Substitute | |
862 .Ar pattern | |
863 with | |
864 .Ar replace | |
865 in the given line range. | |
866 .Pp | |
867 Instead of | |
868 .Sq / , | |
869 any other unicode character may be used. | |
870 The first unicode character after | |
871 .Aq binding-text | |
872 is used as the delimiter. | |
873 .Pp | |
874 If no range is given, substitution is only performed on the current line. | |
875 Note that no regex is currently supported. | |
876 .Pp | |
877 The range consists of two line numbers separated by a comma or the speci… | |
878 .Sq % , | |
879 which refers to the entire file. | |
880 The following special values are possible instead of writing a line numb… | |
881 .Bl -tag -width Ds | |
882 .It Cm $ | |
883 The last line in the file. | |
884 .It Xo | |
885 .Sm off | |
886 .Cm ' Aq Cm mark | |
887 .Sm on | |
888 .Xc | |
889 The line of the previously set mark | |
890 .Aq Cm mark . | |
891 Note that even though marks can theoretically be any string of character… | |
892 they are only allowed to be one unicode character if they are used in a … | |
893 The special values | |
894 .Cm < | |
895 and | |
896 .Cm > | |
897 are possible, which refer to the first and last line, respectively, in t… | |
898 current selection. | |
899 .It Cm \&. | |
900 The current line. | |
901 .El | |
902 .Pp | |
903 The | |
904 .Ar options | |
905 may be a combination of the following: | |
906 .Bl -tag -width Ds | |
907 .It Cm g | |
908 Perform substitution for all occurrences in the given lines instead of j… | |
909 the first one on each line. | |
910 .It Cm c | |
911 Confirm each substitution before performing it. | |
912 .El | |
913 .Pp | |
914 .It Cm create-view | |
915 .It Aq binding-text | |
916 Open a new view. | |
917 Each view is a window that shows the text in the current buffer, | |
918 which is synced between the views. | |
919 .It Cm close-view | |
920 .It Xo | |
921 .Sm off | |
922 .Aq binding-text | |
923 .Op \&! | |
924 .Sm on | |
925 .Xc | |
926 Close a view. | |
927 If | |
928 .Sq \&! | |
929 is given, close the view even it is the last one and there are unsaved c… | |
930 .El | |
931 .El | |
932 .Pp | |
933 If the | |
934 .Ar bindings | |
935 configuration or any part of it is left out, the | |
936 default is used. | |
937 There are some more specific rules, but I'm too lazy to explain them rig… | |
938 It is actually possible to overwrite just the default language without | |
939 changing the bindings, but why would you want to do that? | |
940 .Sh LANGUAGE MAPPINGS | |
941 A language mapping defines a mapping for the text associated with each | |
942 key or command so the bindings still work with other keyboard layouts. | |
943 Language mappings may be defined by assigning | |
944 .Ar language-mapping | |
945 to a list of the following assignments, once for each language. | |
946 Note that any definition of | |
947 .Ar language-mapping | |
948 must come after | |
949 .Ar bindings . | |
950 .Bl -tag -width Ds | |
951 .It Ar language | |
952 .Pp | |
953 This is the language string for the key layout, as in | |
954 .Ar bindings . | |
955 .It Ar key-mapping | |
956 .Pp | |
957 This is a list of statements of the form | |
958 .Pp | |
959 .Sy map | |
960 .Aq foreign | |
961 .Aq native | |
962 .Pp | |
963 where | |
964 .Aq foreign | |
965 is the key text in the new language mapping and | |
966 .Aq native | |
967 is the key text given in | |
968 .Ar bindings . | |
969 .It Ar command-mapping | |
970 .Pp | |
971 This is the same as | |
972 .Ar key-mapping , | |
973 but for the commands. | |
974 Note that only the commands themselves are mapped, but the arguments are… | |
975 I don't think it makes much sense to try to map those as well - really t… | |
976 reason for mapping commands is so that it is possible to save and quit w… | |
977 different keyboard layout. | |
978 If someone has a good idea for making other commands properly usable wit… | |
979 keyboard mappings, I might consider it, though. | |
980 .El | |
981 .Sh KEYSYMS | |
982 These are the currently supported keysyms. | |
983 I don't know what a lot of these are supposed to be, they were just | |
984 copied from the list in the X header files. | |
985 Let me know if there are any others I should add. | |
986 .Bl -tag -width Ds | |
987 .It Ar General keys | |
988 .Pp | |
989 .Ar backspace | |
990 .Ar begin | |
991 .Ar break | |
992 .Ar cancel | |
993 .Ar clear | |
994 .Ar delete | |
995 .Ar down | |
996 .Ar end | |
997 .Ar escape | |
998 .Ar execute | |
999 .Ar find | |
1000 .Ar help | |
1001 .Ar home | |
1002 .Ar insert | |
1003 .Ar left | |
1004 .Ar linefeed | |
1005 .Ar menu | |
1006 .Ar mode-switch | |
1007 .Ar next | |
1008 .Ar num-lock | |
1009 .Ar page-down | |
1010 .Ar page-up | |
1011 .Ar pause | |
1012 .Ar print | |
1013 .Ar prior | |
1014 .Ar redo | |
1015 .Ar return | |
1016 .Ar right | |
1017 .Ar script-switch | |
1018 .Ar scroll-lock | |
1019 .Ar select | |
1020 .Ar space | |
1021 .Ar sysreq | |
1022 .Ar tab | |
1023 .Ar up | |
1024 .Ar undo | |
1025 .It Ar Function keys | |
1026 .Pp | |
1027 .Ar f1 | |
1028 .Ar f2 | |
1029 .Ar f3 | |
1030 .Ar f4 | |
1031 .Ar f5 | |
1032 .Ar f6 | |
1033 .Ar f7 | |
1034 .Ar f8 | |
1035 .Ar f9 | |
1036 .Ar f10 | |
1037 .Ar f11 | |
1038 .Ar f12 | |
1039 .Ar f13 | |
1040 .Ar f14 | |
1041 .Ar f15 | |
1042 .Ar f16 | |
1043 .Ar f17 | |
1044 .Ar f18 | |
1045 .Ar f19 | |
1046 .Ar f20 | |
1047 .Ar f21 | |
1048 .Ar f22 | |
1049 .Ar f23 | |
1050 .Ar f24 | |
1051 .Ar f25 | |
1052 .Ar f26 | |
1053 .Ar f27 | |
1054 .Ar f28 | |
1055 .Ar f29 | |
1056 .Ar f30 | |
1057 .Ar f31 | |
1058 .Ar f32 | |
1059 .Ar f33 | |
1060 .Ar f34 | |
1061 .Ar f35 | |
1062 .It Ar Keypad keys | |
1063 .Pp | |
1064 .Ar kp-0 | |
1065 .Ar kp-1 | |
1066 .Ar kp-2 | |
1067 .Ar kp-3 | |
1068 .Ar kp-4 | |
1069 .Ar kp-5 | |
1070 .Ar kp-6 | |
1071 .Ar kp-7 | |
1072 .Ar kp-8 | |
1073 .Ar kp-9 | |
1074 .Ar kp-add | |
1075 .Ar kp-begin | |
1076 .Ar kp-decimal | |
1077 .Ar kp-delete | |
1078 .Ar kp-divide | |
1079 .Ar kp-down | |
1080 .Ar kp-end | |
1081 .Ar kp-enter | |
1082 .Ar kp-equal | |
1083 .Ar kp-f1 | |
1084 .Ar kp-f2 | |
1085 .Ar kp-f3 | |
1086 .Ar kp-f4 | |
1087 .Ar kp-home | |
1088 .Ar kp-insert | |
1089 .Ar kp-left | |
1090 .Ar kp-multiply | |
1091 .Ar kp-next | |
1092 .Ar kp-page-down | |
1093 .Ar kp-page-up | |
1094 .Ar kp-prior | |
1095 .Ar kp-right | |
1096 .Ar kp-separator | |
1097 .Ar kp-space | |
1098 .Ar kp-subtract | |
1099 .Ar kp-tab | |
1100 .Ar kp-up | |
1101 .It Ar Weird keys that I don't know | |
1102 .Pp | |
1103 .Ar l1 | |
1104 .Ar l2 | |
1105 .Ar l3 | |
1106 .Ar l4 | |
1107 .Ar l5 | |
1108 .Ar l6 | |
1109 .Ar l7 | |
1110 .Ar l8 | |
1111 .Ar l9 | |
1112 .Ar l10 | |
1113 .Ar r1 | |
1114 .Ar r2 | |
1115 .Ar r3 | |
1116 .Ar r4 | |
1117 .Ar r5 | |
1118 .Ar r6 | |
1119 .Ar r7 | |
1120 .Ar r8 | |
1121 .Ar r9 | |
1122 .Ar r10 | |
1123 .Ar r11 | |
1124 .Ar r12 | |
1125 .Ar r13 | |
1126 .Ar r14 | |
1127 .Ar r15 | |
1128 .El | |
1129 .Sh EXAMPLES | |
1130 See the example configuration file | |
1131 .Pa leditrc.example . | |
1132 .Sh SEE ALSO | |
1133 .Xr ledit 1 | |
1134 .Sh AUTHORS | |
1135 .An lumidify Aq Mt [email protected] |