Introduction
Introduction Statistics Contact Development Disclaimer Help
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]
You are viewing proxied material from lumidify.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.