summaryrefslogtreecommitdiff
path: root/MANUAL.he
blob: 45e1d82594509d3bf2ef82bde6ba5396da7f5c8f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
$Id: MANUAL.he,v 1.15 2004/10/02 20:36:43 mooffie Exp $

גרש

עורך טקסט פשוט

גרסה 0.6.3

מדריך למשתמש

מופי <mooffie@typo.co.il>

גרסת HTML קלה לניווט של מדריך זה ניתן למצוא באתר של גרש:

<http://www.typo.co.il/~mooffie/geresh/>

תוכן העניינים
‾‾‾‾‾‾‾‾‾‾‾‾‾
- היכרות
- התפריט וקיצורי המקשים
- עזרה
- קידודים
   - קידוד המסוף
      - מסופי UTF-8
      - מסופי 8 ביט
      - תווי מסגרת גראפיים
   - קידוד הקבצים
      - טעינת קובץ
      - שמירת קובץ
      - אודות ICONV
      - מסקנות לגבי שמירה וטעינה של קבצים
      - שמות קבצים המכילים תווים שאינם ASCII
- נוהל שמירת קובץ
   - גיבוי
   - שמירת חירום בעת קבלת אירוע SIGHUP
- עוד על תווים
   - הזנת תווים שאינם נמצאים על המקלדת
   - מפות תווים
   - מידע על תווים
   - סופי שורות
- המסך
   - שורת הסטאטוס
   - שורת הדיאלוג
   - שפת הדיאלוג
- עריכת טקסט דו־כיווני
   - תווי פורמט של BiDi
   - ביטול זמני של אלגוריתם ה־BiDi
   - תנועת סמן לוגית ותנועת סמן ויזואלית
   - אלגוריתם לקביעת הכיווניות
- עברית
   - ניקוד עברי
   - מקף
   - התווים גרש, גרשיים ומרכאות
- ערבית
   - חיבור אותיות
   - ניקוד ערבי
- המלצה: גופן
- המלצה: גופן נוסף
- המלצה: תוכנת אמולצית מסוף
   - מספר מלים על konsole
- חרטה (undo)
- גלילה
   - פס הגלילה
- קיפול פסקאות (wrap)
- יישור אוטומטי
- בדיקת איות
   - עבודה עם המאיית
   - טעינה והסרה של המאיית
   - המאיית העברי hspell
- צביעה תחבירית
   - הדגשת *טקסט* ו_טקסט_
- ערכות צבעים
- תקשורת עם תוכנות אחרות
   - הפעלת עורך חיצוני
      - הפעלת עורך חיצוני: מידע נוסף
   - צינורות
      - ה־clipboard של X11
      - גרש כ־pager
   - הפקת פלט בעברית ויזואלית
      - קו תחתי בפלט הויזואלי
- הקובץ gereshrc

היכרות
‾‾‾‾‾‾
גרש הנו עורך טקסט רב־לשוני פשוט, עם תמיכה ב־Unicode, ב־BiDi וב־Arabic shaping, למסופי טקסט.

מוזר לדבר על תכנת מָסוֹף בשנת 2004 כאשר נדמה שכולם עברו להשתמש ביישומי GUI. למעשה, גם מוזר להשתמש במלה "עברו", כי כיום אנשים "נולדו" לתוך GUI ומעולם לא חוו את מסך הטקסט הפשוט. אבל למרות שתכנות מסוגו של גרש, תכנות מָסוֹף, אינן פופולריות, עדיין יש להן מקום, ובעיקר הודות לדרישות המערכת המועטות.

גרש לא בא להחליף את emacs או את vi, אך הוא מציע מספיק כדי לאפשר את ביצוען הנוח של מטלות עריכה פשוטות.

בכתיבת גרש ניסיתי לענות על צורכיהם של משתמשים מסוגים שונים: המשתמש האקראי הנזקק להקליד דואר בעברית, מתכנת הרוצה להוסיף פה ושם טקסט עברי לקוד מקור, ובלשן שאינו רוצה לוותר על הניקוד העברי.

גרש, למרות פשטותו, מתאים לעולם המודרני:

• גרש מאחסן את התווים בזיכרונו בייצוג יוניקוד UCS-4.

• גרש מנצל מסופי UTF-8, כמו xterm והקונסולה של לינוקס, להצגת מגוון רחב של תווים, כולל combining characters (תווי ניקוד) ותווים רחבים (אידאוגרפים אסיאניים).

• גרש משתמש בספריית FriBiDi כדי להשיג תאימות מלאה לתקן ה־BiDi של יוניקוד, וגרש אף תומך ב־Arabic shaping.

• גרש משתמש בפונקציות iconv, אם מימושן קיים במערכת, כדי לשמור ולטעון קבצים במגוון רחב של קידודים. גרש מסוגל לזהות אוטומטית קידודים מסוימים.

• גרש הנו עורך טקסט רב לשוני, אך יש בו כמה תכונות לטובת משתמשי העברית והערבית, כגון: יכולת להציג את סימני הניקוד העברי/ערבי (והמקף העברי) בצורה אלטרנטיבית, עריכה נוחה של תווי הפורמט של BiDi (כגון RLM, LRM), אלגוריתם אלטרנטיבי לקביעת כיווניות הפסקאות ואמולציה של מקלדת עברית.

• גרש יכול לתפקד כפילטר (filter) להמרת טקסט לוגי לויזואלי (בדומה ל־bidiv).

• גרש תומך במאייתים (spellers) של שפות שונות, כולל עברית.

• צביעה תחבירית של קובצי HTML

• undo/redo מקש למקש

• העתקה/גזירה/הדבקה

• ‏pipes

• תפריט

• צבעים

• ועוד

עם זאת, גרש פועל גם בסביבות פחות "מודרניות". למשל, הוא אינו מחייב תמיכה ב־UTF-8 locale.

התפריט וקיצורי המקשים
‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
ניתן לתת לגרש פקודות גם באמצעות התפריט וגם באמצעות קיצורי מקשים. למשל, אם נרצה לפתוח קובץ, נוכל לבחור בפקודת Open מתפריט File, אך נוכל גם ללחוץ F3. לצד כל פקודה בתפריט רשום קיצור המקשים המתאים לה.

אל התפריט ניתן לגשת באמצעות המקשים F9 או F10. גם ביטול התפריט נעשה באמצעות מקשים אלה (או בלחיצה כפולה על ESC).

בהמשך מדריך זה יצוינו בד"כ רק קיצורי המקשים של הפקודות ולא המסלול שלהן בתפריט, כי עיקר המדריך נכתב כשלגרש עדיין לא היה תפריט.

להלן פירוט הקיצורים השימושיים ביותר, מקובצים לפי קטגוריה. רוב הקיצורים הועתקו מעורכים נפוצים אחרים כדי להקל על זכירתם. אתה, כמובן, רשאי להתעלם מקיצורים אלה ולהשתמש אך ורק בתפריט.

Files
‾‾‾‾‾
F3		Load file / New file
M-r		Insert file
F2		Save file
C-s		Save file as
C-w		Write selection to file
C-M-c		Change directory

Movement
‾‾‾‾‾‾‾‾
left		Move depending on the paragraph direction
right		Move depending on the paragraph direction
C-b		One char backward
C-f		One char forward
M-v		Toggle between logical and visual cursor movement
up, C-p		Previous line
down, C-n	Next line
HOME, C-a	Beginning of line
END, C-e	End of line
PgUp		Previous page
PgDn		Next page
M-<		Beginning of buffer
M->		End of buffer
M-b		Word backward
M-f		Word forward
F7		Search forward
F17		Search next
C-g		Go to line #
C-o, M-o	Jump to the last modification point
M-c		Show/Hide cursor position
C-M-s		Change scroll step

Editing
‾‾‾‾‾‾‾
BACKSPACE	Delete previous char
DELETE		Delete char
M-h, F12	Toggle alternate (=Hebrew) keyboard
M-q		Toggle smart-typing mode
M-d		Delete word forward
M-BACKSPACE	Delete word backward
C-k		Cut [to] end of paragraph
C-y		Delete paragraph
M-J		Toggle auto-justify
C-M-j		Change justify column
C-j		Justify current or next paragraph
M-i		Toggle auto-indent
C-M-t		Change tab width
C-u		Undo
C-r		Redo
C-@, C-SPC	Mark block / Unmark block
C-c		Copy
C-x		Cut
C-v		Paste
C-q		Translate next char
C-M-v		Insert Unicode char
M-R		Toggle read-only status
C-M-e		Cycle through various end-of-line types

Spelling
‾‾‾‾‾‾‾‾
F5		Check spelling of whole document
F6		Check spelling of document, starting from word under cursor
M-$		Check spelling of word under the cursor
M-S		Explicitly load/unload the speller

Display‎
‾‾‾‾‾‾‾
M-t		Toggle the algorithm used to determine paragraph direction
M-1 ... M-5	ditto
C-M-b		Toggle the BiDi algorithm
M-w		Toggle wrap type
M-F		Toggle display of formatting marks
M-n		Toggle display of Hebrew points
M-k		Toggle maqaf display
M-a		Toggle Arabic shaping
C-l		Refresh screen and center line

Miscellaneous
‾‾‾‾‾‾‾‾‾‾‾‾‾
M-x		Quit editor
F1		Help
F4		Describe key
C-M-u		Show character code and UTF-8 sequence
C-M-i		Show character info from UnicodeData.txt

Help Window
‾‾‾‾‾‾‾‾‾‾‾
F1, M-x, 'q'	Exit help
ENTER		Follow link
't'		Move to Table of Contents
'l', M-b	Move back

Dialog Line
‾‾‾‾‾‾‾‾‾‾‾
TAB		Complete file name
M-TAB		Complete previous
up, C-p		Previous history
down, C-n	Next history
C-c, C-g	Cancel operation
ESC ESC		Cancel operation

Menu
‾‾‾‾
F9, F10		Call up (and cancel) the menu
C-c, C-g	Cancel the menu
ESC ESC		Cancel the menu

(גרש, נכון להיום, אינו מאפשר למשתמש הקצה לשנות את הקיצורים הללו. אם ברצונך לשנותם, ערוך את קובץ המקור bindings.cc והרץ שוב make.)

הערות:

1. M-x פירושו לחיצה על ALT ועל x בו־זמנית. לחלופין, אפשר להקיש ESC ואח"כ x (טיפ: אם מנהל החלונות שלך (FVWM, KDE וכד') לוכד את M-TAB (צירוף המשמש בגרש להשלמת שם קובץ), הקש ESC ואח"כ TAB).

2. M-f שונה מ־ M-F. הראשון הוא לחיצה על ALT ועל אות "f" קטנה, השני על ALT ועל אות "F" גדולה.

3. C-M-x פירושו לחיצה על Control ועל ALT ועל x בו־זמנית. לחלופין, אפשר להקיש ESC ואח"כ C-x (בשיטה חלופית זו יש להשתמש כאשר מנהל החלונות לוכד את צירוף המקשים המבוקש).

4. אם שפת המקלדת אינה אנגלית, קרוב לוודאי שגרש לא יגיב לצירופים ALT + אות אנגלית. זו אינה בעיה בגרש, אלא בצורה בה פועלת מקלדת המסוף: גרש לא יראה אות אנגלית, אלא אות בשפה בה נמצאת המקלדת. פתרון אחד הוא להשתמש במפת "המקלדת החלופית" של גרש במקום בשירותי XKB או במקום ב־loadkeys (ראה סעיף "הזנת תווים שאינם נמצאים על המקלדת"); פתרון אחר הוא לשנות את הגדרות המקלדת.

5. Fn, כאשר 23 > ‏n‏ > 10, וכאשר המקש אינו נמצא על המקלדת, פירושו לחיצה על F(n-10)‎ ועל CTRL (או על shift, תלוי במסוף) בו־זמנית.

עזרה
‾‾‾‾
גרש בא עם שני מקורות עזרה: המדריך למשתמש, בו אתה קורא כרגע, וכלי "תאר מקש", F4, המאפשר לך להקיש צירוף מקשים ולקבל עליו שורת הסבר. למעשה, ניתן לומר שגם התפריט על הפקודות המאורגנות בו הוא מקור עזרה.

קריאת המדריך למשתמש נעשית בהקשה על F1. הקשה נוספת תחזיר אותנו אל העורך. גרש זוכר את הנקודה בה הפסקנו לקרוא את המדריך וכשנחזור אליו נמוקם באותה נקודה. הדבר מאפשר לדלג בנוחות בין המדריך לבין העורך וכך להתנסות בעורך תוך כדי קריאה ולימוד במדריך. הקשת ENTER תקפיץ אותנו אל הסעיף עליו מצביע הקישור תחת הסמן, והקשת 'l' תקפיץ אותנו אל הנקודה הקודמת בה היינו.

כלי "תאר מקש" שימושי בעיקר במקרים בהם איננו זוכרים אם מקש מסוים אכן עושה מה שנדמה לנו שהוא אמור לעשות.

המדריך למשתמש מנוסח בלשון רבים ולעתים בלשון זכר יחיד, אך בשפה העברית לשון זכר היא גם לשון ניטרלית, ולכן איני חייב התנצלות לאיש: לא לאלה שאינם מכירים את שפתם, ובעיקר לא לאלה המנסים להפוך אותי (ואותך) לשותף בהפצת האג'נדות שלהם.

קידודים
‾‾‾‾‾‾‾
גרש הוא תוכנה "מבונאמת" (internationalized), וככזה הוא יכול לפעול תחת הגדרות קידוד שונות. המושגים "קידוד" ו"בנאום" (encoding ו־internationalization) שכיחים בדיונים אודות תכנות מודרניות, ובמסמך זה לא אטול על עצמי את המלאכה המייגעת של הסברתם. המעוניין יפנה למקורות הרבים והטובים המצויים באינטרנט.

גרש מאחסן את התווים בזיכרונו בייצוג יוניקוד, UCS-4.

גרש מודע לקידודם של שני מרכיבים, הנפרדים לחלוטין זה מזה:

• קידוד המסוף

• קידוד קובצי הטקסט

קידוד המסוף
‾‾‾‾‾‾‾‾‾‾‾
קידוד המסוף פירושו קידוד התווים הנשלחים לתצוגה אל המסך וקידוד התווים המתקבלים מהמקלדת. במהלך פעולתו ממיר גרש את התווים מקידוד UCS-4 אל קידוד המסוף כדי להציגם על המסך, ובעת קבלת תווים מהמקלדת גרש ממיר אותם מקידוד המסוף אל קידוד UCS-4.

על קידוד המסוף יש להצהיר באמצעות משתנה הסביבה LC_CTYPE (או LC_ALL או LANG). לדוגמה, אם קידוד המסוף שלנו הוא UTF-8, משתנה הסביבה LC_CTYPE עשוי יהיה להכיל את המחרוזת:

en_US.UTF-8

ואם קידוד המסוף שלנו הוא, לדוגמה, ISO-8859-8, אותו משתנה סביבה עשוי יהיה להכיל את המחרוזת:

he_IL.ISO-8859-8

