Introduction
Introduction Statistics Contact Development Disclaimer Help
gramscii.1 - gramscii - A simple editor for ASCII box-and-arrow charts
Log
Files
Refs
Tags
README
LICENSE
---
gramscii.1 (16676B)
---
1 .TH GRAMSCII 1 "28/09/2019" "" ""
2 .SH NAME
3 gramscii \- simple editor for ASCII box diagrams
4 .SH SYNOPSIS
5 .PP
6 gramscii
7 .RI [-s]
8 .RI [-h]
9 .RI [file ...]
10 .PP
11 .SH DESCRIPTION
12 .PP
13 gramscii is a simple interactive editor to create ASCII box-and-arrows
14 diagrams. It uses vi-like keybindings for drawing and editing boxes
15 (rectangles, palallelograms, trapezia, triangles), arrows, and text.
16 .PP
17 .SH OPTIONS
18 .TP 5m
19 .BI -s
20 Start gramscii in script-mode. In this mode the screen is set to 25 rows
21 by 80 columns, no status bar is present, drawings and cursor movements
22 are not shown, and the state of the screen is dumped to stdout when the
23 program ends. With this flag, gramscii can be used in a pipeline,
24 getting commands from stdin (or from a file) and making its output
25 available for further processing.
26 .TP
27 .BI -h
28 Print short usage unstructions and exit.
29 .PP
30 If one or more files are provided after the last option, gramscii will
31 consider them command files and will read them one after the other
32 (i.e., as if the characters in the file were typed while gramscii was
33 running), before accepting commands from stdin. This allows to use
34 gramscii scripts. For instance, if you start gramscii as:
35 .EX
36
37 gramscii file.txt
38
39 .EE
40 and "file.txt" contains the lines:
41 .EX
42
43 gg10lbLLJJb
44 gg10l15jbLLJJ
45
46 .EE
47 then gramscii will show two boxes and then will start accepting
48 commands as usual.
49 .SH COMMANDS
50 gramscii is a visual modal editor. Commands are associated to
51 keystrokes, and keystrokes have different meaning in different modes.
52 The default mode is
53 .B move
54 mode, which allows the user to move the cursor around the screen.
55 Exiting from any other mode (either via pressing
56 .B [ESC]
57 or by toggling the current mode) automatically puts gramscii in
58 .B move
59 mode. There are four classes of commands in gramscii, namely
60 .B GENERAL,
61 .B MOVEMENTS,
62 .B MODES,
63 and
64 .B STYLES.
65 Each of those classes of commands is described in a separate subsection
66 below.
67 .SS GENERAL
68 General commands available in
69 .B move
70 mode:
71 .TP 5m
72 .BI C
73 Crop chart to the largest non-blank region. The first line and the first
74 column of the cropped chart will contain the first non-blank line and
75 the first non-blank column of the original chart, respectively.
76 .TP 5m
77 .BI e
78 Load (edit) an existing file from disk. gramscii asks the user if they
79 want to save the current screen (only if the screen has been modified
80 since the
81 last
82 .BI w
83 command).
84 .TP 5m
85 .BI E
86 Load (edit) an existing file from disk, discarding any change to the
87 current screen.
88 .TP 5m
89 .BI M a
90 Mark (label) the current cursor position as 'a'. The label 'a' must be
91 one of the 26 ASCII alphabetic characters. The cursor can be moved to a
92 previously marked position using the global positioning command
93 .B g
94 (see below). Position marks are case-insensitive, meaning that both
95 .I 'c'
96 and
97 .I 'C'
98 indicate the same mark.
99 .TP 5m
100 .BI N
101 Start a new empty screen. If the current screen has been modified since
102 the last
103 .BI w
104 command, gramscii will ask the user if they want to save the current
105 screen before creating a new one.
106 .TP 5m
107 .BI p
108 Paste the content of the yank buffer at the cursor position. The yank
109 buffer contains the rectangle yanked/cut in
110 .B visual
111 mode.
112 .TP 5m
113 .BI q
114 Quit gramscii, and prompt for a filename if the current screen contains
115 unsaved changes.
116 .TP 5m
117 .BI Q
118 Quit gramscii and discard any change to the current screen.
119 .TP 5m
120 .BI r
121 Read a file at the current cursor position. gramscii will prompt for the
122 name of the file to read. If the first non-blank character of the name
123 given is a '!', gramscii will run the command specified after '!' in a
124 shell, and will import its standard output.
125 .TP 5m
126 .BI R
127 Redraw the screen
128 .TP 5m
129 .BI u
130 Undo the last change. gramscii supports an undo history of indefinite
131 length. The command
132 .BI u
133 gets the last change from the history, and moves the history pointer
134 back by one change. See the related command
135 .BI U
136 below.
137 .TP 5m
138 .BI U
139 Redo, i.e., cancel a previous
140 .BI u
141 command. gramscii supports an undo history of indefinite length. The
142 command
143 .BI U
144 moves to the following change, if possible. For instance, the sequence
145 .BI uuU
146 will go back two changes, and then forward one, effectively resetting
147 the state of the screen to what it was before the last change occurred.
148 .TP 5m
149 .BI w
150 Write the current screen to a file. If the current screen has already
151 been associated to a file, use the same filename. Otherwise, the user is
152 prompted for a filename to save the screen to.
153 .TP 5m
154 .BI W
155 Write the current screen to a new file. This commands acts like
156 .B w
157 but always prompts for a file name to use.
158 .TP 5m
159 .BI #
160 Start a comment. Discard all the characters until a newline is
161 entered. Useful to include comments in scripts.
162
163 .SS MOVEMENTS
164 The following movement commands are available in any mode where cursor
165 movements are meaningful, currently only
166 .B move, box, arrow, parallelogram, trapezium, erase,
167 and
168 .B visual
169 (see
170 .B MODES
171 below).
172 .TP 5m
173 .BI h
174 move the cursor to the left by 1 column
175 .TP 5m
176 .BI j
177 move the cursor down by 1 row
178 .TP 5m
179 .BI k
180 move the cursor up by 1 row
181 .TP 5m
182 .BI l
183 move the cursor right by 1 column
184 .PP
185 gramscii accepts also the uppercase commands
186 .B H, J, K, L,
187 which will move in the corresponding direction by a LONG_STEP number of
188 units at a time (defaults to 5, change LONG_STEP in config.h as you
189 wish).
190 .TP 5m
191 .BI g
192 Initiate a global positioning command (go). These are two- or
193 three-letter commands starting with a
194 .BI g
195 and followed by a direction command, or by a character that indicates a
196 global position, or by a valid position mark previously defined with
197 .B M
198 and preceded by a single quote. In particular:
199 .RS
200 .TP 5m
201 .BI h
202 move the cursor to the first column of the current row.
203 .TP 5m
204 .BI l
205 move the cursos to the last column of the current row.
206 .TP 5m
207 .BI j
208 move the cursor to the last row of the current column.
209 .TP 5m
210 .BI k
211 move the cursos to the first row of the current column.
212 .TP 5m
213 .BI g
214 move the cursor to the top-left corner of the screen
215 .TP 5m
216 .BI G
217 move the cursor to the bottom-right corner of the screen
218 .TP 5m
219 .BI m
220 move the cursor to the middle of the screen.
221 .TP 5m
222 .BI 'a
223 (single-quote followed by a character) move the cursor to the position
224 previously marked (labelled) with character
225 .BI 'a'
226 by the command
227 .B M
228 (mark). The character 'a' must be one of the 26 ASCII alphabetic
229 characters. Notice that position marks are case-insensitive, so the two
230 commands:
231 .B g'b
232 and
233 .B g'B
234 move the cursor to the position mark associated to the letter 'b', if it
235 exists.
236 .PP
237 If you want to move the cursor to the first row of the current
238 column, you could use the two-letter command
239 .B gk
240 (which can be read as "go-up"). Similarly, the command
241 .B gh
242 (to be read "go-left"), will move the cursor to the first column of the
243 current line. Notice that the command
244 .B gg
245 is effectively equivalent to the sequence
246 .B ghgk
247 (or
248 .B gkgh
249 ) while the command
250 .B gG
251 is equivalent to
252 .B glgj
253 (or
254 .B gjgl
255 ).
256 .PP
257 Global positioning commands are available in
258 .B box, arrow, visual, parallelogram, trapezium,
259 and
260 .B erase
261 mode. Notice that
262 .B gg, gG, gm
263 and moves to position marks like
264 .B g'b,
265 are not available in
266 .B arrow
267 mode.
268 .PP
269 Typing
270 .BI g
271 followed by any character that is not listed above has no effect on the
272 cursor.
273 .SS MULTIPLIERS
274 Simple cursor movement commands (hjklHJKL) can be preceded by a number
275 that acts as a multiplier. For instance, the command:
276 .PP
277 .RS
278 14h
279 .PP
280 .RE
281 will move the cursor by 14 steps to the left. Similarily, the command:
282 .PP
283 .RS
284 7J
285 .PP
286 .RE
287 will move the cursor by 7 LONG_STEPs rows down (with the default
288 LONG_STEP equal to 5, this will correspond to 35 rows down).
289 .PP
290 Multipliers can be used whenever a movement command is legal, i.e. in
291 move, box, arrox, parallelogram, trapezium, visual, and erase mode. So
292 for instance the sequence:
293 .RS
294 ggb13l18jb
295 .PP
296 .RE
297 will draw a 18x13 box whose top-left corner coincides with the top-left
298 corner of the screen.
299 .PP
300 Multipliers are ignored by global positioning commands (i.e., those
301 starting with
302 .B g)
303 .SS MODES
304 The currently supported modes are:
305 .B move,
306 .B box,
307 .B parallelogram,
308 .B trapezium,
309 .B arrow,
310 .B erase,
311 .B text,
312 and
313 .B visual.
314 The current mode is shown in the
315 status bar (see
316 .B STATUS BAR
317 below for more details). gramscii starts in
318 .B move
319 mode (mov). The following commands are used to change mode:
320 .TP 7m
321 .BI [ESC]
322 Return to
323 .B move
324 mode.
325 .TP 7m
326 .BI b
327 Toggle
328 .B box
329 mode. All movements in
330 .B box
331 mode identify a rectangular box (see
332 .B
333 MOVEMENTS
334 above). When you are happy with the shape of your box, just press
335 .B b
336 again or
337 .B [ENTER]
338 to draw the current box permanently and return to
339 .B move
340 mode. The horizontal and vertical borders of the box are drawn using
341 the current
342 .B HL
343 style and the current
344 .B VL
345 style, respectively. The corners are drawn using the current
346 .B CN
347 style, See
348 .B STYLES
349 below for more information. If you press
350 .B [ESC]
351 while in box mode, gramscii will return to
352 .B move
353 mode discarding the current box.
354 .TP 7m
355 .BI z
356 Toggle
357 .B parallelogram
358 mode. All moves in
359 .B parallelogram
360 mode identify the bounding box of a parallelogram (see
361 .B MOVEMENTS
362 above). By default the parallelogram leans to the right. Pressing
363 .B Z
364 while in parallelogram mode toggles the direction towards which the
365 parallelogram leans. Press
366 .BI z
367 again or
368 .B [ENTER]
369 to draw the current parallelogram and return to
370 .B move
371 mode. If you press
372 .B [ESC]
373 while in parallelogram mode, the current parallelogram will be discarded
374 and gramscii will return to
375 .B move
376 mode.
377 .TP 7m
378 .BI t
379 Toggle
380 .B trapezium
381 mode. All moves in
382 .B trapezium
383 mode identify the bounding box of a trapezium (see
384 .B MOVEMENTS
385 above). A trapezium with a short horizontal side of length zero is a
386 triangle, and gramscii knows that. By default, the trapezium is
387 isosceles, with the short side up.
388 Pressing
389 .B T
390 while in trapezium mode toggles the type and orientation of the
391 trapezium. Press
392 .BI t
393 again or
394 .B [ENTER]
395 to draw the current trapezium and return to
396 .B move
397 mode. If you press
398 .B [ESC]
399 while in trapezium mode, the current trapezium will be discarded
400 and gramscii will return to
401 .B move
402 mode.
403 .TP 7m
404 .BI a
405 Toggle
406 .B arrow
407 mode. All movements in
408 .B arrow
409 mode change the position of the end-point of the current arrow. Press
410 .BI a
411 again or
412 .B [ENTER]
413 to draw the current arrow and return to
414 .B move
415 mode. If you press
416 .B [ESC]
417 while in arrow mode, gramscii will return to
418 .B move
419 mode discarding the current arrow. The horizontal and vertical segments
420 of the arrow are drawn using the current
421 .B HL
422 and
423 .B VL
424 line styles. Corners are drawn using the current
425 .B CN
426 style. Similarly, the start and the end point of the arrow are drawn
427 using the current
428 .B SP
429 and
430 .B EP
431 styles. See
432 .B STYLES
433 below for more information.
434 .TP 7m
435 .BI A
436 Exactly as
437 .BI a
438 toggles
439 .B arrow
440 mode, but the end point marker is automatically set according to the
441 direction of the arrow.
442 .TP 7m
443 .BI x
444 Toggle
445 .B erase
446 mode. In erase mode, any character traversed by the cursor is erased,
447 i.e., reset to the default background character (space). If you press
448 .BI [ESC]
449 while in
450 .BI erase
451 mode, the current erase operation is aborted. Press
452 .B x
453 again or
454 .B [ENTER]
455 to make the erase permanent and return to
456 .B move
457 mode.
458 .TP 7m
459 .BI i
460 Enter
461 .B text
462 mode. While in text mode, each character typed is printed on the screen
463 at the corresponding location, and the cursor is advanced by a single
464 position to the right. Movement modes are not allowed while in
465 .B text
466 mode. By pressing
467 .B [ENTER]
468 the cursor is placed on the following row (if possible), at the same
469 column where the cursor was when the command
470 .BI i
471 was typed. Press
472 .B [ESC]
473 to exit
474 .B text
475 mode and return to
476 .B move
477 mode.
478 .TP 7m
479 .BI v
480 Toggle
481 .B visual
482 mode. Visual mode allows to highlight a rectangular region of the
483 screen, and to perform an operation into it. After entering
484 .B visual
485 mode, you can use
486 .B MOVEMENTS
487 commands to highlight a rectangle. Then, you can use one of the
488 following command on the highlighted region:
489 .RS
490 .TP 5m
491 .BI y
492 Yank (copy) the highlighted rectangle to the yank buffer. The content of
493 the yank buffer can be retrieved by using the
494 .B p
495 command while in
496 .B move
497 mode. The yank buffer is overwritten by subsequent yank/cut commands.
498 .TP 5m
499 .BI x
500 Cut region. The content of the highlighted rectangle will be put in the
501 yank buffer and all the characters in the region are set to the default
502 background character (space). The yank buffer is overwritten by
503 subsequent yank/cut commands.
504 .TP 5m
505 .BI f
506 Fill region. gramscii will wait for a character on input and then will
507 fill the highlighted region with that character.
508 .TP 5m
509 .BI C
510 Crop-to-region. Crop the chart to the content of the highlighted region.
511 Everything else in the screen is erased.
512 .TP 5m
513 .BI v
514 leave
515 .B visual
516 mode and return to
517 .B move
518 mode.
519 .TP 5m
520 .BI [ENTER]
521 same as
522 .BI v,
523 i.e., leave
524 .B visual
525 mode and return to
526 .B move
527 mode.
528 .TP 5m
529 .BI [ESC]
530 same as
531 .BI v,
532 i.e., leave
533 .B visual
534 mode and return to
535 .B move
536 mode.
537 .RE
538
539 .SS STYLES
540 The style of lines, corners and markers can be changed at any time while
541 in
542 .B move,
543 .B box,
544 and
545 .B arrow
546 mode. Some caveats apply to parallelogram and trapezium mode though (see
547 BUGS). The following style commands are available:
548 .TP 5m
549 .B .
550 (dot) Reset all styles to their default values.
551 .TP 5m
552 .BI -
553 (dash) Change the style used for horizontal lines. Indicated in the
554 .B STATUS BAR
555 as "HL". Default is '-'.
556 .TP 5m
557 .BI |
558 (pipe) Change the style used for vertical lines. Indicated in the
559 .B STATUS BAR
560 as "VL". Default is '|'.
561 .TP 5m
562 .BI +
563 (plus) Change the style used for corners (i.e., intersections between
564 horizontal and vertical lines). Indicated in the
565 .B STATUS BAR
566 as "CN". Default is '+'.
567 .TP 5m
568 .BI <
569 (less-than) Change the style used for arrow start points. Indicated in
570 the
571 .B STATUS BAR
572 as "SP". Default is '+'.
573 .TP 5m
574 .BI >
575 (greater-than) Change the style used for arrow end points. Indicated in
576 the
577 .B STATUS BAR
578 as "EP". Default is '>'.
579 .PP
580 If a style command is issued in
581 .B box
582 or
583 .B arrow
584 mode, the new style will be applied to the box/arrow that is currently b…
585 drawn, and will remain active until the next style command is used.
586
587 .SH STATUS BAR
588 Unless script-mode has been requested using option
589 .RI -s,
590 gramscii shows a status bar on the last line of the screen. The bar
591 reports information about the current screen, and in particular:
592 .RS
593 .TP 10m
594 x:XXX
595 Current column position of the cursor (the leftmost column is 0).
596 .TP 10m
597 y:YYY
598 Current row position of the cursor (top is 0).
599 .TP 10m
600 MODE: xxx
601 Current mode. It is one of
602 .B mov
603 (move),
604 .B box
605 (box),
606 .B par
607 (parallelogram),
608 .B trp
609 (trapezium),
610 .B arr
611 (arrow),
612 .B txt
613 (text),
614 .B del
615 (erase), or
616 .B vis
617 (visual).
618 .TP 10m
619 HL:x
620 Style used for horizontal lines.
621 .TP 10m
622 VL:x
623 Style used for vertical lines.
624 .TP 10m
625 CN:x
626 Style used for corners.
627 .TP 10m
628 SP:x
629 Style used for arrow starting points.
630 .TP 10m
631 EP:x
632 Style used for arrow end points.
633 .RE
634 .PP
635 The rightmost side of the status bar also reports the name of the file
636 associated to the current screen:
637 .RS
638 .TP 12m
639 []
640 No file is associated to the current screen, and no changes have been
641 made. The command
642 .B w
643 would prompt the user for the name of the file to save the screen to.
644 .TP 12m
645 **
646 The screen has been changed, but there is no file associated to it. The
647 command
648 .B w
649 would prompt the user for the name of the file to save the screen to.
650 .TP 12m
651 [filename]
652 The screen corresponds to the file "filename" and it has not been
653 modified since the last write on disk. The command
654 .B w
655 would automatically save the screen into "filename".
656 .TP 12m
657 *filename*
658 The screen is associated to the file "filename", but the current buffer
659 includes some changes that have not been saved to the disk. The command
660 .B w
661 would automatically save the screen into "filename".
662 .RE
663 .SH BUGS
664 gramscii currently manages only a fixed screen of the same size of the
665 screen where it starts from. This will be changed in a future release to
666 support scrolling and "virtual" screens of any (reasonable) size.
667 .PP
668 It is not currently possible to change the style of the oblique sides of
669 a parallelogram or of a trapezium.
670 .PP
671 The trapezium routine does not handle well the case of trapezia whose
672 height would yield a negative length for the small horizontal side.
673 Nevertheless, an exceptionally creative user might consider this a
674 feature, rather than a bug.
675 .SH AUTHORS
676 gramscii is written and maintained by Vincenzo "KatolaZ" Nicosia
677 <[email protected]>. You can use, copy, modify, and redistribute
678 gramscii under the terms of the GNU General Public License, version 3 of
679 the License or, at your option, any later version.
You are viewing proxied material from bitreich.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.