או רק:

he_IL

רצוי להקליד "locale charmap" ב־shell כדי להיווכח שהמערכת אכן זיהתה את הקידוד שציינו.

לגרש שני מצבי פעולה עיקריים: מצב UTF-8, בו המסוף מסוגל להציג ולקלוט אלפי תווים ממגוון שפות, ומאידך מצב "8 ביט" (לאלה משתייכים הקידודים המוכרים ממשפחת ISO-8859, ואחרים), בו המסוף מסוגל להציג ולקלוט מספר מצומצם יחסית של תווים, לרוב רק כמה עשרות. מערכות מודרניות תומכות במסופי UTF-8 ורצוי לנצל אפשרות זו. דוגמאות לכך הן הקונסולה של לינוקס (מוגבלת לתצוגה של 512 תווים, כאשר משתמשים בכרטיס VGA)‏, Linux framebuffer ו־xterm.

מסופי UTF-8
‾‾‾‾‾‾‾‾‾‾‾
קיימים שני סוגים של מסופי UTF-8: המשוכללים יותר, אלה היכולים להציג combining characters ו־wide characters, ואלה שלא. לסוג הראשון משתייכים מסופים הפועלים בסביבות גראפיות, כגון xterm (וכנראה גם גרסאות אחרונות של Linux framebuffer), ולסוג השני משתייכים מסופים המשתמשים במצב הטקסט של כרטיס המסך, כגון הקונסולה של לינוקס.

combining characters (ולעתים מכנים אותם non-spacing marks) הם סימנים גראפיים המצטרפים לתו הקודם, ועמם נמנים, בין היתר, סימנים דיאקריטיים, סימנים מתמטיים וסימני הניקוד העברי (פתח, סגול, דגש וכו', ועל כך קרא עוד בסעיף "ניקוד עברי").

wide-characters הם תווים שרוחבם שתי עמודות. לקבוצה זו משתייכים האידאוגרפים האסיאניים (סינית, יפנית, קוריאנית ועוד) כי קשה לדחוס בעמודה אחת (שרוחבה כעשרה פיקסלים) "ציורים" מורכבים.

גרש, בברירת מחדל, מנחש את סוג המסוף על פי קיומו של משתנה הסביבה DISPLAY. אם המשתנה קיים, גרש מניח שזהו מסוף מהסוג הראשון (כי כנראה מדובר באמולציית מסוף תחת X); אם המשתנה אינו קיים, גרש מניח שזהו מסוף מהסוג השני, המוגבל יותר. אם גרש לא מנחש נכונה את סוג המסוף (לדוגמה אם הנך משתמש ב־Linux framebuffer), יהיה עליך לספר לגרש על סוג המסוף באמצעות האופציה ‎`--combining-term'‎. אך אם תספר לגרש שהמסוף מסוגל להציג כראוי combining characters בעוד שהמסוף אינו מסוגל לכך, התצוגה עלולה להתפקשש, משום שגרש יניח שתווים אלה רוחבם 0 בעוד שמבחינת המסוף אלה הם תווים רגילים התופסים עמודה אחת.

כדי לגלות מה חושב גרש על המסוף שלך, הפעילו עם האופציה ‎`-V'‎.

לתמיכה במסופי UTF-8 חובה להדר ולקשר את גרש עם ספריית ncursesw, ספרייה המממשת את תקן X/Open ל־curses עם תמיכה ב־wchar_t. אם הדבר לא נעשה, ואם גרש ימצא שקידוד המסוף הוא UTF-8, גרש ידפיס הודעת שגיאה ויסרב להמשיך.

<http://www.gnu.org/software/ncurses/ncurses.html>

פרטים נוספים במסמך INSTALL.

מסופי 8 ביט
‾‾‾‾‾‾‾‾‾‾‾
אלה הם מסופים מהסוג הישן -- מסופים בהם כל תו מיוצג ב־byte אחד. גם במצב פעולה זה חייב גרש לדעת את קידוד המסוף ולכן גם כאן יש להשתמש במשתני הסביבה LC_CTYPE וכד'.

קיימות מערכות ישנות שבהן מנגנון ה־localization של ספריית ה־C לא עובד כשורה, או שהוא כלל לא קיים. גרש נכתב כך שיוכל לרוץ גם על מערכות כאלה. באמצעות האופציה ‎`--iso88598-term'‎ (או, בשמהּ הקצר, ‎`-H'‎) ניתן לומר לגרש שקידוד המסוף הוא ISO-8859-8 (עברי) ולגרום לו להשתמש בקוד המרה פנימי במקום בספריית ה־C. במצב פעולה זה כל מה שדרוש הוא שהמסך יוכל להציג תווים עבריים.

תווי יוניקוד שגרש לא יכול לייצגם בקידוד המסוף ייוצגו, בברירת מחדל, כסימני שאלה בצבע סגול. combining characters ייוצגו כתווי גרש, ותווים רחבים ייוצגו כאות 'A'. כל אלה בצבע שונה מהטקסט הרגיל.

תווי מסגרת גראפיים
‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
למרות שהדבר אינו ממש קשור לנושא הקידוד, אתייחס כעת לתווים שבהם משתמש גרש לציור מסגרות התפריטים ופס הגלילה. בברירת המחדל ישתמש גרש בתווים "גראפיים" אם משתנה הסביבה DISPLAY קיים. אם המשתנה אינו קיים, ישתמש גרש בתווי ASCII. ניתן להנחות את גרש לנהוג אחרת באמצעות האופציה ‎`--graphical-boxes'‎ או באמצעות הפקודה "Toggle use of graphical characters for frames" אשר בתפריט Display.

קידוד הקבצים
‾‾‾‾‾‾‾‾‾‾‾‾
גם הקבצים המצויים בדיסק מאוחסנים בקידוד מסוים. גרש מאפשר לנו לציין את קידוד הקובץ שאנו טוענים מהדיסק (כדי שתוכל להתבצע המרה מקידוד זה אל הקידוד הפנימי של גרש, UCS-4), או לציין את הקידוד שבו ישמר החוצץ כקובץ בדיסק (כדי שתוכל להתבצע המרה מן הקידוד הפנימי של גרש אל הקידוד הרצוי של הקובץ).

לעובדה שגרש ממיר את קידוד הקובץ אל הקידוד הפנימי, UCS-4, יש גם חסרון: אי אפשר לערוך בגרש קובץ המכיל מספר קידודים, כדוגמת קובץ mbox. במקרים כאלה יש להשתמש בעורכים אחרים, הפועלים בצורה שונה מגרש, כגון mined.

<http://www.towo.net/mined/>

יש להדגיש שאין כל קשר בין קידוד הקבצים לבין קידוד המסוף: ניתן לערוך קובץ המקודד ב־UTF-8 על מסוף ISO-8859-8 ולהפך. אמנם, על המסוף יוצגו סמלים חליפיים במקום תווים שאותם הוא אינו יכול להציג, אולם ערכי התווים עצמם נשמרים בחוצץ (buffer=) ואינם אובדים.

משתני הסביבה LC_CTYPE ואחרים אינם רלוונטיים כלל וכלל לקידוד הקבצים. הן משפיעים אך ורק על קידוד המסוף.

טעינת קובץ
‾‾‾‾‾‾‾‾‾‾
הסוגיה החשובה ביותר בטעינת קובץ היא סוגיית הקידוד -- זיהויו הנכון של קידוד הקובץ.

כאשר גרש מתבקש לטעון קובץ הוא נוהג כדלקמן:

1. אם המשתמש ציין מפורשות את קידוד הקובץ, גרש יטען את הקובץ לפי קידוד זה;

2. אם המשתמש לא ציין מפורשות את קידוד הקובץ, גרש יקרא את 8192 הבתים הראשונים של הקובץ וינסה לזהות את הקידודים הבאים: UTF-8, ואם הקובץ פותח ב"חתימה" (Byte-order mark -- כך מקובל בקבצים הנוצרים במערכת MS-Windows) אז גם את UTF-16 ו־UTF-32. אם גרש מצליח לזהות את הקידוד, הוא יטען את הקובץ לפי קידוד זה;

3. אם המשתמש לא ציין מפורשות את קידוד הקובץ, ואם גרש לא הצליח לזהות אוטומטית את קידוד הקובץ, גרש יטען את הקובץ לפי קידוד ברירת המחדל. את קידוד ברירת המחדל ניתן לקבוע באמצעות האופציה ‎`-f'‎ או באמצעות תת התפריט "Set the default encoding" אשר בתפריט "Characters" (אם הדבר לא נעשה, קידוד ברירת המחדל יהיה זה שנקבע ע"י הסקריפט configure בשעת התקנת גרש, לרוב CP1255). קידוד ברירת המחדל קובע גם את קידודם של קבצים חדשים.

לאחר טעינת הקובץ יציג גרש את קידודו בשורת הסטאטוס, בפינה הימנית.

המשתמש יכול להזין לחוצץ (buffer=) את כל תווי היוניקוד מבלי להתחשב במגבלות קידוד הקובץ. כלומר, אם נטען קובץ המאוחסן בדיסק בקידוד ISO-8859-8, ולאחר מכן נזין לחוצץ מספר תווים ביפנית, עדיין נראה "ISO-8859-8" בשורת הסטאטוס. זה משום שהתווים תמיד מאוחסנים בחוצץ בייצוג UCS-4 -- קידוד היכול לייצג את כל התווים. תפקיד שורת הסטאטוס הוא רק להזכיר למשתמש באיזה קידוד מאוחסן הקובץ בדיסק.

כאמור, המשתמש יכול לציין מפורשות את קידוד הקובץ שהוא מבקש לטעון. שתי דרכים לעשות זאת:

1. אם הקובץ לטעינה מצוין כארגומנט בשורת הפקודה (ה־command line), ניתן לציין את קידודו באמצעות האופציה ‎`-F'‎ (שים לב: אות F גדולה, לא קטנה). במה שונה האופציה ‎`-F'‎ מהאופציה ‎`-f'‎? הראשונה מספרת לגרש מהו קידוד הקובץ, ואילו השנייה מספרת לגרש מהו קידוד ברירת המחדל, שיכנס לפעולה רק אם גרש לא מצליח לזהות אוטומטית את קידוד הקובץ. למעשה, האופציה ‎`-F'‎ היא הרבה פחות שימושית מאשר ‎`-f'‎ ונוכל לשכוח מקיומה.

2. אם טעינת הקובץ נעשית מתוך גרש, למשל תוך שימוש בפקודות F3 או M-r, נוכל לציין את הקידוד באותה שורה בה אנו מקלידים את שם הקובץ: נקליד רווח אחרי שם הקובץ, לאחר מכן מינוס (או פלוס) ומיד לאחר מכן נקליד את שם הקידוד. לדוגמה, אם נרצה לטעון קובץ המאוחסן בקידוד יווני, נקליד:

~/documents/filename.txt -iso-8859-7

אם רוב הקבצים שלנו הם בקידוד יווני, נגדיר את הקידוד היווני כקידוד ברירת המחדל כדי שלא ניאלץ לציין את הקידוד שוב ושוב בכל טעינת קובץ.

אם טעינת קובץ נכשלת עקב שגיאת קידוד -- למשל כאשר ננסה לטעון קובץ המאוחסן בקידוד ISO-8859-8 כקובץ בקידוד UTF-8 -- תוקרן הודעת שגיאה בנוסח "המרת UTF-8 נכשלה במיקום X".

שמירת קובץ
‾‾‾‾‾‾‾‾‾‾
בשמירת קובץ יש שתי סוגיות: סוגיית הקידוד וסוגיית נהלי השמירה.

נדון תחילה בסוגיית הקידוד.

כאשר גרש מתבקש לשמור קובץ, הוא ממיר את התווים מייצוגם הפנימי, UCS-4, לייצוגם החיצוני -- קידוד הקובץ (זה המוצג בשורת הסטאטוס). אם גרש אינו מצליח לבצע את ההמרה, הסמן יעמוד על התו שבו נכשלה ההמרה ותוקרן הודעת שגיאה.

נחזור לדוגמה שהובאה קודם: המשתמש טוען קובץ בקידוד ISO-8859-8. לאחר מכן המשתמש מזין מספר תווים ביפנית ומבקש מגרש לשמור את הקובץ. גרש מנסה לשמור את הקובץ באותו קידוד שבו הוא נטען, אך הוא לא מצליח להמיר לקידוד ISO-8859-8 את התווים היפניים, משום שלא ניתן לייצגם בקידוד זה. גרש יקפיץ את הסמן אל התו היפני הראשון ויקרין הודעת שגיאה האומרת ש"המרת ISO-8859-8 נכשלה במיקום X בתו Y".

במקרה של השפה העברית נוכל לתאר מקרה פחות אזוטרי: המשתמש טוען קובץ בקידוד ISO-8859-8 ולאחר מכן מזין תו "מקף" או סימני ניקוד עברי. מכיוון שלא ניתן לייצג את התווים הללו בקידוד ISO-8859-8, ההמרה תיכשל.

(למעשה, כאשר גרש מהודר/מקושר עם ספריית ICONV, מצב כזה לא יקרה, כי הקובץ יטען בקידוד CP1255, לא ISO-8859-8, ובקידוד זה כן ניתן לייצג את התווים המיוחדים הללו, אבל הדוגמה הנ"ל הובאה רק כדי להסביר את הרעיון הכללי.)

כדי לפתור את הבעיה הזו מאפשר גרש למשתמש לציין מפורשות גם את הקידוד שבו ישמר הקובץ. אם המשתמש לא יציין את קידוד השמירה, גרש ינסה לשמור את הקובץ בקידוד שבו הוא נטען.

ציון הקידוד בשעת השמירה נעשה בצורה דומה לציונו בשעת הטעינה: נשתמש בפקודה C-s, "שמור בשם", ולאחר שם הקובץ נקליד רווח, סימן מינוס (או פלוס) ושם הקידוד. שיטה אחרת לציון הקידוד היא באמצעות תת התפריט "Set the encoding used for saving this file" אשר בתפריט "Characters". מכאן ואילך יזכור גרש את הקידוד החדש ושורת הסטטוס תתעדכן בהתאם.

אודות ICONV
‾‾‾‾‾‾‾‾‾‾‾
בסעיפים הקודמים דנּו בקידוד קבצים ואף נתנו דוגמאות לשמות קידודים, אבל עדיין לא הסברנו איזה מרכיב במערכת אחראי על ביצוע ההמרות.

בשעת התקנת גרש יבדוק סקריפט ה־configure אם מותקנת במערכת ספריית ICONV. אם קיימת (כך כמעט בכל המערכות המודרניות), גרש ישתמש בה ולרשות המשתמש יעמדו שפע הקידודים שהספרייה מציעה. אם במערכת לא מותקנת ספריית ICONV, או אם ספרייה זו לא מתאימה לגרש, מסיבות שונות, יוכל המשתמש לשמור ולטעון קבצים רק ב־3 הקידודים הכלולים בגרש עצמו:

• UTF-8

• ISO-8859-8

• ISO-8859-1 / ASCII

כאשר המשתמש נצרך להקליד שם קידוד, בד"כ עליו להקליד את שמו הרשמי, אולם לעתים ספריות ICONV מודעות לווריאציות ול־aliases שונים, ולכן ייתכן שנוכל להקליד "utf8" במקום "utf-8",‏ "iso88598" במקום "iso-8859-8",‏ "windows-1255" שקול ל־"cp1255" וכו'.

ניתן להקליד "iconv -l" ב־shell כדי לקבל את רשימת כל הקידודים המוכרים.

מסקנות לגבי שמירה וטעינה של קבצים
‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
בסעיפים הקודמים דובר על בעיות המרה בשמירה ובטעינה של קבצים. הבעיות הללו לא קיימות בקבצים המקודדים ב־UTF-8, כי בקידוד זה אפשר לייצג את כל התווים, ולכן טוב נעשה אם נרגיל את עצמנו להשתמש בקידוד זה.

בסעיף "טעינת קובץ" תואר בפירוט תהליך זיהויו של קידוד הקובץ. תהליך זה, הכולל ניסיון זיהוי אוטומטי ולאחר מכן שימוש בקידוד ברירת המחדל, מתאים במיוחד למקרים בהם עובדים גם עם UTF-8 וגם עם קידוד מיושן, למשל כזה ממשפחת ISO-8859. במקרה כזה יש לקבוע את הקידוד המיושן כקידוד ברירת המחדל: אם הקובץ הוא דווקא בקידוד UTF-8, גרש יזהה זאת אוטומטית. מסיבה זו, בשעת התקנת גרש, קובע סקריפט ה־configure את קידוד ברירת המחדל כ־CP1255 (או כ־ISO-8859-8) ולא כ־UTF-8.

שמות קבצים המכילים תווים שאינם ASCII
‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
עפ"י המלצות של קהילות היוניקס, יש לקודד שמות קבצים ב־UTF-8, ואכן גרש מניח ששמות הקבצים מקודדים כך. אם גרש פוגש בשם קובץ שאינו רצף UTF-8 חוקי, גרש מניח שנעשה שימוש בקידוד ISO-8859-1.

גרש מאפשר למשתמש להזין שמות קבצים בשני מקומות:

1. הזנת שמות קבצים כארגומנטים בשורת הפקודה (command line): גרש טוען את הקובץ ששמו הוא רצף הבתים (bytes) המרכיב את הארגומנט.

2. הזנת שמות קבצים בשורת הדיאלוג (בתגובה, למשל, להקשה על F3): שורת הדיאלוג היא כמו תיבת העריכה הראשית של גרש, אך בקטן. היא מאחסנת את התווים שהמשתמש מקליד בייצוג יוניקוד. כשגרש ניגש לטעון (או לשמור) את הקובץ, הוא מתרגם את השם שהקליד המשתמש ל־UTF-8.

כלומר, אם ברשות המשתמש קובץ ששמו אינו מקודד ב־UTF-8, הוא יוכל לטעון אותו רק בציון שמו בשורת הפקודה. אם ינסה המשתמש להקליד את שמו בשורת הדיאלוג, גרש יטען קובץ בעל שם כזה אך המקודד ב־UTF-8. מכיוון שקובץ כזה לא נמצא בדיסק, גרש יפתח לעריכה קובץ חדש.

נוהל שמירת קובץ
‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
להלן הפעולות שגרש עושה בעת שמירת קובץ בשם filename:

1. גרש שומר את החוצץ בקובץ זמני בשם filename.tmp. לקובץ הזמני אותן הרשאות כמו של filename, אם זה קיים. אם הפעולה נכשלת, גרש מקרין הודעת שגיאה ועוצר.

2. אם המשתמש מעוניין בגיבוי, גרש ישנה את שמו של filename לשם קובץ הגיבוי. אם המשתמש אינו מעוניין בגיבוי, גרש ימחק את filename.

3. גרש ישנה את שמו של הקובץ הזמני ל־filename.

גיבוי
‾‾‾‾‾
בברירת מחדל, גרש מבצע גיבוי לקבצים. שם קובץ הגיבוי הוא שמו של הקובץ המקורי בתוספת סיומת. סיומת ברירת המחדל היא "~", אך אפשר לשנותה באמצעות האופציה ‎`--suffix'‎ או באמצעות משתנה הסביבה SIMPLE_BACKUP_SUFFIX (כך נהוג ב־fileutils של GNU). אם איננו מעוניינים בגיבוי, נציין מחרוזת ריקה כסיומת.

שמירת חירום בעת קבלת אירוע SIGHUP
‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
כאשר גרש מקבל אירוע SIGHUP -- בד"כ תוצאה של ניתוק הקשר בין המסוף לבין השרת (למשל התנתקות חיבור האינטרנט בעת שימוש ב־telnet/ssh) או של סגירת חלון ה־xterm -- ואם השינויים שנעשו בחוצץ עדיין לא נשמרו בקובץ, גרש ישמור את החוצץ בקובץ בשם filename.save, כאשר filename הוא שם הקובץ שאנו עורכים. אם עדיין לא שייכנו שם קובץ לחוצץ, החוצץ ישמר בקובץ בשם geresh.save.

עוד על תווים
‾‾‾‾‾‾‾‾‾‾‾‾

הזנת תווים שאינם נמצאים על המקלדת
‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
כאשר אנו מקלידים תווי אנגלית, הכל ברור ופשוט, כי הרי תווים אלה נמצאים על המקלדת, אך מה נעשה אם נצטרך להקליד תווים שאינם נמצאים על המקלדת, למשל תווים בעברית, ניקוד עברי, יפנית או רוסית?

חמש דרכים שונות להזין תווים שאינם נמצאים על המקלדת:

1. קנפג את המסוף שלך. למשל, אם אתה משתמש בקונסולה של לינוקס, עשה זאת באמצעות loadkeys; אם אתה משתמש ב־X11, עשה זאת באמצעות שירותי XKB.

2. השתמש במפת "המקלדת החלופית" של גרש. הפעלה וביטול של מפה זו נעשים בהקשת M-h. המפה המגיעה עם גרש מדמה מקלדת עברית ("קראטון").

3. תת־תפריט "Insert a Unicode character from the list" אשר בתפריט "Characters" מכיל מספר מצומצם של תווים שימושיים, והוא עשוי להיות שימושי עבור משתמשים חדשים שאין ברשותם הזמן ללמוד את גרש.

4. השתמש במפת "תרגום התווים" של גרש. הפעלה של מפה זו נעשית בהקשת C-q והיא תקפה רק להמרת התו שיוקש אח"כ. מפה זו שימושית להזנת תווים שאיננו מקלידים לעתים קרובות (למשל ניקוד עברי), משום שלא נוח להקיש C-q לפני כל תו. המפה המגיעה עם גרש כוללת את סימני הניקוד העברי, תווי פורמט של BiDi ועוד כמה תווים שימושיים.

5. השתמש בפקודת C-M-v, "הכנס תו", כדי להזין תו שערך היוניקוד שלו ידוע לך. לדוגמה, 2264 הוא הסימן "קטן שווה ל" (≤). פקודה זו נגישה גם מתפריט "Characters".

מפות תווים
‾‾‾‾‾‾‾‾‾‾
"מפת תווים" של גרש היא טבלה המכילה התאמות בין תו אחד לאחר (בשפה מתמטית נאמר, כי מפת תווים הנה פונקציה). מפות תווים משמשות בד"כ להמרת תווים. גרש עושה שימוש ב־3 מפות תווים וכל אחת מהן מאוחסנת בקובץ משלה במערכת הקבצים:

1. kbdtab - מפת "המקלדת החלופית" (ראה סעיף "הזנת תווים שאינם נמצאים על המקלדת").

2. transtab - מפת "תרגום התווים" (ראה סעיף "הזנת תווים שאינם נמצאים על המקלדת") - trans = translation. 

3. reprtab - מפת ה"ייצוג" (repr = representation). מלבד טקסט, גרש נדרש להציג קונספציות ומצבים שונים: סופי פסקאות, אינדיקטורים לגלילת שורות או לקטיעת שורות, תווי ייצוג לתווים אסיאניים, לסימני ניקוד עברי, או ל־combining characters למסופים שאינם תומכים בהם, תווי פורמט של BiDi וכו'. במקום לקודד את תווי הייצוג הללו בגרש עצמו (hard-coded), גרש משתמש במפת תווים רגילה וכך מאפשר למשתמש לערוך אותה ולהתאים את תווי הייצוג לטעמו.

שלושת הקבצים הללו עשויים להימצא בשני מקומות:

1. ב־‎/usr/share/geresh/‎; או

2. ב־‎~/.geresh/‎

המיקום המדויק תלוי במערכת. הפעל את גרש עם האופציה ‎`-V'‎ כדי לקבל את רשימת הקבצים שגרש מחפש.

התחביר של קובצי מפות התווים פשוט למדי: כל שורה כוללת שני תווים: תו המקור ותו היעד. תו ניתן לייצג בשלושה אופנים: ערך הקסדצימלי של התו (יוניקוד), ערך דצימלי (מספר המסתיים בנקודה) של התו (יוניקוד), או ליטרל התחום בגרש משני צידיו. הערות יש להקדים בתו "#". הקובץ מקודד ב־UTF-8.

מומלץ לקרוא את תוכן קובצי המפות המסופקים עם גרש כי חלקם מכילים הסברים וטיפים.

מידע על תווים
‾‾‾‾‾‾‾‾‾‾‾‾‾
תפריט "Characters" מכיל מספר פקודות המאפשרות לנו לקבל מידע על תווים.

1. פקודת "Print Unicode and UTF-8 value" (או הקשה על C-M-u) תגלה לנו את ערך היוניקוד ואת רצף ה־UTF-8 של התו עליו עומד הסמן.

2. פקודת "Insert a Unicode character using its code" (או הקשה על C-M-v) תאפשר לנו להזין תו שאת ערך היוניקוד שלו אנו יודעים.

3. פקודת "Print the corresponding UnicodeData.txt line" (או הקשה על C-M-i) תדפיס את שורת ה־UnicodeData.txt המתאימה לתו עליו אנו עומדים. זו פקודה מאוד שימושית כאשר אנו צופים בקובץ המכיל תווים אזוטריים שאיננו יודעים מה פשרם, או כאשר אנו עובדים עם תווי ניקוד במסופים שאינם מסוגלים להציגם. גרש אינו מסופק עם הקובץ הנ"ל (בשל גודלו), אך אפשר להורידו מאתר יוניקוד:

<http://www.unicode.org/Public/UNIDATA/UnicodeData.txt>

הפעל את גרש עם האופציה ‎`-V'‎ כדי לראות באיזו ספרייה מצפה גרש למצוא את הקובץ.

הסבר על מבנה הקובץ ניתן למצוא ב:

<http://www.unicode.org/Public/UNIDATA/UCD.html>

סופי שורות
‾‾‾‾‾‾‾‾‾‾
(הערה: בסעיף זה בכל מקום שכתוב "שורה" מדובר למעשה ב"פסקה" מבחינתו של גרש. "שורה" הוא המונח הרוֹוח בדיונים על "סופי שורות", ולכן בכתיבת הסעיף השתמשתי דווקא בו.)

במערכות שונות מיוצגים סופי שורות בצורות שונות. גרש מסוגל לערוך מסמכים בהם סוגים שונים של סופ"ש.

	+-----------------------+-------+---------------+
	| סוג סופ"ש		| מבנה	| תו ייצוג בגרש	|
	+-----------------------+-------+---------------+
	| יוניקס		| LF	|‏ « או »	|
	| דוס / וינדוז		| CR+LF	|‏ µ		|
	| מקינטוש		| CR	|‏ @		|
	| יוניקוד: מפריד־פסקאות	| PS	|‏ ¶		|
	| יוניקוד: מפריד־שורות	| LS	|‏ \		|
	+-----------------------+-------+---------------+
\html_repr <img src="imgs/eol.png">

סופי השורות מוצגים רק כאשר מצב "הצג סימני פורמט" מופעל (M-F). את תווי הייצוג אפשר לשנות בעריכה של מפת ה"ייצוג" (ראה סעיף "מפות תווים").

כאשר נקיש ENTER יצור גרש פסקה חדשה שסוף השורה שלה כסוף השורה של הפסקה המקורית. כדאי להיות מודעים לכך כאשר עורכים מסמך שבו סוגים שונים של סופי שורות.

ניתן להחליף בין סוגי השורות באמצעות תת התפריט "Change end-of-line type" אשר בתפריט "Characters", או בהקשה על C-M-e. יש להקיש פעמים אחדות כדי להגיע לסוג הרצוי.

למידע על הזנת מפריד־השורות של יוניקוד, ראה סעיף "הזנת תווים שאינם נמצאים על המקלדת".

המסך
‾‾‾‾
כאשר גרש רץ, מחולק המסך לארבעה אזורים. האזור העליון הוא השורה הראשונה במסך, הלא היא שורת התפריט. מתחתיה מתחיל אזור התופס את רובו המוחלט של המסך, והוא תיבת העריכה של גרש. בתחתית המסך שני אזורים נוספים: שורת הסטאטוס ומתחתיה שורת הדיאלוג.

שורת הסטאטוס
‾‾‾‾‾‾‾‾‾‾‾‾
שורת הסטאטוס מציגה עבורנו את שם הקובץ שאותו אנו עורכים, את קידודו (בצד ימין), אינדיקטורים שונים (בצד שמאל), ואם ביקשנו, גם את מיקום הסמן.

האינדיקטורים מספרים לנו על מצבי תיבת העריכה. לתיבת העריכה יש יכולות שונות שאפשר להפעיל (enable) או לבטל (disable). לדוגמה, מצב "הזחה אוטומטית" (auto-indent) יכול להיות מופעל או מבוטל. כאשר היכולת או המצב מבוטלים, האינדיקטור בד"כ יציג "-" (מינוס); כאשר היכולת או המצב פעילים, האינדיקטור יציג אות לטינית או סימן אחר כלשהו.

להלן פירוט האינדיקטורים. שם לב שגם התפריט כולל אינדיקטורים (בדמות תווי '+' או '*'), ולכן אין צורך לשנן את האותיות הבאות; עם זאת, יש תועלת בשינון מקצתן (כמו למשל 'M').

‏ ‎[M $/\ !/</> @ R S " a H j i k/K q n/N v F]‎
  | |  |  |  |  | | | | | | | |   |    |  |
  | |  |  |  |  | | | | | | | |   |    |  +-- האם החוצץ שונה מאז הטעינה?
  | |  |  |  |  | | | | | | | |   |    |      'M' - כן.
  | |  |  |  |  | | | | | | | |   |    |      '-' - לא.
  | |  |  |  |  | | | | | | | |   |    +-- סוג ה-wrap‏ (M-w):
  | |  |  |  |  | | | | | | | |   |        '$' - אל תבצע wrap.
  | |  |  |  |  | | | | | | | |   |        '-' - בצע, אבל אל תשבור מלים.
  | |  |  |  |  | | | | | | | |   |        '\' - בצע, שבור מלים.
  | |  |  |  |  | | | | | | | |   +-- האלגוריתם הפעיל לקביעת
  | |  |  |  |  | | | | | | | |       הכיווניות (M-t):
  | |  |  |  |  | | | | | | | |       '!' - נהג עפ"י האלגוריתם המתואר
  | |  |  |  |  | | | | | | | |             ב־TR9.
  | |  |  |  |  | | | | | | | |       '-' - התחשב בסביבת הפסקה (פירוט
  | |  |  |  |  | | | | | | | |             בהמשך).
  | |  |  |  |  | | | | | | | |       '~' - התחשב בסביבת הפסקה (פירוט
  | |  |  |  |  | | | | | | | |             בהמשך).
  | |  |  |  |  | | | | | | | |       '<' - ישר את כל הפסקאות לשמאל.
  | |  |  |  |  | | | | | | | |       '>' - ישר את כל הפסקאות לימין.
  | |  |  |  |  | | | | | | | +-- מצב סימון טקסט (C-@‎)
  | |  |  |  |  | | | | | | +-- מצב "קריאה בלבד" (M-R)
  | |  |  |  |  | | | | | +-- האם ה־Speller טעון? (M-S)
  | |  |  |  |  | | | | +-- תרגם את התו הבא (C-q)
  | |  |  |  |  | | | +-- מצב Arabic shaping‏ (M-a)
  | |  |  |  |  | | +-- מצב מקלדת חלופית (M-h)
  | |  |  |  |  | +-- מצב יישור אוטומטי (M-J)
  | |  |  |  |  +-- מצב הזחה אוטומטית (M-i)
  | |  |  |  +-- הצג מקף עברי (M-k):
  | |  |  |      'k' - יצגו כמינוס.
  | |  |  |      'K' - יצגו כמינוס והציגו בהבלטה.
  | |  |  |      '-' - הדפיסו כפי שהוא, אם המסוף מסוגל לכך.
  | |  |  +-- מצב "הקלדה חכמה" (M-q):
  | |  |      'q' - בשעת ההקלדה, המר "-" (מינוס) במקף עברי,
  | |  |            אם בא לאחר אות עברית.
  | |  +-- הצג סימני ניקוד עברי וערבי (M-n):
  | |      'n' - יצגם כתווי ASCII.
  | |      'N' - הדפיסם כפי שהם, אם המסוף מסוגל לכך.
  | |      '-' - הסתר סימני ניקוד.
  | +-- שיטת תנועת הסמן (M-v):
  |     'v' - ויזואלית.
  |     '-' - לוגית.
  +-- הצג סימני פורמט (M-F):
      'F' - הצג סופי פסקאות, תווי TAB ותווי פורמט של BiDi.
      '-' - הסתר כל אלה.
\html_repr <img src="imgs/indicators.png">

שם לב: אם האינדיקטור הוא אות לטינית, בד"כ ניתן להפעיל ולבטל את המצב בהקשה על ALT ועל האות בו־זמנית.

שורת הדיאלוג
‾‾‾‾‾‾‾‾‾‾‾‾
שורת הדיאלוג משמשת להצגת הודעות אינפורמטיביות, להצגת הודעות שגיאה, ולקבלת קלט מהמשתמש. קלט כזה עשוי להיות שמות קבצים, מחרוזות לחיפוש, או תשובות לשאלות כן/לא ("האם לשמור את השינויים?").

בשעת הזנת קלט ניתן להשתמש כמעט בכל פקודות העריכה הזמינות בתיבת העריכה הראשית של גרש.

כאשר מקלידים שם קובץ ניתן להשתמש במקש TAB (וב־M-TAB) כדי להשלים את שם הקובץ. השלמת שמות אפשרית גם עבור קבצים בעלי שמות בעברית ובכל שפה אחרת.

לשורת הדיאלוג יש היסטוריה וניתן לנוע בה באמצעות המקשים חץ מעלה וחץ מטה.

ניתן לבטל הזנת קלט, או אישור פעולה מסוימת, בהקשה על C-c, C-g, או פעמיים ESC.

שפת הדיאלוג
‾‾‾‾‾‾‾‾‾‾‾
ניתן להדר ולקשר את גרש עם ספריית gettext, וכך, אם הקטלוגים הרצויים מותקנים במערכת, לבחור את שפת ההודעות שגרש מציג. הבחירה נעשית באמצעות משתני הסביבה LC_MESSAGES, LANG וכד'. גרש לא מסופק עם קטלוגים כאלה (כי אצטרך לתחזק אותם באופן שוטף), אבל האפשרות קיימת. אם ההודעות הן בעברית או בערבית, הן תיושרנה לימין.

עריכת טקסט דו־כיווני
‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
רוב הקשיים בעריכת טקסט בעברית אינם נובעים מכך שעברית נכתבת מימין לשמאל, אלא מכך שהטקסט בכללותו הוא דו־כיווני: עברית אמנם נכתבת מימין לשמאל, אבל בפסקה עברית סביר שנמצא פה ושם גם מספרים ומלים באנגלית, ואלה נכתבים משמאל לימין.

בסעיף זה נדון באמצעים שונים שיקלו עלינו בעריכת טקסט דו־כיווני.

תווי פורמט של BiDi
‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
ב־TR9, המסמך המתאר את אלגוריתם ה־BiDi של יוניקוד, מפורטים מספר תווים המכונים "תווי פורמט". מטרתם להקל על המשתמש להשיג את התוצאה הויזואלית אליה הוא חותר. חלק מהתווים, כמו אלה המשנים את רמת ה־embedding, נושאים בחובם גם סמנטיקה.

בהמשך סעיף זה אסביר רק על שני תווי פורמט: RLM ו־LRM, כי הם השימושיים ביותר. לפרטים על שאר תווי הפורמט, פנה ל־TR9.

לעתים נוצרים סיבוכים בהקלדת טקסט מעורב. נבחן, לדוגמה, את שלושת המשפטים הבאים:

• האיבר a[n] ערכו סכום האיברים a[0..n-1].

• ביקרנו בתערוכת COMDEX. Microsoft לא הציגו שם.

• RE (Regular Expressions) הם למחרוזות מה שהמתמטיקה היא למספרים.

מה שקיבלנו על המסך הוא לא מה שציפינו לקבל.

למרבה המזל עומדים לרשותנו שני תווים מיוחדים שיסייעו לנו לפתור את הבעיה; אלו הם תווים בלתי נראים אך בעלי כיווניות. אחד מהם הוא כעין תו עברי בלתי נראה (שמו בר"ת: RLM), השני -- תו אנגלי בלתי נראה (שמו בר"ת: LRM). נוכל לשלבם בטקסט כדי לקבוע את כיוונם של תווים ניטרליים או כדי לשבור רצף של תווים שאינם ניטרליים.

נקליד שוב את המשפטים הנ"ל, אך הפעם נשתמש בתווים המיוחדים:

• האיבר a[n]‎ ערכו סכום האיברים a[0..n-1]‎.

• ביקרנו בתערוכת COMDEX. ‏Microsoft לא הציגו שם.

• RE (Regular Expressions)‎ הם למחרוזות מה שהמתמטיקה היא למספרים.

• RE ‏(Regular Expressions) הם למחרוזות מה שהמתמטיקה היא למספרים.

ניתן לִצפות בתווים אלה כאשר מצב "הצג סימני פורמט" מופעל. הפעלה וביטול של מצב זה נעשים בהקשת M-F (תוכל לעשות זאת גם עכשיו, כאשר אתה קורא את המדריך למשתמש; שים לב: אות 'F' גדולה, לא קטנה), באמצעות האופציה ‎`--show-formatting'‎, או באמצעות תפריט "Display". איך התווים הללו, בין שאר תווי הפורמט, מוצגים על המסך -- זה תלוי במפת ה"ייצוג" (ראה סעיף "מפות תווים").

מפת "תרגום התווים" המסופקת עם גרש (ראה סעיף "הזנת תווים שאינם נמצאים על המקלדת" וסעיף "מפות תווים") מאפשרת לנו להזין את כל תווי הפורמט.

ביטול זמני של אלגוריתם ה־BiDi
‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
לעתים, כאשר אנו עורכים טקסטים מורכבים במיוחד (כמו HTML), ביטול זמני של אלגוריתם ה־BiDi יכול להקל על העריכה. הפעלה וביטול של אלגוריתם ה־BiDi נעשים בהקשת C-M-b (קיימת גם האופציה ‎`--bidi'‎). פסקאות עבריות עדיין תיושרנה לימין, ועדיין יבוצע mirroring לתווי סוגריים (הדבר נעשה כדי שהסוגריים המזוותים של HTML ייראו טבעיים ולא הפוכים; זה שיפור ניכר לעומת rightleft של Vim).

תנועת סמן לוגית ותנועת סמן ויזואלית
‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
שיטת הניווט הנפוצה ביותר בתוך המסמך היא, ללא ספק, באמצעות ארבעת מקשי החצים.

בסעיף זה נעסוק בניווט בתוך שורת טקסט, כלומר, בתנועה אופקית, ולכן נדון כאן רק בשני מקשי חצים: חץ ימינה וחץ שמאלה.

לכאורה, אין משהו מסובך במקשי החצים: אחד מצביע ימינה ואחד שמאלה, אבל מיד נראה שיש שתי דרכים שונות לפרש את תפקידם.

נתבונן בשורת הטקסט הבאה ונדמיין שהסמן עומד על האות i אשר במלה Linux.

            "יש הטוענים, כי מערכת ההפעלה Linux יציבה יותר מ..."

מה צריך לקרות אם נקיש כעת על חץ שמאלה?

יהיו שיטענו, בהגיון רב, שהסמן צריך לנוע אל האות L, כי היא נמצאת משמאל. מנגד, יהיו שיטענו, בהגיון רב גם כן, שכאשר המשתמש מקיש על חץ שמאלה בפסקה עברית הוא מבקש למעשה לנוע _קדימה_ בטקסט, לאו דווקא _שמאלה_, והאות n היא דווקא זו שנמצאת קדימה (ככל הכל, העובדה שהשפה האנגלית נכתבת משמאל לימין לא משנה את העובדה הזו, שקודם אנו מקלידים את האות i ורק אח"כ את האות n).

שתי הדעות לגיטימיות, ובאמת, רוב מעבדי התמלילים מאפשרים למשתמש למַתֵג בין שתי השיטות.

השיטה הראשונה, לפיה חץ שמאלה מניע את הסמן שמאלה על המסך, נקראת "תנועת סמן ויזואלית"; השיטה השנייה, לפיה חץ שמאלה מניע את הסמן קדימה, דהיינו, אל האות הבאה שהוקלדה, נקראת "תנועת סמן לוגית".

גרש מאפשר למשתמש למתג בין שתי השיטות בהקשת M-v, באמצעות האופציה ‎`--visual-cursor'‎, או באמצעות תפריט "BiDi". כאשר תנועת הסמן היא ויזואלית, האינדיקטור יציג "v".

איזו מהשיטות נוחה יותר? הגיונית יותר? זו שאלה סובייקטיבית, אבל רצוי להיות מודעים לכך שאפשר ליהנות משני העולמות: אפשר לעבוד עם שתי השיטות -- למתג ביניהן במהלך עריכת המסמך. בניגוד לעורכי טקסט אחרים (ליתר דיוק, מעבדי תמלילים אחרים), גרש אינו מחביא את האופציה הזו באיזו תיבת דיאלוג, אלא מציע למשתמש צירוף מקשים קל (M-v) למיתוג מיידי.

כאן המקום לציין בעיה אחת שגרש סובל ממנה, ואשר אינה קיימת באותה עוצמה ביישומי GUI: הסמן של מסוף הטקסט, סמן הבלוק (block), מוגבל יותר מאשר הסמן הגראפי הדק, ה־caret, של יישומי ה־GUI, משום שכאשר הסמן עומד על הגבול בין רצף אנגלי לעברי לעתים קשה לדעת, מבחינה אינטואיטיבית, לאן הוא שייך/פונה. לכך יש השלכות לגבי עבודה בתנועת סמן ויזואלית: אנו עשויים להעמיד את הסמן על המקום שבו אנו סבורים שיוזן התו הבא, אך להפתעתנו, כאשר נקליד את התו, נמצא אותו במקום קצת אחר. הבעיה הזו פחות מטרידה כשאנו עובדים עם תנועת סמן לוגית (ומבינים אותה), וזו סיבה נוספת ליתרון בשימוש בשתי השיטות יחדיו (כלומר, נשתמש בתנועה ויזואלית כדי להגיע לאזור המעניין, ובתנועה לוגית כדי לבצע שינויים עדינים).

אלגוריתם לקביעת הכיווניות
‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
גרש אינו מעבד תמלילים, אלא עורך טקסט טהור, וטקסט טהור כשלעצמו אינו מכיל מידע על כיווניות הפסקאות. מכיוון שמידע כזה חסר, על גרש לנחש את הכיווניות של כל פסקה ופסקה כדי להציגן למשתמש בצורה מתאימה ונוחה.

(כדי להקל על עצמי בכתיבת הסעיף, "עברי" להלן פירושו "בעל כיווניות מימין לשמאל" או "עברי או ערבי"; "אנגלי" פירושו "בעל כיווניות משמאל לימין".)

גרש מציע לבחירת המשתמש חמישה אלגוריתמים לקביעת הכיווניות:

1. אלגוריתם "יוניקוד" הנו חוקים P2 ו־P3 המתוארים ב"מסמך טכני מספר 9" של ארגון יוניקוד: כיוון הפסקה נקבע על פי התו החזק הראשון שבה. אם הפסקה ניטרלית -- כלומר, אם אין בה תו חזק -- הפסקה נחשבת אנגלית (האינדיקטור יציג "!").

2. אלגוריתם "Contextual-strong" דומה לאלגוריתם יוניקוד לעיל, אבל נבדל ממנו בטיפול בפסקאות ניטרליות: כיוונה של פסקה ניטרלית נקבע עפ"י כיוון הפסקה הקודמת; אם כל הפסקאות הקודמות ניטרליות, כיוונה נקבע עפ"י כיוון הפסקה הבאה; לבסוף, אם כל הפסקאות בהודעה ניטרליות, הפסקה נחשבת אנגלית  (האינדיקטור יציג "~").

3. אלגוריתם "Contextual-rtl" דומה לאלגוריתם "Contextual-strong", אבל כיוון פסקה שאינה ניטרלית אינו נקבע על פי התו החזק הראשון שבה, אלא כדלקמן:
.
 א. אם קיים תו עברי בפסקה, הפסקה נחשבת כפסקה עברית (ולכן תיושר לימין);
.
 ב. אחרת: אם קיים תו אנגלי בפסקה, הפסקה נחשבת כאנגלית.
.
כלומר, ההבדל בין שני האלגוריתמים האחרונים הוא, שעבור האלגוריתם האחרון מספיק שבפסקה יהיה תו עברי אחד כדי שתיחשב כפסקה עברית. כך, אפילו הפסקה פותחת במלה אנגלית, היא עדיין תיחשב כעברית אם יש בהמשכה תווי עברית. (האינדיקטור יציג "-".)

4. כל הפסקאות נחשבות כאנגליות (האינדיקטור יציג "<").

5. כל הפסקאות נחשבות כעבריות (האינדיקטור יציג ">").

שינוי האלגוריתם הפעיל נעשה בכמה דרכים:

        א. בהקשת M-1 עד M-5.
        ב. בהקשת M-t.
        ג. באמצעות האופציה ‎`--dir-algo'‎.
        ד. באמצעות תפריט "BiDi".

אלגוריתם מס' 3 הוא אלגוריתם ברירת המחדל. אלגוריתם "יוניקוד", מס' 1, הוא אלגוריתם עם תוצאות גרועות במיוחד, אבל מפעם לפעם כדאי להפעילו כדי לראות איך הטקסט יוצג על גבי מערכות הפועלות לפיו (כגון יישומי KDE/Qt). אלגוריתם מס' 2 הוא הנהוג ב־Pango של GTK (כך דוּוח לי).

ייתכן שבעתיד אוסיף אלגוריתם או שניים, לתאימות עם bidiv.

טיפ למשתמשים באלגוריתמים "יוניקוד" או "Contextual-strong": ניתן לנצל את התו RLM כדי לישר לימין פסקה הפותחת במלה אנגלית. יש להקליד את התו הבלתי נראה הזה בתחילת הפסקה ממש.

עברית
‾‾‾‾‾

ניקוד עברי
‾‾‾‾‾‾‾‾‾‾
לסימני הניקוד חלק חשוב בטקסט העברי, שהרי חובה עלינו להשתמש בהם כדי להבדיל בין מלים בעלות כתיב זהה (הומוגראפים): יש דְבֿוֹרִים ויש דַבּוּרִים).

מכיוון שלמסופים שונים יכולות שונות, גרש מאפשר להציג את סימני הניקוד העברי ב־3 אופנים:

1. לא להציגם כלל. הם קיימים בטקסט אבל לא נראה אותם על המסך.

2. לייצגם בתווי ASCII ולהקרינם בצבע שונה. שיטה זו של הצגת סימני הניקוד עובדת בכל מסוף. למשל, הניקוד "קמץ" ייוצג באות "A", חולם באות "O" ודגש בתו "*" -- כולם בצבע ירוק כדי להבדילם מהטקסט (טעמי המקרא -- ולצורך כתיבת מסמך זה איני מבדיל בינם לבין סימני הניקוד -- מוצגים בצבע כחול). נוכל לשנות את תווי ה־ASCII המייצגים כל סימן באמצעות עריכה של מפת ה"ייצוג" (ראה סעיף "מפות תווים"). אם אינך זוכר איזה סימן מייצגת אות מסוימת, הקש C-M-i כדי לקרוא את תיאור התו (לפרטים נוספים, ראה סעיף "מידע על תווים").

3. להציגם כפי שהם. שיטה זו עובדת, כמובן, רק במסופים המסוגלים להציג את סימני הניקוד העברי.

שינוי אופן התצוגה נעשה בהקשת M-n, באמצעות האופציה ‎`--points'‎, או באמצעות תפריט "Display".

כדי שמסוף יהיה מסוגל להציג את סימני הניקוד העברי (אופן 3 לעיל), שלושה תנאים חייבים להתקיים:

1. על המסוף לתמוך ב־combining characters.

2. יש להשתמש בגופן שבו מצויים גליפים של סימני הניקוד העברי.

3. יש להשתמש בגופן שבו מצויים גליפים של Hebrew presentation forms; או, לחלופין, יש לבטל את פעולת הנִרמול של תוכנת המסוף.

Hebrew presentation forms מכילים בעיקר גליפים של אותיות הא"ב עם דגש בתוכן. אילולא היו קיימים גליפים אלה, המסוף פשוט היה מדפיס את גליף הדגש על הגליפים של אותיות הבסיס והתוצאה הייתה מעוותת, כי הפיקסל של סימן הדגש עלול היה להתערב עם הפיקסלים של אות הבסיס (נתאר לעצמנו את האותיות צד"י ושי"ן, שאין במרכזן חלל).

כאשר תוכנת המסוף, xterm לדוגמה, פוגשת ברצף תווים (תו בסיס + combining characters) שאפשר להביעו בתו (=גליף) אחד -- הנקרא precomposed-character -- היא משתמשת בתו האחד הזה. את פעולה זו אכנה להלן "נִרמול" (ע"ש "Normalization Form C"), והיא הסיבה לכך ששליחת האות צד"י ואחריה דגש יגרמו להדפסת גליף המצוי בבלוק ה־presentation forms.

אם אין אנו משתמשים בגופן המכיל Hebrew presentation forms אזי נראה קוביות ריקות במקום רצפי תווים שעבורם קיימים precomposed-characters. במקרה כזה נותרה לנו תקווה אחת: אם נוכל לבטל את ביצוע הנרמול של תוכנת המסוף, היא לא תחפש precomposed-character, אלא תדפיס את גליף הסימן הדיאקריטי או את גליף סימן הניקוד על גבי אות הבסיס (והתוצאה הויזואלית עלולה, כאמור, להיות מעוותת במקצת). לתוכנת xterm אין מתג לביטול הנרמול, ולכן ניאלץ לערוך את קוד המקור (נמחק מהרשימה שב־precompose.c את כל התווים העבריים) -- אבל כל זאת, כמובן, רק אם אין ברשותנו גופן המכיל presentation forms.

בדבר גופן המכיל presentation forms, ראה סעיף "המלצה: גופן".

אם נזדקק להוסיף לאות בסיס מספר סימני ניקוד, נעשה זאת בסדר זה:

1. דגש או רפה;

2. הנקודה הדיאקריטית של שי"ן (זו המבחינה בין שי"ן ימנית לשי"ן שמאלית);

3. סימן תנועה (ו/או סימנים אחרים).

כך נשמור על תאימות עם MS-Windows ורק כך יוכל xterm (ותכנות אחרות) לבצע נרמול.

למידע על הזנת תווי ניקוד, ראה סעיף "הזנת תווים שאינם נמצאים על המקלדת".

הערה: ב־ncursesw יש באג שאינו מאפשר ל־combining character לבוא בעמודה הימנית ביותר במסך. כלומר, סימן ניקוד באות הראשונה בשורה יתפקשש קמעה. אבדוק את הנושא.

מקף
‾‾‾
את המקף העברי ניתן להזין בשבעה אופנים:

1. בצורה ידנית: כפי שאנו מזינים כל תו אחר שאינו מצוי על המקלדת. ראה סעיף "הזנת תווים שאינם נמצאים על המקלדת" -- שם מפורטות חמש דרכים. בפרט, מפת "תרגום התווים" המגיעה עם גרש מאפשרת להזין מקף בהקשה על "-" (מינוס) לאחר C-q.

6. בצורה ידנית: גרש מאפשר להזין מקף בהקשה על ALT ומינוס יחדיו. מנגנון זה טבוע בגרש עצמו ואינו קשור למפות התווים של גרש.

7. בצורה אוטומטית: כאשר מצב "הקלדה חכמה" מופעל (בהקשת M-q, באמצעות האופציה ‎`--smart-typing'‎, או באמצעות תפריט "Characters"), גרש ימיר תו "מינוס" בתו מקף, בשעת ההקלדה, אם מופיע לפניו תו עברי (לכן, אם נרצה להפיק "קו מפריד", ולא מקף, נקפיד להקליד רווח לפני תו המינוס. הדבר עולה בקנה אחד עם המלצות האקדמיה ללשון העברית, לפיהן יש לשמור על רווח בין "קו מפריד" לבין המלים הסובבות).

את המקף ניתן להציג על המסך בשלושה אופנים:

1. כפי שהוא. זה, כמובן, יעבוד רק אם בגופן שבו אנו משתמשים מצוי גליף לתו המקף.

2. לייצגו בתו ASCII "מינוס" (dash).

3. לייצגו בתו ASCII "מינוס" (dash), ובנוסף, בצבע שונה מהטקסט הרגיל. "מבט־על" זה של כל המקפים יאפשר לנו להעריך (לחיוב או לשלילה) את השימוש שאנו עושים במקף. לדוגמה, זה יאפשר לנו להעריך עד כמה מהטקסט לא יהיה ברור למשתמשים שיצפו בו על גבי מערכות שאינן מסוגלות להציג מקף. זוהי ברירת המחדל.

שינוי אופן התצוגה של המקף נעשה בהקשת M-k, באמצעות האופציה ‎`--maqaf'‎, או באמצעות תפריט "Display".

התווים גרש, גרשיים ומרכאות
‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
עורכי טקסט ומעבדי תמלילים מסוימים יודעים להמיר את תווי הגרש והמרכאות הפשוטים, המצויים על המקלדת, בתווים הנושאים משמעות רבה יותר (מרכאות פותחות, מרכאות סוגרות וכו'). אך מכיוון שאיני מתמצא בכללים הטיפוגרפיים הנהוגים בעברית, מצב "הקלדה חכמה" של העורך כלל אינו מעניק טיפול מיוחד לתווים אלה. כנ"ל לגבי הווריאציות הרבות של הסימן הנראה כקו אופקי ("-"). אולי בעתיד.

ערבית
‾‾‾‾‾
הרבה ממה שנכתב לעיל בנושא העברית תקף גם לערבית. ההבדל המרכזי בין הכתב העברי לערבי הוא שהכתב הערבי מחובר.

חיבור אותיות
‾‾‾‾‾‾‾‾‾‾‾‾
בשפה הערבית 28 אותיות (בשפות אחרות הנכתבות בכתב הערבי, כמו פרסית, קיימות אותיות נוספות), ולרובן 4 וריאציות (גליפים) בהתאם להקשרן במלה: תחילית, אמצעית, סופית־מחוברת ועצמאית. הטקסט הערבי מאוחסן בזיכרון המחשב בייצוג נומינלי: מאוחסנות האותיות עצמן, ולא הווריאציות השונות בהן הן מופיעות על המסך. זהו תפקידו של מנוע התצוגה לבחור ולהציג את הווריאציה המתאימה לאות בהקשרה. פעולה זו נקראת Arabic shaping, וגרש יודע לבצעה. כדי שתהיה בכך תועלת, עלינו להשתמש בגופן הכולל את הווריאציות הרבות של האותיות (אלו נקראות Arabic presentation forms), אחרת נראה קוביות או סימני שאלה במקום אותיות.

הפעלה או ביטול של Arabic shaping נעשים באמצעות האופציה ‎`--arabic-shaping'‎, בהקשת M-a, או באמצעות תפריט "Display".

בכתב הערבי מקובלות גם מספר ליגטורות. ליגטורת חובה היא הליגטורה לאם־אליף: הרצף לאם ואחריו אליף (ل,ا) מוצג כגליף אחד (لا). כאשר Arabic shaping מופעל, גרש מבצע גם עיבוד זה.

ניקוד ערבי
‾‾‾‾‾‾‾‾‾‾
בדומה לעברית, גם בערבית יש סימני ניקוד (حركات).

כל מה שנאמר לעיל בנוגע לניקוד עברי תקף גם לניקוד ערבי. ראה סעיף "ניקוד עברי".

הדרישות להצגה של הניקוד הערבי: שימוש בגופן הכולל את סימני הניקוד ושימוש במסוף התומך ב־combining characters.

כאשר גרש מייצג את הניקוד הערבי בתווי ASCII, הם מודפסים בצבע צהוב כדי להבדילם מתווי הייצוג לניקוד העברי (אשר מודפסים בצבע ירוק).

המלצה: גופן
‾‾‾‾‾‾‾‾‾‾‾
אני ממליץ על הגופן Courier New של מייקרוסופט. כן, אני יודע שבמערכות ההפעלה שבהן גרש מופעל זה לא פופולרי לומר דברים בשבחה של מייקרוסופט, אבל חייבים לתת קרדיט איפה שמגיע. שלוש סיבות להמלצה שלי:

1. זהו גופן True Type ולכן ניתן להשתמש בו בגדלים שונים.

2. תווי העברית בפונטים המגיעים עם XFree86 אינם נעימים לעין במקרה הטוב, ומכוערים במקרה הפחות טוב.

3. זהו פונט יוניקוד המכיל, בין היתר, תווי עברית (כולל ניקוד), ערבית (כולל ניקוד) ורוסית, וכן presentation forms של עברית וערבית.

חסרונו של הפונט שהוא לא מכיל תווים איזוטריים (כמו תווי מסגרות, אידאוגרפים אסיאניים, אמהרית, סימנים מתימטיים, תאילנדית, ברייל, ועוד לא מעט דברים שיכלו לשמח יודעי דבר).

המלצה: גופן נוסף
‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
המלצה נוספת שלי היא חבילת גופני היוניקוד המתוחזקים ע"י Markus Kuhn:

<http://www.cl.cam.ac.uk/~mgk25/ucs-fonts.html>

(בעבר העדפתי את הפונטים הללו על פני הפונט Courier New של מייקרוסופט, אבל שיניתי את דעתי. העברית בפונטים של Markus לא ממש נעימה לעין.)

גופנים אלה גם מסופקים יחד עם XFree86 ושרתי X אחרים, אבל ה־presentation forms של עברית וערבית הם תוספת מאוחרת ויתכן שהם אינם מצויים ברשותך, לכן הקפד להוריד ולהתקין את הגרסה האחרונה של הגופנים.

הערה: קובץ ה־Makefile של גופנים אלה כולל פקודה למחיקת כל התווים מעבר ל־U+3200 (כדי לחסוך זיכרון, וההסבר המלא בקובץ ה־README), וביניהם ה־presentation forms (זו סיבה נוספת לאפשרות שהפונט המגיע יחד עם ה־X11 שלך לא יגרום לך נחת רוח). לכן, לפני שאתה מבצע "make", ערוך את ה־Makefile והחלף את כל המופעים של "3200" ב־"FFFF".

כדי לבדוק אם הגופנים שברשותך כוללים presentation forms, בצע:

$ xfd -start 64256 -fn <font-name>
(to check for accented hebrew letters)
/צילום_מסך imgs/xfd_heb.png, שים לב לאותיות העבריות שבתמונה: בתוכן דגש.

$ xfd -start 65024 -fn <font-name>
(to check for arabic contextual glyphs)
/צילום_מסך imgs/xfd_ara.png, שים לב לאותיות הערביות שבתמונה: לכל אות מספר וריאציות וכמו כן מצויה כאן ליגטורת לאם־אליף.

המלצה: תוכנת אמולצית מסוף
‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
אני ממליץ על xterm. זוהי תוכנה טובה התומכת ב־UTF-8:

<http://dickey.his.com/xterm/xterm.html>

xterm, החל מהגרסה המסופקת עם XFree86 4.0, תומך ב־UTF-8. הגרסה המסופקת עם XFree86 4.0.3 ואילך תומכת גם ב־combining-characters. הקלד "xterm -version" כדי לקבל את מספר הגרסה.

ל־xterm יש patch לתמיכה ניסיונית ב־BiDi, אך אין להשתמש בו עם גרש, משום שגרש מניח שהמסוף מציג עברית ויזואלית. על הקונספציה לפיה מסופים צריכים לתמוך ב־BiDi מוטל סימן שאלה גדול.

אם תמיכה ב־UTF-8 (מצד המסוף) אינה חשובה לך, תוכל להשתמש בכל תוכנת אמולצית מסוף אחרת (עדיין תוכל לערוך קבצים המקודדים ב־UTF-8, כי אין קשר בין קידוד המסוף לקידוד הקבצים, והדבר מוסבר בהרחבה בסעיף "קידודים").

מספר מלים על konsole
‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
בפעם האחרונה שבדקתי את konsole (גרסה 1.1) של KDE (גרסה 3.0.0-10) נתקלתי בבעיות הבאות:

• טקסט עברי/ערבי עובר היפוך, כי konsole אינו מנטרל את אלגוריתם ה־BiDi של Qt. בנוסף, konsole אינו מודע לכך שהטקסט, עקב ההיפוך, מופיע במקומות שבהם הוא אינו אמור להופיע, ולכן החלון מתלכלך במהירות בתווים במקומות לא צפויים ואי אפשר לנקותו
.
_עדכון_: מני ליבנה, מצוות KDE, מוסר לי כי הבעיה תוקנה ב־KDE 3.1.

• נראה ש־konsole אינו תומך ב־combining characters (אלו הם, בין היתר, סימני הניקוד העברי).

• התצוגה של konsole אטית במקצת.

לכן איני ממליץ על konsole. יתכן שגרסאות עדכניות של konsole תומכות ב־combining characters, אבל איני יודע. אין לי גישה למערכת KDE עדכנית ולכן איני יכול לבדוק זאת. העובדה שאיני ממליץ על השימוש בתוכנה מסוימת אין פירושה שאני ממליץ לא להשתמש בה, אלא פשוט שאיני יכול להמליץ על תוכנה שאיני מכיר.

חרטה (undo)
‾‾‾‾‾‾‾‾‾‾‾
גרש תומך בשתי שיטות ניהול שונות של undo:

1. קיבוץ פעולות קטנות. אם נקיש מספר פעמים על backspace כדי למחוק משפט, גרש יזכור שמחקנו קטע של טקסט, וכשנבצע undo, גרש יקים לתחייה את המשפט כולו.

2. שמירה על הפעולות הבדידות. אם נקיש מספר פעמים על backspace כדי למחוק משפט, גרש יזכור כל מחיקת תו כפעולה נפרדת, וכל פעם שנבצע undo, גרש יקים לתחייה תו אחד.

בחירת השיטה נעשית באמצעות האופציה ‎`--key-for-key-undo'‎, או באמצעות הפקודה "Toggle key-for-key undo" אשר בתפריט "Edit".

גרש שומר את כל הפעולות שביצענו באזור זיכרון מיוחד, שגודלו מוגבל. אם נבצע הרבה פעולות, גרש "ישכח" את הפעולות הראשונות שבצענו ולא נוכל לבטלן. ניתן לקבוע את כמות הזיכרון המוקצית ל־undo באמצעות האופציה ‎`--undo-size'‎. ברירת המחדל היא 50k.

גלילה
‾‾‾‾‾
המקשים PgUp ו־PgDn גוללים את המסמך מעלה או מטה, כמקובל. עורכי טקסט שונים זה מזה בצורת הביצוע המדויקת של הפעולה; משתמשים רבים מתלוננים על כך שהם "מאבדים" את נקודת המבט שלהם כשהם גוללים טקסט, ולכן גרש מחקה את צורת הפעולה של emacs, מתוך הנחה שעורך הטקסט הנפוץ הזה הותאם במשך השנים לטעמם של רוב המשתמשים.

כאשר יקיש המשתמש על מקש Down בשעה שהסמן נמצא בשורה האחרונה על המסך, יגלול גרש את המסמך שורה אחת מעלה, כברירת מחדל. באופן דומה יגיב גרש למקש Up. משתמשים רבים רגילים לכך כי כך מקובל ביישומי MS-Window. כדי להנחות את גרש לגלול את המסמך מספר אחר של שורות, כרצוננו, נשתמש באופציה ‎`--scroll-step'‎ (או, בתוך גרש, באמצעות תפריט "Display"). אם נרצה לחקות את צורת הפעולה של emacs, בה נגלל המסמך חצי מסך, נספק ארגומנט גדול, כמו 99.

פקודה שימושית נוספת היא C-l. הפקודה תגרום לרענון המסך, כמקובל ביישומי יוניקס, אך בנוסף גם תמרכז את השורה הנוכחית.

פס הגלילה
‾‾‾‾‾‾‾‾‾
כאשר אנו עורכים מסמך ארוך נוכל להיעזר בפס הגלילה כדי לדעת את מקומנו היחסי במסמך. פס הגלילה אינו מוצג בברירת המחדל ויש להזמינו באמצעות תת התפריט "Scrollbar" אשר בתפריט "Display" או באמצעות האופציה ‎`--scrollbar'‎.

קיפול פסקאות (wrap)
‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
כיצד מציג גרש פסקאות הארוכות מרוחב המסך? גרש מציע לבחירת המשתמש שלוש אפשרויות (מלבד אפשרות "יישור אוטומטי", שתתואר בהמשך):

1. המשך הפסקה יופיע "מעֵבר" לגבול המסך ויהיה צורך לגלול אופקית כדי לקרוא אותו (מקובל לכנות זאת wrap=off). כאשר הפסקה ממשיכה מעבר לגבול המסך, יופיע הסימן "$" בנקודת הקטיעה (אפשר לשנותו בעריכת מפת ה"ייצוג"). האינדיקטור יציג "$".

2. הפסקה "תקופל" ותשתרע על פני מספר שורות־מסך. גרש לא ישבור מלים לצורך הקיפול. זו ברירת המחדל. האינדיקטור יציג "-".

3. הפסקה "תקופל" ותשתרע על פני מספר שורות־מסך. גרש כן ישבור מלים לצורך הקיפול, ובמקום הקיפול, על גבול המסך, יופיע הסימן "/". האינדיקטור יציג "/".

שינוי אופן התצוגה נעשה בהקשת M-w, באמצעות האופציה ‎`--wrap'‎, או באמצעות תפריט "Display".

יישור אוטומטי
‾‾‾‾‾‾‾‾‾‾‾‾‾
דרך אחרת להתמודד עם שורות (=פסקאות) ארוכות היא "יישור אוטומטי". זהו התרגום העברי, וקרוב לוודאי השגוי, של המונח האנגלי justification/auto-justify, הגם־כן שגוי, אבל מכיוון ש־pico משתמש בו, גם אני משתמש בו. ב־emacs הדבר נקרא auto-fill.

כאשר מצב auto-justify פעיל, אזי כאשר המשתמש מקליד טקסט שגורם לשורה (=לפסקה) להתארך מעבר לאורך מקסימלי מסוים, הקרוי "עמודת היישור" (justify column), השורה (=הפסקה) תתפצל לשתיים כדי לא לחרוג מאותו אורך.

הפעלה וביטול של מצב auto-justify נעשים בהקשת M-J (שים לב: אות "J" גדולה, לא קטנה) או באמצעות האופציה ‎`--auto-justify'‎; שינוי עמודת היישור בהקשת C-M-j. כל פקודות אלה מצויות גם תחת תפריט "Edit".

ניתן "ליישר" פסקה שלמה בהקשת C-j. הפקודה תעבוד גם כאשר מצב auto-justify לא פעיל. לאחר ביצוע היישור הסמן ידלג לסוף הפסקה וניתן יהיה להמשיך ולהקיש C-j כדי ליישר את שאר המסמך.

חשוב להבין שהעובדה שגרש תומך ב"יישור" לא אומרת שאתה חייב להשתמש בזה. יש להשתמש ב"יישור" רק אם יש בכך צורך, ואם אתה לא רואה את הצורך, סימן שאתה לא צריך ליישר (או שאתה לא יודע מה אתה עושה :-). הקונספציה של שבירת שורות תיראה משונה למדי למשתמשי MS-Windows, אבל היא דבר מקובל בעולם של יוניקס.

יש המקפידים להגביל את אורך השורות בהודעות דואר, אבל כדאי להיות מודעים לפורמט flowed, המתואר ב־RFC 2646. כדי להקל על עריכת הודעות דואר בפורמט זה, גרש שומר את הרווחים בסופי השורות כאשר הוא מיישר פסקאות. אם אינך מעוניין לשמור את הרווחים, השתמש באופציה ‎`--rfc2646-trailing-space'‎.

בדיקת איות
‾‾‾‾‾‾‾‾‾‾
גרש יודע לבדוק איות באמצעות המאיית ispell, או באמצעות כל מאיית אחר המממש את פרוטוקול ispell-a. דוגמאות למאייתים כאלה הם aspell, המסופק עם הפצות רבות של לינוקס, והמאיית העברי hspell, לו מוקדש סעיף נפרד במסמך זה.

גרש מהווה את הממשק הגרפי של המאיית: כאשר המאיית מוצא מלה שאיותהּ שגוי, גרש מבליט (highlight) את המלה על המסך ומציג למשתמש תפריט ובו הצעות לאיות חוקי של המלה, אם המאיית מוצא כאלו.

אם מותקן במחשבך המאיית העברי hspell, גרש יזהה אותו ותהיה פטור ממלאכת הקינפוג. במקרה זה תוכל לדלג ישר לסעיף "עבודה עם המאיית".

כדי שגרש יוכל לתקשר עם המאיית, על המשתמש לספק לו שני פרטי מידע:

1. הפקודה המשמשת להרצת המאיית, לדוגמה ‎"/usr/bin/ispell -a"‎.

2. הקידוד שבו יתקשר גרש עם המאיית, לדוגמה "ISO-8859-1".

נושא ה"קידוד", בהקשר של בדיקת איות, ייתכן שיהיה חדש לרוב המשתמשים, כי רובנו (משתמשי לינוקס/יוניקס) רגילים לבדיקת איות באנגלית בלבד -- שפה שממילא מיוצגת בכל הקידודים הנפוצים בצורה זהה, ולכן נדון בו תחילה.

עורכי טקסט ישנים היו מאחסנים בזיכרונם כל תו ב־byte אחד, והיו שולחים את הטקסט למאיית כמות שהוא. כיום, עורכי הטקסט המודרניים תומכים ב־Unicode, ואילו רוב המאייתים ממשיכים "לדבר" בשפה המצומצמת של byte אחד עבור כל תו. מסיבה זו עורך טקסט מודרני מאפשר למשתמש לציין את הקידוד שבו תתבצע התקשורת עם המאיית. לשפות שונות -- יוונית, תורכית, ערבית, עברית -- יש קידודים שונים במשפחת ISO-8859, ושפה אחת בד"כ לא ניתן לייצג בקידוד המיוחד לשפה אחרת.

ברירת המחדל של גרש היא פקודת המאיית "ispell -a" וקידוד "ISO-8859-1". ברירות מחדל אלה מתאימות אך ורק לשפות לטיניות, כדוגמת צרפתית, איטלקית וספרדית, ולא לשפות כעברית, רוסית וערבית.

את פקודת המאיית יש לציין באמצעות האופציה ‎`--speller-cmd'‎, ואת קידוד המאיית יש לציין באמצעות האופציה ‎`--speller-encoding'‎. לדוגמה, אם נרצה להשתמש במאיית העברי hspell, נפעיל את גרש כך:

$ geresh --speller-cmd="hspell -a -n -i" --speller-encoding=iso-8859-8

(מוטב, כמובן, לכתוב את האופציות הללו בקובץ gereshrc ולא להקלידן שוב ושוב עם הפעלת גרש. לפרטים נוספים, ראה סעיף "הקובץ gereshrc".)

את פקודת המאיית ואת קידודו ניתן להזין גם בצורה אינטראקטיבית, מתוך גרש. לפרטים נוספים, ראה סעיף "טעינה והסרה של המאיית".

בחירה שגויה של הקידוד תגרום ברוב המקרים לפעולתו המשובשת של המאיית. לדוגמה, אם נשמיט את האופציה ‎`--speller-encoding'‎ בדוגמה שהובאה לעיל, גרש לא ישלח למאיית אותיות עבריות, משום שלא ניתן לייצגן בקידוד ברירת המחדל (ISO-8859-1), וכתוצאה מכך המאיית העברי לא ידווח על שום שגיאות איות במלים עבריות.

הדוגמה ההפוכה קיימת גם כן: אם בקובץ gereshrc ציינו את ISO-8859-8 כקידוד המאיית, אולם בשורת הפקודה ציינו את "ispell -a" כפקודת המאיית, המאיית יתריע על שגיאת איות בכל מלה עברית, כי מנקודת מבטו מדובר באותיות לטיניות למהדרין.

עבודה עם המאיית
‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
כדי לפתוח בבדיקת איות המסמך עומדות לרשות המשתמש שלוש פקודות:

1. כדי לבדוק את איות המסמך כולו נקיש F5.

2. כדי לבדוק את איות המסמך החל מהמלה עליה עומד הסמן ועד סוף המסמך נקיש F6.

3. כדי לבדוק רק את איות המלה עליה (או מיד אחריה) עומד הסמן נקיש M-$‎.

בסיום הבדיקה חוזר הסמן למקומו המקורי, אלא אם כן הפסקנו את הבדיקה באמצעות C-c או C-g או פעמיים ESC (מקשים המשמשים בגרש לביטול פעולות), שאז ימוקם הסמן במקום שגיאת האיות האחרונה. הקשת F6 תמשיך את בדיקת האיות ממקום הסמן.

כאשר גרש נתקל בשגיאת איות, נפתח חלון בתחתית המסך ובו רשימה של הצעות לאיות נכון למלה השגויה. לצד כל הצעה מוצג מספר מ־1 עד 9, או תו אחר, שהקשה עליו תגרום לקבלת ההצעה. עוד מוצגת בחלון שורת עזרה המפרטת את הפקודות האפשריות:

1. מקש הרווח מאפשר להתעלם כעת מהמלה השגויה ולהמשיך הלאה בבדיקת האיות.

2. מקש 'r' מאפשר לערוך ידנית את המלה השגויה. הדבר שימושי במקרים בהם המאיית לא מציע איות נכון למלה.

3. מקש 'a' מוסיף את המלה ל"מילון האישי" שלנו. זהו בד"כ קובץ טקסט טהור בספריית הבית של המשתמש (והוא באחריותו של המאיית, לא של גרש). המאיית יכיר כנכונה כל מלה המופיעה במילון האישי.

4. מקש 'g' גורם לכך שהפקודה שנבצע מיד אח"כ תתבצע אוטומטית גם בעתיד. למשל, במקום להקיש שוב ושוב על מקש הרווח כדי להתעלם ממלה מסוימת, נקיש 'g' ואח"כ על מקש הרווח כדי להתעלם מהמלה המסוימת הזו למשך כל מושב העריכה (בדומה לפעולת "Ignore All" של עורכים אחרים). הקשת 'g' תקֵיפה גם לגבי בחירת איות שמציע המאיית למלה שגויה מסוימת (בדומה לפעולת "Replace All" של עורכים אחרים).

ניתן לבטל את התיקונים שעשינו במסמך באמצעות פקודת החרטה (undo). הקשה על C-u תבטל את השינוי שעשינו במלה האחרונה. יש להמשיך ולהקיש C-u כדי לבטל את כל השינויים.

לדוגמה, אם במהלך בדיקת איות טעינו ובחרנו איות לא מתאים שהציע המאיית, נקיש C-c כדי לעצור את פעולת המאיית, נקיש C-u כדי לבטל את השינוי שנעשה במלה האחרונה (הסמן יחזור למלה זו), ונקיש F6 כדי להמשיך ולבדוק את איות המסמך ממקום הסמן.

טעינה והסרה של המאיית
‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
האות 'S', למטה בשורת הסטטוס, מודיעה לנו שהמאיית טעון (loaded) וממתין ברקע לפניות גרש. בדומה ל־emacs, גרש אינו מסיר אוטומטית את הליך (process) המאיית בסיום סריקת המסמך. הדבר שימושי במיוחד כאשר אנו משתמשים במחשב אטי שבו טעינת המאיית אורכת שניות רבות.

גרש מאוד גמיש בכל הנוגע לטעינה ולהסרה של המאיית: הקשה על M-S (שים לב: אות "S" גדולה, לא קטנה) מאפשרת לנו להסיר (unload) את המאיית מהזיכרון. הקשה על M-S כאשר המאיית אינו טעון מאפשרת לנו לערוך את שורת הפקודה של המאיית (command line) ואת קידודו ואח"כ לטעון את המאיית. כך ניתן לשנות, מתוך גרש, את צורת הפעולה של המאיית. לדוגמה, מאייתים רבים מכירים מסמכים מסוגים שונים, כגון HTML, TeX ו־Email, ובחירת הסוג נעשית באמצעות ארגומנטים של שורת הפקודה.

המאיית העברי hspell
‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
‏hspell הוא מאיית עברי חופשי מצוין, היחיד מסוגו, שנכתב ע"י נדב הראל ודן קניגסברג. הכל על hspell ניתן לקרוא ב:

<http://www.ivrix.org.il/projects/spell-checker/>

אם גרש מגלה ש־hspell מותקן במערכת (ע"י מציאת תוכנית השירות multispell ב־PATH), ואם המשתמש לא ציין מפורשות את פקודת המאיית, גרש ישתמש ב־hspell עם כל ההגדרות הנכונות (כמו קידוד), כך שנחסך ממך הצורך לקנפג את גרש בעצמך.

נכון לזמן כתיבת שורות אלה, hspell (גרסה 0.8) עדיין לא תומך ב"מילון אישי", ולכן בפעם הבאה שנפעיל את גרש נגלה ש־hspell מדווח כשגויות מלים שבעבר כביכול הוספנו למילון.

גרש אינו שולח למאיית מילים מְנֻקָּדוֹת, כדי לא לבלבל את hspell, ואת המקף העברי, שאותו לא ניתן לייצג ב־iso-8859-8, הוא שולח כתו ASCII "מינוס" (hspell יודע לנצל תו זה).

צביעה תחבירית
‾‾‾‾‾‾‾‾‾‾‾‾‾
עורכי טקסט מודרניים יודעים לצבוע את הטקסט המוצג על המסך בהתאם למבנה התחבירי שלו. כאשר נערוך טקסט בשפת "C", יוצגו הערות, לדוגמה, בצבע שונה מטקסט שאינו הערות, וכאשר נערוך טקסט בשפת HTML, יוצגו תגי ה־HTML בצבע שונה מאשר הטקסט המוכל בתוכם. צביעה זו נקראת "צביעה תחבירית" (syntax highlighting) והיא כלל וכלל אינה למטרות אסתטיות, אלא למטרות תועלתיות: הצביעה מקלה על המשתמש להבחין במבנה התחבירי של הטקסט וכך מגבירה את הפרודוקטיביות של המשתמש.

גרש תומך כעת בצביעה תחבירית של HTML ושל הודעות דואר. גרסאות קודמות של גרש לא תמכו בזאת, אך במהלך הזמן נוכחתי לדעת שצביעה תחבירית של שני מבנים אלה, ובעיקר של HTML, היא דבר שלא ניתן לוותר עליו. גרש אינו תומך בצביעה תחבירית של מבנים אחרים (כגון C, Java, PHP), משום שהוא עורך טקסט פשוט, ומן הסתם אף אחד לא ישתמש בו לעריכת קוד מקור של תוכניות מחשב.

כאשר גרש סבור שהטקסט הוא מסוג HTML, הוא יציג בהבלטה את התגים. גרש יודע לזהות רק תגים המתחילים ומסתיימים באותה שורה. זה אומנם חסרון, אבל זה עדיף מכלום (זכור שצביעה תחבירית אינה למטרות אסתטיות, אלא לתועלת בלבד, ולכן החסרון הזה אינו משמעותי במיוחד, לדעתי). כאשר גרש סבור שהטקסט הוא הודעת דואר, הוא יציג בהבלטה כל שורה הפותחת בתו ">" (עם רווחים אפשריים לפניו).

איך יודע גרש מהו סוג הטקסט? אם מצב זיהוי אוטומטי מופעל (זוהי ברירת המחדל), גרש יזהה כ־HTML כל קובץ אשר שמו מכיל את המחרוזת "htm." או "HTM.", וכן כל טקסט המכיל את המחרוזת "HTML>" או "html>" ב־5 השורות הראשונות שלו. כהודעת דואר יזוהה כל טקסט אשר לפחות 2 מתוך 10 השורות הראשונות שלו פותחות בתו ">" (עם רווחים אפשריים לפניו).

אם מצב זיהוי אוטומטי אינו מופעל, ניאלץ לומר לגרש מפורשות מהו סוג הטקסט.

השליטה בצביעה התחבירית נעשית באמצעות תת־תפריט "Syntax Highlighting" אשר בתפריט "Display". קיימות גם אופציות של שורת פקודה.

הדגשת *טקסט* ו_טקסט_
‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
הדגשה של טקסט באמצעות תווי "*" או "_" היא מנהג עתיק יומין המקובל בכל מקום בו מנוהלת תכתובת בטקסט טהור, כמו בדואר אלקטרוני וב־newsgroups.

גרש, בברירת מחדל, יציג בהבלטה (ע"י קו תחתי -- אך תוכנות מסוף שונות מתוכנתות להציג זאת באופנים שונים) כל טקסט התחום בשני תווים אלה. השליטה באפשרות זו נעשית גם כן באמצעות תת התפריט "Syntax Highlighting". קיימת גם אופציה של שורת פקודה.

אם משני צידי התו המשמש להדגשה מצויים תווי RTL אלפא־נומריים, ההדגשה לא תתבצע, וזאת כדי למנוע הדגשה בלתי־רצויה של טקסט כמו "http‎://host/show_bug.cgi" או "ticks_per_seconds". אין סייג כזה לגבי תווים אלפא־נומריים בעברית, כי בעברית נהוגות אותיות שימוש המצטרפות למלים (דוגמה בכותרת של סעיף זה), ולכן אפשרי מצב בו אותיות עבריות מצויות משני צידי התו המשתמש להדגשה.

ערכות צבעים
‾‾‾‾‾‾‾‾‾‾‾
רבות מתוכנות המסוף של יוניקס לא מאפשרות למשתמש לשנות את הצבעים בהם נעשה שימוש על המסך; רבות מהן כלל אינן משתמשות בצבעים. גרש אינו כזה. גרש מגיע עם מספר ערכות צבעים לבחירתך (אם מוכר לך המונח themes או color schemes מתוכנות אחרות, דע שמדובר באותו דבר), ואם לא תמצא בהן אחת לטעמך, תוכל ליצור ערכה אישית משלך.

ערכות הצבעים מוגדרות בקבצים בעלי סיומת "thm" הנמצאים בספריית ‎/usr/share/geresh/themes/‎ או בספריית ‎$HOME/.geresh/themes/‎ (הפעל את גרש עם האופציה ‎`-V'‎ כדי לגלות את המיקום המדויק). הכלל הוא שקובץ הנמצא בספריית הבית "יסתיר" קובץ בעל שם זהה הנמצא בספריה השיתופית (כלל זה נכון, אגב, גם לגבי כל שאר קובצי ההגדרות של גרש).

שינוי ערכת הצבעים הפעילה נעשה באמצעות תת התפריט "Color scheme" אשר בתפריט "Display". קיימת גם אופציית שורת הפקודה ‎`--theme'‎ (וראה גם סעיף "הקובץ gereshrc").

ערכת ברירת המחדל היא default.thm עבור מסופים צבעוניים ו־default_bw.thm עבור מסופים שאינם צבעוניים.

חלק מהערכות הנן transparent (לרוב הדבר מצוין בסוגריים לצד שמן). פירוש הדבר הוא שצבע הרקע (ולרוב גם צבע הטקסט) של תיבת העריכה הוא צבע הרקע של המסוף ולאו דווקא הצבע השחור. מצב זה, בו צבע הרקע וצבע הטקסט של המסוף אינם שחור ולבן, בהתאמה, שכיח בעיקר בתוכנות אמולצית מסוף תחת X (כגון xterm). חלק מתוכנות אמולצית המסוף מסוגלות גם להציג תמונה ברקע, וכאשר נשתמש בערכת transparent נוכל לראות אותה מאחורי הטקסט.

למידע על פורמט קובצי ה־"thm", עיין בקובץ README.themes.

תקשורת עם תוכנות אחרות
‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾

הפעלת עורך חיצוני
‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
מכיוון שגרש הנו עורך טקסט פשוט למדי, נרצה מדי פעם לעבור לעורך טקסט משוכלל יותר, כגון Vi או Emacs, כדי לבצע מטלות עריכה מורכבות שאינן אפשריות בגרש.

גרש מאפשר לך לעבור לעורך הטקסט החביב עליך בלחיצת מקש. להלן נכנה עורך זה "עורך חיצוני" או סתם "עורך". שמו של הקובץ שעליו אתה עובד יועבר כפרמטר לעורך החיצוני, וכשתסיים את עבודתך בו, תוחזר לגרש והקובץ ייטען מחדש מהדיסק.

הפעלת העורך החיצוני נעשית בלחיצה על F8 או על M-F8. הפקודות הללו מצויות גם תחת תפריט "File" (ראה "Launch external editor"). לחיצה על M-F8 תאפשר לך להזין את פקודת העורך, ואילו לחיצה על F8 תשתמש בפקודת העורך שכבר הזנת קודם. את פקודת העורך ניתן לציין גם באמצעות אופצית שורת הפקודה ‎`--external-editor'‎ (וראה גם סעיף "הקובץ gereshrc").

הערה: המקשים M-F1 עד M-F12 משמשים ב־console של Linux ו־FreeBSD למעבר בין virtual terminals, ולכן במקום M-F8 יש ללחוץ על ESC ואח"כ על F8.

אם לא ציינת את פקודת העורך, ייקבע עורך ברירת המחדל כדלקמן:

1. תוכן משתנה הסביבה EDITOR, אם זה קיים; או

2. gvim, אם התוכנית נמצאת ב־PATH ואם משתנה הסביבה DISPLAY קיים; או

3. התוכנית הראשונה שתימצא ב־PATH, בסדר זה: vim, emacs, pico, vi.

הפעלת עורך חיצוני: מידע נוסף
‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
כל העורכים שצוינו לעיל מסוגלים לקבל כפרמטר את השורה בה ימוקם הסמן מיד לאחר פתיחת הקובץ. ואכן, אם גרש מוצא שפקודת העורך מכילה אחת מהמחרוזות לעיל (‎"vim", "emacs", "pico, וכו'), הוא יוסיף לה גם את אופצית שורת הפקודה שתמקם אותך בשורה שבה היית בגרש. למשל, אם פקודת העורך היא "vi", יריץ גרש את הפקודה:

vi +12 filename.txt

ולא סתם:

vi filename.txt

(הנחנו, כמובן, שאתה עומד על שורה מספר 12.)

ל־vim (ולווריאציות השונות שלו, כגון gvim) מעניק גרש טיפול מיוחד. אם גרש מוצא את המחרוזת "vim" איפושהו בפקודת העורך החיצוני, גרש יוסיף לפקודה את ההנחיה הדרושה למיקום הסמן גם בעמודה בה היה, וכן הנחיות שיאפשרו לגרש עצמו למקם את הסמן במקום בו היה בעורך החיצוני עם תום העבודה בו. ה"קסם" הזה נעשה ע"י הפעלת vim באופן הבא:

vim -c YYY -c "normal 0" -c "normal XXXl" \
    -c "au BufUnload filename.txt call \
        system('echo '.line('.').' '.col('.').' >/tmp/fileMtMJvy')" \
    filename.txt

כאשר YYY ו־XXX מייצגים את מיקום הסמן (שורה ועמודה) ו־filename.txt את שם הקובץ.

הפקודה הנ"ל חושפת מנגנון שאותו מציע גרש לשימושם של אלה הרוצים לשמור על מיקום הסמן במעבר אל העורך החיצוני, וממנו אל גרש. פרטי המנגנון:

לפני שגרש קורא לעורך החיצוני הוא כותב אל קובץ מסוים (קובץ זמני, בדר"כ בספריית ‎/tmp) את מספר השורה והעמודה בהם עומד הסמן. גרש יוצר משתנה סביבה בשם GERESH_CURSOR_FILE המכיל את נתיבו של הקובץ. רק אח"כ קורא גרש לעורך החיצוני. לאחר שמסתיימת העבודה עם העורך החיצוני קורא גרש את הקובץ הנ"ל וממקם את הסמן על פיו. הכוונה היא ש־script מצד העורך יעשה שימוש בקובץ זה כדי למקם את הסמן במקום המתאים מיד עם פתיחת הקובץ, או כדי ליידע את גרש אודות המיקום בו היה הסמן טרם עזיבת העורך.

צינורות
‾‾‾‾‾‾‾
צינור (pipe) הוא הליך (process) שאליו התוכנה שלנו מזינה מידע (קלט), או שממנו היא קוראת מידע (פלט). בכל מקום שבו ניתן לציין שם קובץ אפשר גם לציין צינור: פקודה של מערכת ההפעלה הפותחת בתו "|". התו "|" מיידע את גרש שמדובר בפקודה שעליו להריץ ולא בקובץ שעליו לפתוח.

ניתן להשתמש גם בתו "!" במקום ב־"|". השימוש בתו "!" מקובל בעורכים המסורתיים vi ו־ex (במדריך זה העדפתי להשתמש דווקא ב־"|" כדי שהמשתמש לא יסבור בטעות שמדובר במשפטי קריאה).

נדגים את ההבדל בין קובץ לבין צינור בעזרת דוגמה: אם נקיש M-r (פקודת "הכנס קובץ") ונקליד כשם הקובץ "date", גרש יכניס את תוכן הקובץ ששמו date אל החוצץ; אולם אם נקליד "‎|date", גרש יריץ את פקודת מערכת ההפעלה date ויכניס את הפלט שלה (התאריך הנוכחי) אל החוצץ.

גרש תמיד מתַקשר עם הצינור בקידוד UTF-8. אם התכנית שבה אתה משתמש מצפה לקידוד אחר, השתמש בתכניות כדוגמת iconv או recode לביצוע ההמרה.

(בשל הנאמר לעיל, אם נקליד "‎|date" כאשר LANG מוגדר כ־he_IL, גרש ינסה להמיר טקסט עברי המקודד ב־ISO-8859-8 (שמות הימים והחודשים) כאילו היה מקודד ב־UTF-8 והדבר יגרום לו להיכשל. כדי לפתור את הבעיה, נקליד "‎|LC_ALL=C date" או "‎|date|iconv -f iso-8859-8 -t utf-8")

אם טעינו בהקלדת הפקודה והתוכנית שהרצנו גרמה לקשקוש התצוגה, נקיש C-l כדי לרענן את המסך.

ה־clipboard של X11
‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
אחד היתרונות בעבודה תחת X11 הוא היכולת להעביר בקלות טקסט מיישום אחד לאחר באמצעות ה־clipboard (להלן: סלסלה). גרש אינו תומך ישירות בסלסלה, אך אפשר לגשת אליה בעקיפין באמצעות הכלים שגרש מספק.

גרש מאפשר לכתוב בלוק (selection) אל קובץ (C-w), והוא גם מאפשר להכניס קובץ אל החוצץ (M-r). נניח שמותקנת במערכת תכנית שירות בשם uclip, המעתיקה את הקלט שהיא מקבלת אל הסלסלה כאשר היא מופעלת עם האופציה ‎`-i'‎, ואשר מדפיסה את תוכן הסלסלה כאשר היא מופעלת עם האופציה ‎`-o'‎. מכיוון שגרש מאפשר לציין צינור במקום שם קובץ, נוכל לכתוב "‎|uclip -iu" ו־"‎|uclip -ou" במקום שם הקובץ לכתיבה ולהכנסה, בהתאמה, כדי להעתיק ולהדביק טקסט אל הסלסלה וממנה (האופציה ‎`-u'‎, שגם אותה ציינתי בפקודה, מנחה את uclip לבצע את הקלט והפלט בקידוד UTF-8, והדבר נחוץ משום שגרש תמיד מתקשר עם הצינור בקידוד זה).

מכיוון שלשורת הדיאלוג יש היסטוריה, אין צורך לכתוב שוב ושוב "‎|uclip -iu" ו־"‎|uclip -ou". די להקיש חץ למעלה כדי להחזיר את השורה האחרונה שהוזנה.

התכנית uclip אכן קיימת. כתב אותה עבדכם הנאמן, ותוכלו להורידה מהכתובת:

<http://www.typo.co.il/~mooffie/uclip/>

קיימות תכנות דומות נוספות, אך הייחוד של uclip הוא שהיא תומכת ב־Unicode/locale ולכן תומכת גם בעברית (בכל השפות, למעשה). תכנות אחרות שבדקתי לא תומכות בעברית.

גרש כ־pager
‾‾‾‾‾‾‾‾‾‾‾
לעתים נרצה להשתמש בגרש רק לשם צפייה בקבצים. מקובל לכנות תוכנה מסוג זה viewer או pager. בעזרת האופציה ‎`-R'‎ או ‎`-v'‎ נבטיח שלא ניתן יהיה לשנות את החוצץ (כלומר, מצב read-only). במצב זה ניתן לצאת מגרש גם בהקשה על 'q'. גרש מסופק עם סקריפט קטנטן (shell script) בשם pgeresh המאפשר לנו לכתוב פקודות כ:

$ ls | pgeresh | mail

הפקת פלט בעברית ויזואלית
‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
לאחר שנערוך מסמך בגרש ייתכן שנרצה להדפיסו או לשלחו כפקס. תכנות הדפסה ופקס במערכות יוניקס בד"כ אינן תומכות ישירות בעברית לוגית, אך ברוב המקרים אפשר להזין להן את המסמך בפורמט הידוע בכינוי "עברית ויזואלית". בפורמט זה העברית במסמך כבר הפוכה, כך שתוכנת היעד כבר אינה צריכה לתמוך באלגוריתם ה־BiDi, וכמו כן הפסקאות כבר שבורות לשורות המיושרות לימין באמצעות הוספה של תווי רווח בצידן השמאלי. במלים אחרות, תוכנת היעד מקבלת את הטקסט כשהוא כבר "לעוס".

כאשר גרש מופעל עם האופציה ‎`--log2vis'‎ (או, בשמהּ הקצר, ‎`-p'‎), גרש ימיר את המסמך הלוגי, ששמו צוין בשורת הפקודה, או שהוזן דרך stdin, למסמך בפורמט ויזואלי, שיכתב ל־stdout. מבחינת צורת ההפעלה הזו, גרש זהה לשאר הפילטרים (filters) במערכת יוניקס.

באופן כללי, הפלט הויזואלי יהיה דומה למה שיראה המשתמש על המסך אם יפעיל את גרש כרגיל (כתוכנה אינטראקטיבית). כל אופציות שורת הפקודה של גרש זמינות גם כאשר גרש מופעל כפילטר. למשל, ניתן להשתמש באופציה ‎`--dir-algo'‎ כדי לבחור את האלגוריתם שעל פיו תיקבע כיווניות הפסקאות, באופציה ‎`-f'‎ כדי לציין מפורשות את קידוד הקלט, ובאופציה ‎`-T'‎ כדי לקבוע את רוחב תווי ה־TAB. בנוסף, מספר אופציות רלוונטיות רק כאשר גרש מופעל כפילטר:

האופציה ‎`-w'‎ מאפשרת לקבוע את רוחב הפלט: את אורכן המקסימלי של השורות בו. פסקאות ארוכות ישברו (wrap) לשורות קצרות שייושרו לימין ע"י הוספת תווי רווח בצידן השמאלי. אם לא נציין את רוחב הפלט, גרש יקרא אותו ממשתנה הסביבה COLUMNS, ואם גם זה לא קיים, ברירת המחדל היא 80 תווים. אם נציין ‎`-w0'‎, לא תתבצע שבירת פסקאות.

האופציה ‎`-t'‎ מאפשרת לקבוע את קידוד הפלט. אם לא נציין את קידוד הפלט, הוא יהיה כקידוד הקלט. (אגב, גם לתכנית iconv אופציות בשם ‎`-t'‎ ו־‎`-f'‎, והן משמשות למטרה זהה. בכתיבת גרש השתדלתי להשתמש בשמות אופציות ובצירופי מקשים המקובלים בתכנות אחרות כדי להקל על זכירתם.)

האופציה ‎`--log2vis-options'‎ (או, בשמהּ הקצר, ‎`-E'‎), מאפשרת להעביר לגרש הנחיות לצורך שליטה רבה יותר על תהליך ההמרה. למשל, ההנחיה "bdo" תדריך את גרש להוסיף תו LRO בתחילת כל שורה ותו PDF בסופה. הנחיה זו שימושית במקרים בהם נרצה לנטרל את תמיכת ה־BiDi, אם קיימת, בתוכנת היעד שאליה אנו מזינים את הפלט הויזואלי (למשל, בתכנית uniprint של Yudit בגרסאותיה האחרונות).

הדוגמה הבאה מראה איך להפיק קובץ postscript מהקובץ mydoc.txt:

$ geresh --log2vis --log2vis-options=bdo -w 50 \
          -t utf-8 mydoc.txt > mydoc_vis.txt
$ uniprint -font courier.ttf -left \
          -in mydoc_vis.txt -out mydoc.ps

בדוגמה השתמשנו בתכנית uniprint, שהיא חלק מחבילת Yudit, כדי להפיק את קובץ ה־postscript. יש לשים לב לארבעה דברים: השתמשנו בהנחיה "bdo" כי ב־uniprint כבר יש תמיכה ב־BiDi, תמיכה שדווקא תגרום לעיוות לא־רצוי של הטקסט. מסיבה דומה השתמשנו באופציה ‎`-left'‎ של uniprint כדי שהתוכנה לא תיישר שורות המכילות תווים בעברית לימין. כמו כן השתמשנו בפונט בעל ריווח קבוע, courier.ttf. (אם נרצה להשתמש בפונט בעל ריווח יחסי, נשתמש באופציה ‎`-right'‎ של uniprint, אך התוצאה לא תהיה מוצלחת במיוחד, כי כאשר גרש חותך פסקאות לשורות הוא עושה זאת על פי מספר התווים (ליתר דיוק, combining-characters רוחבם 0 ו־wide-characters רוחבם 2) ולא על פי רוחבם בפונט בו אנו עתידים להשתמש; גרש אינו יודע דבר על פונטים.) לבסוף, השתמשנו באופציה ‎`-t'‎ כדי לומר לגרש לכתוב את הפלט בקידוד UTF-8 גם אם הקלט אינו כזה, כי זה מה ש־uniprint מצפה לקבל.

לקבלת רשימת כל האופציות וההנחיות שגרש מקבל, הפעל את גרש עם האופציה ‎`-h'‎.

קו תחתי בפלט הויזואלי
‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
לעתים מתעורר הצורך להדגיש מלה או קטע מסוים בקו־תחתי כאשר אנו מדפיסים מסמך. אמנם, מעבדי תמלילים מודרניים מאפשרים לעשות הרבה יותר: לשנות את עובי האותיות, את גודלן ואת צבען, אולם אנו נדון רק בקו־תחתי, שהוא המינימום הדרוש להדפסת מסמכים, והוא במסגרת האפשר באמצעים הטכניים הפשוטים העומדים לרשותנו.

שתי דרכים למתוח קו תחתי:

1. להזין לטקסט את התו U+332, שהוא גליף "קו־תחתי" ברוחב אות אחת. תו זה מטבעו אינו שונה מסימני הניקוד ומהסימנים הדיאקריטיים. החסרונות בשיטה זו: (1) אנו "הורסים" את המלים כאשר אנו מפרידים בין אותיותיהן בתווים זרים; (2) זוהי מלאכה מיגעת: נצטרך להזין את התו עבור כל אות שתחתיה נרצה למתוח קו, ואם נחליט שאיננו רוצים קו תחתי, נצטרך למחוק את התווים.

2. ניתן להנחות את גרש להוסיף בעצמו את התו U+332, בשעת ההמרה הויזואלית, לכל התווים הנמצאים בין שתי כוכביות. למשל, *המלה* הזו תופיע בפלט הויזואלי עם קו תחתי. אם אחרי הכוכבית הראשונה מצוי תו רווח, גרש יתעלם מהכוכבית. זה משום שלעתים משתמש מקליד כוכבית בתחילת פסקה כדי לציין סעיף חדש (bullet). ניתן להשתמש גם בתו "_" במקום בכוכבית. למעשה, גרש גמיש יותר ממה שהוסבר כרגע: גרש מאפשר למשתמש לבחור את התו שישמש לסימון וגרש מאפשר לבחור את התו, הגליף, שישמש כדי להפיק קו־תחתי. למשל, אם בטקסט שלנו כבר עשינו שימוש רב בכוכביות למטרות אחרות, נוכל להנחות את גרש להתייחס דווקא לתו "^" כאל תו התוחם קטע מודגש, ואם בפונט שבו אנו מדפיסים את המסמך לא מצוי גליף עבור התו U+332, נוכל להנחות את גרש להשתמש, לדוגמה, בתו U+5B7, שהוא סימן הניקוד העברי "פתח".

את ההנחיות הללו יש להעביר לגרש באמצעות האופציה ‎`--log2vis-options'‎. כדי להנחות את גרש למתוח קו־תחתי, יש להעביר את המחרוזת "emph" (קיצור של emphasize); ניתן להצמיד למחרוזת זו שני מספרים, המופרדים בנקודתיים: הראשון קובע את מספרו של התו שהגליף שלו ישמש להפקת הקו־התחתי, והשני הוא מספרו של התו שישמש לסימון המלה או הקטע המודגש. דוגמה:

$ geresh --log2vis --log2vis-options=emph:0x5B7:0x5E,bdo -t utf-8 myfile.txt

בדוגמה לעיל בחרנו להשתמש בתו "^" לסימון (ערכו ההקסדצימלי 5E), ובסימן הניקוד העברי "פתח" (ערכו 5B7) להפקת קו־תחתי. בדוגמה השתמשנו גם בהנחיה "bdo", אך זאת רק כדי להדגים שניתן להעביר לגרש מספר הנחיות. בחרנו גם לכתוב את הפלט בקידוד UTF-8, כי אחרת קידוד הפלט יהיה כקידוד הקלט, ואם בקידוד זה לא ניתן לייצג את גליף הקו־התחתי שבו בחרנו, גרש ידפיס הודעת שגיאה ויעצור.

דוגמה נוספת, להרצה בחלון xterm:

$ echo "the following _word_ is underlined." | geresh -p -Eemph -tutf8

נסה להסיר את האופציה ‎`-tutf8'‎ (אשר שקולה ל־‎`-t utf-8'‎), והסבר את התוצאה.

הקובץ gereshrc
‾‾‾‾‾‾‾‾‾‾‾‾‾‾
כפי שראינו, לגרש הרבה פרמטרים שניתן לשנות (כמו רוחב TAB, עמודת יישור, קידוד ברירת מחדל) ולא מעט יכולות שאפשר להפעיל (enable) או לבטל (disable). כל זאת ניתן לעשות מתוך גרש עצמו, באמצעות שימוש בתפריט או בצירופי מקשים, אך גם באמצעות אופציות לשימוש בשורת הפקודה.

גרש מאפשר לנו לאחסן אופציות בקובץ ‎~/.geresh/gereshrc. כאשר אנו מאחסנים את האופציות בקובץ זה, אנו פטורים מהצורך לציינן בשורת הפקודה שוב ושוב. ניתן לכתוב כל אופציה בשורה נפרדת, כדי להקל על עצמנו את הבנת הכתוב, וניתן להקדים כל שורה בתו "#" כדי להפוך אותה להערה.

לקבלת רשימת האופציות המלאה שגרש מקבל, הפעל את גרש עם האופציה ‎`-h'‎.

בעת אתחולו קורא גרש אופציות, בסדר זה, מ:

1. מהקובץ ששמו מופיע במשתנה הסביבה geresh_RC. אם משתנה הסביבה או הקובץ לא קיימים, מהקובץ ‎~/.geresh/gereshrc, ואם גם זה לא קיים, מהקובץ ‎/usr/share/geresh/gereshrc.

2. משורת הפקודה.

3. ממשתנה הסביבה geresh_ARGS.

לקבלת רשימת הקבצים שגרש קורא, הפעל את גרש עם האופציה ‎`-V'‎.

[סוף]