summaryrefslogtreecommitdiff
path: root/etc/tutorials/TUTORIAL.he
blob: 2ee4f74c324cddf68fba1bddc97abda7d2fea7cd (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
שיעור ראשון בשימוש ב־‫Emacs‬. זכויות שימוש ראה בסוף המסמך.

פקודות רבות של Emacs משתמשות במקש CONTROL (בדרך־כלל מסומן ב־CTRL)
או במקש META (בדרך־כלל מסומן ALT). במקום לציין את כל השמות האפשריים
בכל פעם, נשתמש בקיצורים הבאים:

‏<תו>-C  משמעותו לחץ והחזק מקש CONTROL ואז הקש על מקש <תו>.
         לדוגמא, C-f משמעותו: לחץ והחזק CONTROL והקש על f.
‏<תו>-M  משמעותו לחץ והחזק מקש META או ALT ואז הקש על מקש <תו>.
         אם במקלדת אין אף אחד ממקשי META או ALT, אפשר להקיש
	 ולשחרר מקש ESC ואז להקיש <תו>. אנו נכתוב <ESC> עבור מקש ESC.

הערה חשובה: כדי לצאת מ־Emacs יש להקיש C-x C-c (שני תוים, משמאל לימין).
כדי להפסיק פקודה באמצע ההקשה, יש להקיש C-g.
כדי להפסיק שיעור זה, יש להקיש C-x k, ואז <Return> בתשובה לשאלה.
המחרוזת ">>" בקצה הימני מסמנת הוראות עבורכם כדי לנסות להשתמש בפקודה כלשהי.
לדוגמה:
<<שורות ריקות תתווספנה סביב השורה הבאה ע״י help-with-tutorial>>
[אמצע העמוד הושאר ריק למטרות לימודיות. הטקסט ממשיך להלן]
>>  הקישו עתה C-v (הצג העמוד הבא) על־מנת לגלול תצוגה לעמוד הבא. (קדימה,
    נסו זאת ע״י לחיצה והחזקה של מקש CONTROL והקשה על v.)
    מעתה והלאה, עליכם לעשות זאת בכל פעם שתסיימו לקרוא את המוצג על המסך.

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

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

דבר ראשון שעליכם ללמוד הוא כיצד לנוע ממקום אחד למשנהו בתוך הטקסט. אתם
כבר יודעים כיצד להתקדם לעמוד הבא, עם C-v. לחזרה לעמוד הקודם הקישו M-v
(החזיקו מקש META והקישו v או הקישו ‪<ESC>v‬ אם אין במקלדת מקש META
או ALT).

>>  נסו עתה כמה פעמים להקיש M-v ואחר־כך C-v.

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

* סיכום עד כאן
--------------

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

	‏C-v	התקדם לעמוד הבא
	‏M-v	חזור לעמוד הקודם
	‏C-l	נקה תצוגה והצג מחדש את הטקסט,
		כך שהטקסט ליד הסמן יימצא במרכז התצוגה
		(שימו לב: CONTROL-L ולא CONTROL-1.)

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

גם מקשי PageUp ו־PageDn, אם הם קיימים במקלדת שלכם, יכולים לשמש לתנועה
בעמודים שלמים, אולם השימוש ב־C-v ו־M-v יעיל יותר.

* תנועת סמן בסיסית
------------------

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

ניתן לעשות זאת בכמה דרכים. אפשר למשל להשתמש במקשי החצים, אולם יהיה
זה יעיל יותר אם תחזיקו את הידיים מעל החלק הסטנדרטי של המקלדת ותשתמשו
בפקודות C-p, C-b, C-f ו־C-n. פקודות אלו שוות ערך לארבעת מקשי החצים,
כדלקמן:

			שורה קודמת, C-p
				 :
			 	 :
	   קדימה, C-f ... מיקום סמן נוכחי ... אחורה, C-b
				 :
				 :
			השורה הבאה, C-n

>> השתמשו במקשי C-n ו־C-p על־מנת להגיע לשורה האמצעית של הדיאגרמה.
   הקישו C-l כדי למרכז את הדיאגרמה על־גבי התצוגה.

קל יותר לזכור את המקשים הללו באמצעות המלים שהם מייצגים:
P מ־previous (קודם), N מ־Next (הבא), B מ־Backward (אחורה)
ו־F מ־Forward (קדימה). מקשי התנועה הבסיסיים הללו ישמשו אתכם כל הזמן.

>> הקישו C-n כמה פעמים כדי למקם את הסמן בשורה זו.

>> הניעו את הסמן בתוך השורה עם C-f ואחר־כך למעלה עם C-p.
   שימו לב מה עושה C-p כאשר הסמן נמצא באמצע השורה.

כל שורה של טקטס מסתיימת בתו מיוחד הנקרא Newline. תו זה מפריד בין
השורה לזו שאחריה. (בדרך כלל, השורה האחרונה בקובץ תסתיים אף היא
ב־Newline, אך Emacs אינו זקוק לכך.)

>> נסו C-b בתחילת שורה. הוא יגרום לסמן לנוע לסוף השורה הקודמת. זאת,
   משום שהוא נע אחורה וחולף על־פני תו ה־Newline.

גם C-f יכול לחלוף על־פני Newline, בדיוק כמו C-b.

>> הקישו C-b עוד כמה פעמים כדי לקבל הרגשה היכן נמצא הסמן.
   עתה הקישו C-f מספר פעמים הדרוש לשוב לסוף השורה. ואז הקישו
   C-f עוד פעם אחת כדי לנוע לתחילת השורה הבאה.

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

>> נסו להניע את הסמן אל מחוץ לתצוגה ע״י הקשת C-n ושימו לב למה שקורה.

אם תנועה תו־תו איטית מדי, תוכלו לנוע מילים שלמות. M-f ‏(META-f) מזיז
את הסמן מילה אחת קדימה ואילו M-b זז מילה אחורה.

>> הקישו M-f ו־M-b מספר פעמים.

אם הסמן נמצא באמצע מילה, M-f זז לסוף המילה. אם הסמן נמצא בין שתי מלים,
M-f עובר את המילה הבאה ונעצר בסופה. M-b פועל באופן דומה בכיוון הפוך.

>> הקישו עתה M-f ו־M-b פעמים אחדות, וגם C-f ו־C-b פה ושם כדי שתוכלו
   להתרשם מהתוצאה של M-f ו־M-b במקומות שונים בתוך ובין המלים.

שימו לב להקבלה שבין C-f ו־C-b מצד אחד ו־M-f ו־M-b מהצד השני. לעתים
קרובות מאד מקשים עם META משמשים לפעולות הקשורות ליחידות של שפה (מלים,
משפטים, פסקאות) ואילו מקשים עם CONTROL פועלים על יחידות בסיסיות שאינן
תלויות בסוג הטקסט שהינכך עורכים (תוים, שורות, וכד').

ההקבלה הזאת קיימת גם לגבי שורות ומשפטים: C-a ו־C-e נעים לתחילת השורה
וסופה, בהתאמה, ואילו M-a ו־M-e נעים לתחילת המשפט וסופו.

>> נסו עתה שתי הקשות על C-a ואחר־כך שתי הקשות על C-e.
   נסו שני M-a ואחר־כך שני M-e.

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

מקום הסמן בתוך הטקסט נקרא "point" ("נקודה"). במלים אחרות, הסמן מראה
את מיקומו של "point" בתוך הטקסט.

הנה סיכום של פקודות פשוטות להנעת הסמן, כולל פקודות שנעות במלים
ומשפטים שלמים:

	‏C-f	נוע תו אחד קדימה
	‏C-b	נוע תו אחד אחורה

	‏M-f	נוע מילה קדימה
	‏M-b	נוע מילה אחורה

	‏C-n	נוע לשורה הבאה
	‏C-p	נוע לשורה הקודמת

	‏C-a	נוע לתחילת השורה
	‏C-e	נוע לסוף השורה

	‏M-a	נוע קדימה לסוף המשפט
	‏M-e	נוע אחורה לתחילת המשפט

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

שתי פקודות תנועה חשובות אחרת הן ‪M-<‬ ‏(META פחות), אשר נעה לתחילת
הטקסט, ו־‪M->‬ ‏(META יותר), אשר נעה לסוף הטקסט.

ברוב המקלדות המקש ">" נמצא מעל הפסיק, לכן כדי להקישו יש צורך ללחוץ
ולהחזיק מקש Shift. באופן דומה יש ללחוץ על Shift כדי להקיש ‪M-<‬ כי
אחרת היה יוצא M-פסיק.

>> נסו עתה ‪M-<‬ כדי להגיע לתחילת השיעור.
   אחר־כך הקישו C-v מספר פעמים, עד שתגיעו לכאן.

>> עכשיו נסו ‪M->‬ כדי להגיע לסוף השיעור.
   לאחר מכן הקישו M-v כמה פעמים כדי לחזור לכאן.

ניתן להזיז את הסמן גם בעזרת מקשי החצים, אם הם קיימים במקלדת שלכם.
אבל אנחנו ממליצים ללמוד להשתמש ב־C-b, C-f, C-n ו־C-p משלוש סיבות.
קודם כל, הם יעבדו עם כל מקלדת. שנית, כשתתרגלו לעבוד עם Emacs, תראו
כי השימוש במקשים אלו מהיר יותר מהשימוש בחצים (מכיון שאין צורך להזיז
את היד מהחלק העיקרי של המקלדת). ושלישית, כשהמקשים הללו יהפכו להרגל,
יהיה לכם קל יותר ללמוד פקודות מתקדמות יותר של תנועת הסמן.

רוב הפקודות של Emacs מקבלות ארגומנט נומרי; עבור רוב הפקודות הארגומנט
משמש כמונה של מספר החזרות על הפקודה. כדי לספק ארגומנט לפקודה, יש להקיש
C-u ואחר־כך ספרות, וזאת לפני שמקישים את הפקודה עצמה. עם במקלדת קיים
מקש META (או ALT), יש גם אפשרות אחרת לציין ארגומנט נומרי:
הקישו את הספרות תוך כדי החזקת מקש META. אנו ממליצים על C-u משום שהוא
יעבוד עם כל מקלדת. הארגומנט הנומרי נקרא גם "ארגומנט קידומת" (prefix
argument) משום מקישים אותו לפני הפקודה אליה הוא מתייחס.

למשל, C-u 8 C-f מניע את הסמן 8 תוים קדימה.

>> נסו להקיש C-n או C-p עם ארגומנט נומרי, כדי להזיז את הסמן אל שורה
   מסוימת בפקודה אחת בלבד.

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

‏C-v ו־M-v יוצאים מהכלל הזה באופן אחר. כשפקודות אלו מקבלות ארגומנט,
הן גוללים את התצוגה כמספר הזה של שורות, ולא בדפים. למשל, C-u 8 C-v
יגלול את התצוגה ב־8 שורות.

>> נסו עתה להקיש C-u 8 C-v.

כתוצאה, התצוגה היתה צריכה לזוז ב־8 שורות. אם ברצונכם לגלול בחזרה,
אפשר להשיג זאת ע״י מתן ארגומנט ל־M-v.

אם הפעלתם את Emacs על־גבי תצוגה גרפית כגון X או MS-Windows, אתם
צריכים לראות פס צר וגבוה, ששמו פס גלילה (scroll bar) בצידו של החלון
של Emacs. ניתן לגלול את הטקסט ע״י הקלקת עכבר בתוך פס הגלילה.

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

* אם Emacs מפסיק להגיב
----------------------

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

בנוסף, תגרום הקשת C-g לביטול הארגומנט הנומרי או תחילת הפקודה שטרם
השלמתם להקיש והתחרטתם.

>> הקישו C-u 100 כדי לציין ארגומנט של 100, ולאחר מכן C-g. עתה הקישו
   C-f. הוא צריך לנוע תו אחד בלבד, שכן ביטלתם את הארגומנט בעזרת C-g.

אם הקשתם <ESC> בטעות, ניתן לבטלו בעזרת C-g.

* פקודות מנוטרלות
-----------------

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

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

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

* חלונות
--------

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

	‏C-x 1	חלון אחד בלבד (כלומר, סגור את כל החלונות האחרים).

כדי להפעיל פקודה זו, הקישו CONTROL-x ולאחריו את הספרה 1. הפקודה C-x 1
מרחיבה את החלון המציג את הסמן כך שהוא תופס את כל שטח התצוגה. הפקודה
מבטלת את שאר החלונות.

>> הניעו את הסמן לתוך שורה זו והקישו C-u 0 C-l.
>> עתה הקישו C-h k C-f.
   שימו לב כיצד החלון הנוכחי מצטמצם ומופיע חלון חדש שבו מוצג
   התיעוד של הפקודה C-f.

>> הקישו C-x 1 ושימו לב שהחלון עם ההסבר על C-f נעלם.

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


* הכנסה ומחיקה
--------------

אם ברצונכם להכניס טקסט, פשוט הקישו על המקשים המתאימים. תוים רגילים,
כגון A, א, 7, * וכד' מיד מתווספים לטקסט הקיים. הקישו <Return> (מקש
חזרת גרר שלעתים נהוג לקרוא לו "Enter") כדי להכניס את תו השורה החדשה
(Newline).

למחיקת התו האחרון שהקשתם הקישו <DEL>. בדרך כלל זהו מקש שמסומן
ב־"Backspace", והוא משמש אתכם למחיקת התו אחרון גם בתוכניות אחרות, לא
רק ב־Emacs.

יתכן שבמקלדת שלכם קיים מקש שעליו רשום <Delete>, אך זה אינו המקש שאנו
קוראים לו <DEL>.

>> הקישו עתה מספר תוים, ואחר־כך מחקו אותם ע״י הקשות אחדות
   על <DEL>. אל תחששו לשנות את הקובץ הזה -- העותק המקורי
   של השיעור יישאר ללא שינוי. אתם עובדים על העותק האישי שלכם.

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

>> הקישו טקסט עד שתגיעו לקצה השורה, ואז תמשיכו להקיש עוד טקסט.
   כתוצאה, תראו שמופיעה שורת המשך.

>> עתה הקישו <DEL> על־מנת למחוק טקסט עד שהשורה תיעשה קצרה מספיק
   ותתאים לשורה בודדת על־גבי התצוגה. שורת ההמשך תיעלם.

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

>> הניעו את הסמן לתחילת השורה והקישו <DEL>. כתוצאה, השורה תתמזג
   אם קודמתה.

>> עתה הקישו <Return> כדי להחזיר את ה־Newline שמחקתם.

מקש <Return> הוא מיוחד בכך שהקשה עליו עשויה לגרום יותר מהכנסת תו
ה־Newline. בתלות בטקסט מסביב יתכן כי Emacs יכניס תווי רווח או TAB אחרי
תו ה־Newline, וזאת כדי ליישר את תחילת השורה החדשה עם הטקסט בשורה
הקודמת. התנהגות זו, שבה הקשה על מקש גורמת לתוצאות מעבר להכנסה פשוטה של
התו המתאים, נקראת "חשמלית" ("electric").

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

>> נסו זאת עכשיו -- הקישו ‪C-u 8 *‬ על־מנת להכניס ********.

ובכן, למדתם את האופן הבסיסי ביותר להדפיס משהו ב־Emacs ולתקן שגיאות.
אפשר למחוק גם מלים ואף שורות שלמות. להלן סיכום פקודות המחיקה:

	‏<DEL>		מחק תו שלפני הסמן
	‏C-d	        מחק תו מתחת או אחרי הסמן

	‏‪M-<DEL>‬	גזור מילה שלפני הסמן
	‏M-d	        גזור מילה שאחרי הסמן

	‏C-k	        גזור טקסט מהסמן ועד סוף השורה
	‏M-k	        גזור טקסט עד סוף המשפט הנוכחי.

שימו לב שהיחס בין <DEL> ו־C-d לעומת M-<DEL>‎ ו־M-d ממשיכים את ההקבלה
שבין C-f ו־M-f (אמנם <DEL> איננו תו בקרה, אבל בוא נזניח את הנקודה הזו
לעת־עתה). C-k ו־M-k דומים ל־C-e ו־M-e, אם נקביל שורות למשפטים.

בנוסף, קיימת שיטה אחידה שמאפשרת לגזור קטע כלשהו של טקסט. לשם כך, תגיעו
לקצה האחד של חלק הטקסט והקישו C-<SPC>‎. (<SPC> הוא מקש הרווח.) עתה
הניעו את הסמן לקצה השני של חלק הטקסט אשר ברצונכם לגזור. תוך כדי תנועת
הסמן Emacs צובע את הטקסט בין הסמן לבין המקום בו הקשתם C-<SPC>‎. לבסוף,
הקישו C-w. כתוצאה, כל הטקסט בין שני המקומות הללו ייגזר.

>> הניעו את הסמן אל האות ב בתחילת הפיסקה הקודמת.
>> הקישו C-<SPC>‎. ‏Emacs צריך להציג הודעה האומרת "Mark set" בתחתית
   התצוגה.
>> הניעו את הסמן אל האות צ בשורה השניה של הפיסקה.
>> הקישו C-w. בכך תגזרו את חלק הטקסט שמתחיל ב־ב ומסתיים לפני ה־צ.

ההבדל בין "מחיקה" ("deletion") ו־"גזירה" ("killing") הוא שהטקסט
"הגזור" ניתן לאחזור ולהכנסה (במקום כלשהוא בטקסט), ואילו טקסט "מחוק" לא
ניתן להכניס מחדש בשיטה זו. (אבל ניתן לבטל את מחיקה -- ראה להלן.) אחזור
הטקסט הגזור נקרא "הדבקה" ("yanking"). באופן כללי, פקודות אשר עלולות
להעלים כמויות גדולות של טקסט תמיד גוזרות את הטקסט (כך שניתן יהיה בקלות
לשחזרו) בעוד הפקודות שמורידות תו בודד או שורות ריקות ותוי רווח --
מוחקות (כך שלא ניתן להדביק את הטקסט שנמחק). כך, <DEL> ו־C-d מוחקים
כאשר מפעילים אותם ללא ארגומנט, אבל גוזרים כאשר מפעילים אותם עם ארגומנט.

>> הניעו את הסמן לתחילת שורה שאינה ריקה. אחר־כך הקישו C-k כדי לגזור
   את כל הטקסט של אותה שורה.
>> הקישו C-k פעם נוספת. שימו לב שהוא גוזר את ה־Newline שבסוף השורה.

שימו לב ש־C-k בודד גוזר את תכולת השורה, ו־C-k נוסף גוזר גם את השורה
עצמה וגורם לשאר השורות לנוע כלפי מעלה. C-k מפרש את הארגומנט הנומרי
באופן מיוחד: הוא גוזר כמספר הזה שורות, כולל ה־Newlines שלהן. זה שונה
מסתם הפעלה חוזרת: C-u 2 C-k גוזר שתי שורות כולל ה־Newlines שלהן,
ואילו הקשה על C-k פעמיים לא עושה כן.

אחזור הטקסט שגזרנו נקרא "הדבקה" ("yanking"). (תחשבו על זה כעל שליפה
של טקסט מתהום הנשייה אליה הוא נלקח.) ניתן להדביק את הטקסט שגזרתם
באותו מקום ממנו נגזר או במקום אחר כלשהו בתוך הטקסט שאתם עורכים, או
אפילו בקובץ אחר. ניתן להדביק את אותו הטקסט מספר פעמים ובכך ליצור
עותקים מרובים ממנו. תוכניות עריכה אחרות משתמשות במונחים "cutting"
ו־"pasting" במקום "killing" ו־"yanking" (ראה את מילון המונחים בפרק
ה־"Glossary" של מדריך למשתמשי Emacs).

הפקודה להדבקה היא C-y. היא מכניסה את הטקסט הגזור במקום הנוכחי של הסמן.

>> נסו זאת: הקישו C-y כדי לאחזר טקסט שגזרתם קודם לכן.

אם תקישו C-k מספר פעמים ברצף, כל הטקסט שגזרתם בדרך זו נשמר ביחד, כך
ש־C-y בודד ידביק את כולו בבת אחת.

>> עשו זאת עתה: הקישו C-k כמה פעמים.

עכשיו לאחזור הטקסט שגזרתם:

>> הקישו C-y. אחר־כך הניעו את הסמן כמה שורות כלפי מטה והקישו C-y שוב.
   כפי שראיתם, כך תוכלו להעתיק חלק מהטקסט ממקום למקום.

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

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

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


* ביטול פעולות
--------------

אם שיניתם את הטקסט ואז החלטתם שהשינוי היה טעות, תוכלו לבטל את השינוי
בעזרת פקודת הביטול, ‪C-/‬.

בדרך כלל,‪C-/‬ מבטל את השינויים שבוצעו ע״י פקודה אחת. הפעלה חוזרת של
‪C-/‬ ברצף מבטלת שינויים של פקודות קודמות, אחת אחרי השניה.

שני יוצאים מהכלל הזה: פקודות שאינן משנות טקסט (למשל פקודות הנעת הסמן
ופקודות גלילה) אינן נספרות ותוים שמכניסים את עצמם מקובצים בקבוצות של
עד 20, כדי להקטין את מספר הפעמים שיש להקיש ‪C-/‬ כדי לבטל הכנסת טקסט.

>> גזרו שורה זו עם C-k, אחר־כך הקישו ‪C-/‬ והיא תופיע שוב.

‏C-_‎ הינה דרך חלופית להפעיל את פקודת הביטול. היא פועלת בדיוק כמו ‪C-/‬.
במקלדות אחדות אפשר לא ללחוץ על shift כשמקישים ‏C-_‎.
במקלדות אחדות הקשה על ‪C-/‬ שולחת ל־Emacs את התו C-_‎.
חלופה נוספת היא C-x u, אם־כי היא פחות נוחה להקשה מספר פעמים בזו אחר זו.

ארגומנט נומרי ל־‪C-/‬ או ל־C-_‎ או ל־C-x u משמש כמספר החזרות על הפקודה.

ניתן לבטל מחיקה של טקסט בדיוק כמו שניתן לבטל גזירה. ההבדלים בין מחיקה
וגזירה משפיעים על יכולתכם להדביק את הטקסט הגזור עם C-y; הם אינם חשובים
לעניין הביטול.


* קבצים
-------

על־מנת שהטקסט שערכתם יישמר, יש לשים אותו בקובץ. אחרת, הוא ייעלם ברגע
שתצאו מ־Emacs. כדי לשים את הטקס בקובץ, יש "לפתוח" ("find") את הקובץ
לפני שמתחילים להקיש טקסט. (שם אחר לכך הוא "לפקוד" את הקובץ - "visit".)

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

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

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

	‏C-x C-f    פתח קובץ

‏Emacs מבקש שתקישו את שם הקובץ. שם הקובץ שתקישו מופיע בשורה התחתונה של
התצוגה. שורה זו נקראת "מיני־חוצץ" ("minibuffer") כשהיא משמשת לסוג זה
של קלט. ניתן להשתמש בכל פקודות העריכה הרגילות של Emacs כשמקישים את
שם הקובץ בחוצץ זה.

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

>> הקישו C-x C-f ואחר־כך הקישו C-g. זה מבטל את המיני־חוצץ וגם מבטל
   את הפקודה C-x C-f שהשתמשה במיני־חוצץ. התוצאה היא שאף קובץ לא נפתח.

משסיימתם להקיש את שם הקובץ, הקישו <Return> לסיים את הקלט. או־אז
המיני־חוצץ נעלם והפקודה C-x C-f תיגש לעבודה ותמצא ותפתח את הקובץ
שבחרתם. כאשר פקודת ה־C-x C-f תסיים את עבודתה, תוכן הקובץ יופיע על־גבי
התצוגה ותוכלו לבצע בו שינויים. כשתחליטו לשמור את השינויים, הקישו את
הפקודה הבאה:

	‏C-x C-s    שמור את הקובץ

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

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

>> הקישו C-x C-s TUTORIAL.he ותסיימו בהקשת <Return>. כתוצאה, שיעור זה
   יישמר בקובץ בשם TUTORIAL.he ובתחתית התצוגה תופיע ההודעה
   "Wrote ...TUTORIAL.he".

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


* חוצצים
--------

אם תפתחו קובץ נוסף עם C-x C-f, הקובץ הראשון עדיין נשאר פתוח ב־Emacs.
תוכלו לחזור אליו ע״י C-x C-f. כך תוכלו לפתוח מספר רב של קבצים.

‏Emacs מחזיק כל קובץ בתוך יישות בשם "חוצץ" ("buffer"). פתיחת קובץ יוצרת
חוצץ חדש בתוך Emacs. כדי לראות את רשימת החוצצים הקיימים בתוך Emacs,
הקישו

	‏C-x C-b    הצג רשימת כל החוצצים

>> נסו את C-x C-b בנקודה זו.

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

>> הקישו C-x 1 כדי להפטר מרשימת החוצצים.

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

>> ניצור עתה קובץ בשם "foo" ע״י הקשת C-x C-f foo <Return>‎.
   עתה חזרו לשיעור זה בעזרת C-x b TUTORIAL.he <Return>‎.

ברוב המקרים שם החוצץ זהה לשם הקובץ (ללא שם התיקיה שלו). אבל אין זה
תמיד כך. רשימת החוצצים שנוצרת ע״י C-x C-b תציג הן את שם החוצץ והן את
שם הקובץ עבור כל החוצצים הקיימים ב־Emacs.

כל טקסט שמוצג בחלון של Emacs הינו תמיד חלק של חוצץ כלשהו. קיימים
חוצצים שאינם קשורים לשום קובץ. לדוגמא, החוצץ בשם "*Buffer List*"
המחזיק את רשימת החוצצים שנוצרה ע״י C-x C-b אינו מציג שום קובץ. גם
לחוצץ הנוכחי ששמו TUTORIAL.he לא היה קובץ עד שהקשתם על C-x C-s כדי
לשמור אותו בקובץ.

חוצץ בשם "*Messages*" אף הוא אינו קשור לשום קובץ; הוא מחזיק את ההודעות
שהופיעו בשורה התחתונה במהלך עבודתכם בתוך Emacs.

>> הקישו C-x b *Messages* <Return>‎ כדי לצפות בחוצץ של הודעות.
   אחר־כך הקישו C-x b TUTORIAL.he <Return>‎ על־מנת לחזור לשיעור זה.

אם עשיתם שינויים בטקסט של קובץ ואחר־כך פתחתם קובץ אחר, אין הדבר שומר
את השינויים שעשיתם לקובץ הראשון. השינויים הללו נשארים בתוך Emacs, בתוך
החוצץ של אותו קובץ. יצירתו ועריכתו של הקובץ הנוסף אינם משפיעים על
החוצץ של הקובץ הראשון. דבר זה הוא שימושי, אך משמעותו היא שיש צורך
בשיטה נוחה לשמור את החוצץ של הקובץ הראשון. היה זה מאד לא נוח אילו
לשם כך הייתם צריכים לעבור לחוצץ ההוא בעזרת C-x C-f ואז לשמור עם
C-x C-s. לכן קיימת פקודה

	‏C-x s     שמור חוצצים אחדים

‏C-x s עובר על כל החוצצים אשר מכילים שינויים שטרם נשמרו. לגבי כל חוצץ
כזה הוא שואל אתכם האם לשמור אותו או לא.

>> הכניסו שורה של טקסט ואחר־כך הקישו C-x s.
   הוא צריך לשאול האם לשמור חוצץ בשם TUTORIAL.he.
   השיבו בחיוב ע״י הקשה על "y".


* הרחבת אוסף הפקודות
--------------------

מספר הפקודות ב־Emacs גדול בהרבה ממה שניתן להפעיל ע״י כל תוי ה־control
וה־meta. כדי להתגבר על בעיה זו, Emacs משתמש בפקודות X המרחיבות (eXtend)
את אוסף הפקודות הרגיל. פקודות הרחבה אלו הן שתים:

	‏C-x     הרחבת תו. תו בודד שבא אחריו משלים את הפקודה.
	‏M-x     הרחבה ע״י שם הפקודה. אחריו בא שם ארוך של פקודה.

בעזרת שתי אלו ניתן להפעיל פקודות שימושיות שבהן משתמשים לעתים רחוקות
יותר מאשר פקודות שלמדתם עד עכשיו. כמה מהן כבר ראיתם: C-x C-f לפתיחת
קובץ, ו־C-x C-s לשמירת קובץ, לדוגמא. דוגמא נוספת היא פקודה לצאת
מ־Emacs -- ‏C-x C-c. (כשאתם מפעילים C-x C-c, אל תדאגו לשינויים שטרם
נשמרו; C-x C-c מציע לשמור כל קובץ ששיניתם לפני שהוא מסיים את Emacs.)

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

הפקודה C-z יוצאת מ־Emacs *באופן זמני* -- כך שתוכלו לשוב אליו מאוחר
יותר ולהמשיך מאותה נקודה. כאשר Emacs רץ על תצוגת טקסט, C-z "משעה" את
Emacs: הוא מחזיר אתכם לשורת הפקודות הבסיסית של מערכת ההפעלה ("shell"),
אבל אינו מסיים את Emacs. ברוב המערכות, כדי להמשיך בעבודתכם ב־Emacs,
תצטרכו להקיש את הפקודה "fg" או ‪"%emacs"‬.

הרגע הנכון להשתמש ב־C-x C-c הוא כאשר אתם עומדים להתנתק (log out).
כמו־כן, תצטרכו להשתמש בו כדי לצאת מ־Emacs שהופעל ע״י תוכניות אחרות
כגון קריאת דואר אלקטרוני.

קיימות פקודות C-x רבות מאד. להלן רשימת אלו שכבר למדתם:

	‏C-x C-f 	פתח קובץ
	‏C-x C-s 	שמור קובץ
	‏C-x s  	שמור חוצצים אחדים
	‏C-x C-b 	הצג רשימת חוצצים
	‏C-x b  	החלף חוצץ
	‏C-x C-c 	צא מ־Emacs
	‏C-x 1  	השאר רק חלון אחד ומחק כל השאר
	‏C-x u  	בטל פקודה אחרונה

הרחבה ע״י שם הפקודה שימושית עם פקודות עוד יותר נדירות או פקודות
ספציפיות רק לאופני פעולה (modes) מיוחדים. דוגמא לכך היא פקודה
replace-string (החלף מחרוזת) אשר מחליפה מחרוזת אחת במשנה בכל החוצץ.
אחרי שתקישו M-x, ‏Emacs מציג M-x בתחתית התצוגה ומחכה שתקישו את שם
הפקודה, במקרה זה "replace-string". מספיק שתקישו "repl s<TAB>‎" ו־Emacs
ישלים את השם המלא. (<TAB> הוא מקש Tab, בדרך כלל תמצאו אותו מעל מקש
ה־Caps Lock או Shift, ליד הקצה השמאלי של המקלדת.) סיימו את הזנת הפקודה
ע״י הקשת <Return>.

הפקודה להחלפת מחרוזת זקוקה לשני ארגומנטים -- המחרוזת שתוחלף וזו שתחליף
אותה. סיימו הקשה של כל אחת מהן ע״י <Return>.

>> הביאו את הסמן שתי שורות מתחת לשורה זו.
   עתה הקישו M-x repl s<Return>changed<Return>altered<Return>‎.

   שימו לב שהמילה "changed" בשורה זו שתנתה: זה עתה החלפתם את
   המילה c-h-a-n-g-e-d במילה "altered" בכל מקום בו היא נמצאת אחרי
   הסמן.


* שמירה אוטומטית
----------------

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

אם המחשב אכן נתקע, תוכלו לנציל את השינויים שלא הספקתם לשמור. לשם כך,
יש לפתוח את הקובץ כרגיל (את הקובץ בשמו המקורי, לא את קובץ השמירה
האוטומטית), ואחר־כך להקיש M-x recover-this-file <Return>‎. כש־Emacs
יבקש אישור, הקישו yes<Return>‎ כדי ש־Emacs ישחזר את הקובץ כפי שנשמר
אוטומטית.


* תצוגת הד
----------

אם Emacs מגלה שאתם מקישים פקודה לאט, הוא מציג את שהקשתם בתחתית התצוגה,
באזור שנקרא "אזור תצוגת הד". אזור זה משתמש בשורה התחתונה של התצוגה.


* שורת סטטוס
------------

השורה שמעל אזור תצוגת הד נקראת "שורת הסטטוס" (mode line). שורה זו
מציגה משהו כמו:

     U:**-  TUTORIAL.he    63% L651    (Fundamental)

שורה זו מציגה מידע חשוב לגבי מצבו של Emacs ולגבי הטקסט שנמצא בעריכה.

אתם כבר יודעים מהי משמעותו של שם הקובץ -- זהו הקובץ שפתחתם. NN%‎ מציין
את מיקומכם הנוכחי בתוך הטקסט, לאמור כי NN אחוזים מתכולת החוצץ קודמים
לטקסט המוצג כרגע בחלון. אם המוצג בחלון כולל את תחילת הטקסט, תראו שם
"Top" במקום "0% ". אם המוצג בחלון כולל את סוף הטקסט, תראו שם "Bot"
‏(bottom). אם הטקסט כל־כך קצר שכולו מוצג בחלון, שורת הסטטוס תציג "All".

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

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

החלק שבתוך הסוגריים אומר לכם מהo אופני העריכה (editing modes) הפעילים
כעת. ברירת המחדל היא Fundamental, האופן הבסיס, שבו אתם משתמשים כעת.
זוהי דוגמא של "אופן עריכה ראשי" (major mode).

ל־Emacs אופני עריכה ראשיים רבים ומגוונים. חלק מהם נועדו לעריכה של שפת
תכנות מסוימת ו/או סוג מסוים של טקסט, כגון Lisp mode, Text mode וכד'.
בכל רגע נתון רק אופן עיקרי אחד יכול להיות פעיל ושמו תמיד מצויין בשורת
הסטטוס באותו מקום בו כרגע אתם רואים "Fundamental".

כל אופן עיקרי גורם לכמה פקודות לפעול בצורה מיוחדת. למשל, ישנן פקודות
ליצירת הערות בתוך תוכנית, והיות וכל שפת תכנות מגדירה את הפורמט של
הערות בצורה אחרת, כל אופן עיקרי חייב להכניס הערות בצורה שמתאימה לשפה.
כל אופן עיקרי הינו למעשה שם הפקודה שבעזרתה אפשר להפעיל את אותו האופן.
למשל הפקודה להפעיל את האופן Fundamental הינה M-x fundamental-mode.

אם בכוונתכם לערוך טקסט בשפה אנושית כלשהי, כמו הקובץ הזה, כדאי לכם
להשתמש ב־Text mode.

>> הקישו M-x text-mode <Return>‎.

אל דאגה: אף אחת מפקודות Emacs שלמדתם עד כה משנה את התנהגותה באופן
מהותי. עם זאת, שימו לב ש־M-f ו־M-b מתייחסים עכשיו ל־'גרש' כחלק מהמילה.
לפני־כן, ב־Fundamental mode, ‏M-f ו־M-b התנהגו עם הגרש כמפריד בין
מילים.

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

לצפיה בתיעוד של האופן הראשי הנוכחי יש להקיש C-h m.

>> הקישו C-l C-l כדי להביא שורה זו לראשית התצוגה.
>> עתה הקישו C-h m כדי לראות במה Text mode שונה מה־Fundamental mode.
>> לבסוף, הקישו C-x 1 כדי לסלק את התיעוד מהתצוגה.

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

אחד מאופני־המשנה השימושיים ביותר, במיוחד לשם עריכת טקס בשפת־אנוש, הוא
Auto Fill mode. כאשר אופן זה מופעל, Emacs אוטומטית פותח שורה חדשה
בסיום מילה אם הטקסט שהקשתם ארוך מדי בשביל שורה אחת.

להפעלת Auto Fill mode יש להקיש M-x auto-fill-mode <Return>‎. כאשר אופן
זה מופעל, ניתן לבטלו ע״י M-x auto-fill-mode <Return>‎. זאת אומרת, פקודה
זו מפעילה את האופן כשאינו פעיל ומבטלת אותו כשהוא פעיל. לפעולה זו
קוראים "מיתוג" -- הפקודה "ממתגת" את האופן.

>> הקישו עתה M-x auto-fill-mode <Return>‎. אחר־כך הקישו "שדגכ " (עם
   הרווח בסוף) שוב ושוב עד שתיפתח שורה חדשה. הרווחים חשובים משום
   ש־Auto Fill mode שובר שורות אך ורק ברווח שבין המלים.

השוליים (margin) ש־Emacs שומר בדרך־כלל מתחילים אחרי 70 תווים, אבל ניתן
לשנות הגדרה זו בעזרת הפקודה C-x f. פקודה זו מקבלת את ההגדרה החדשה של
השוליים כארגומנט נומרי.

>> הקישו C-x f עם ארגומנט של 20. (C-u 2 0 C-x f). אחר־כך הקישו טקסט
   כלשהו ושימו לב ש־Emacs פותח שורות חדשות אחרי 20 תווים לכל היותר.
   לבסוף, החזירו את הגדרת השוליים ל־70 ע״י שימוש חוזר ב־C-x f.

אם ערכתם שינויים באמצע פסקה, Auto Fill mode לא ימלא שורות מחדש באופן
אוטומטי.
כדי למלא מחדש את כל הפסקה הקישו M-q ‏(META-q) כשהסמן נמצא בתוך
הפסקה.

>> הניעו את הסמן לתוך הפסקה הקודמת והקישו M-q.


* חיפוש
-------

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

החיפוש של Emacs הינו "מצטבר" ("incremental"). פירוש הדבר הוא שהחיפוש
מתבצע במקביל להקשתכם את המחרוזת אותה ברצונכם למצוא.

הפקודה להתחיל בחיפוש היא C-s לחיפוש קדימה ו־C-r לחיפוש אחורה. חכו! אל
תפעילו אותן עדיין.

כשתקישו C-s, תראו שבאזור תצוגת ההד יופיע הטקסט "I-search". זה אומר
ש־Emacs נמצא במצב "חיפוש מצטבר" ("incremental search") והוא ממתין
להקשתכם את המחרוזת אותה ברצונכם למצוא. הקשה על <Return> מסיימת את
החיפוש.

>> הקישו עתה C-s כדי להתחיל בחיפוש. לאט־לאט, אות־אות, הקישו את המילה
   "סמן", עם הפסקה אחרי כל אות, ושימו לב להתנהגות הסמן.
   זה עתה מצאתם את המילה "סמן" פעם אחת.
>> הקישו C-s שוב, כדי למצוא את "סמן" במקומות נוספים בטקסט.
>> הקישו <DEL> שלוש פעמים ושימו לב לתנועת הסמן בכל הקשה.
>> הקישו <Return> לסיום החיפוש.

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

אם במהלך החיפוש תקישו על <DEL>, החיפוש "נסוג" למצב קודם. אם הקשתם
<DEL> מיד אחרי C-s, הקשת <DEL> מחזירה את הסמן למקום הקודם בו נמצאה
המחרוזת. אם אין מקומות קודמים בהם מופיעה המחרוזת, הקשת <DEL> מוחקת את
התו האחרון של המחרוזת המבוקשת. למשל, נניח שהקשתם "ס" על־מנת למצוא את
המקום הבא בו מופיעה האות "ס". אם עכשיו תקישו "מ", הסמן יזוז למקום בו
נמצא "סמ". עתה הקישו <DEL>. ה־"מ" נמחק מהמחרוזת והסמן חוזר למקום בו
הוא מצא את "ס" לראשונה.

אם במהלך החיפוש תפעילו פקודה כלשהי ע״י הקשה על מקש תוך לחיצה על
CONTROL או META, החיפוש יסתיים. (כמה תווים יוצאים מכלל זה -- אלו תווים
מיוחדים בעת חיפוש, כדוגמת C-s ו־C-r.)

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


* חלונות מרובים
---------------

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

>> הביאו סמן לשורה זו והקישו C-l C-l ‏(CONTROL-L ולא CONTROL-1).

>> עתה הקישו C-x 2 וכתוצאה מכך החלון יתחלק לשניים. כל אחד משני החלונות
   מציג את השיעור הזה. הסמן נשאר בחלון העליון.

>> הקישו C-M-v כדי לגלול את החלון התחתון.
   (אם במקלדת שלכם אין מקש META אמיתי, הקישו ‎<ESC> C-v כתחליף.)

>> הקישו C-x o ‏("o" הוא רמז ל־"other", "אחר") על־מנת להעביר את הסמן
   לחלון התחתון.
>> הקישו C-v ו־M-v בחלון התחתון כדי לגלול אותו.
   המשיכו לקרוא הוראות אלו בחלון העליון.

>> הקישו C-x o שוב לחזור לחלון העליון.
   הסמן בחלון העליון יישאר במקום בו הוא היה לפני־כן.

תוכלו להמשיך להשתמש ב־C-x o כדי לדלג בין החלונות. "החלון הנבחר", אותו
חלון בו הנכם עורכים טקסט, מזוהה ע״י סמן בולט שמהבהב בזמן שאינכם
מקלידים. לכל החלונות האחרים מיקום סמן משלהם; אם הפעלתם את Emacs על צג
גרפי, מיקום הסמן בחלונות האחרים מוצג כתיבה ריקה שאינה מהבהבת.

הפקודה C-M-v נוחה מאד כאשר הינכם עורכים טקסט בחלון אחד ומשתמשים בחלון
אחר לייחוס. תוכלו להתקדם בחלון השני בעזרת C-M-v מבלי לעזוב את החלון
הנבחר.

‏C-M-v היא דוגמא אחת של פקודת CONTROL-META. אם במקלדת שלכם קיים מקש
META (או Alt) אמיתי, תוכלו להקיש את הפקודה ע״י לחיצה והחזקה של מקשי
CONTROL ו־META גם יחד ואז להקיש v. הסדר שבו תלחצו על CONTROL ו־META
אינו משנה כי שני המקשים הללו פועלים ע״י שינוי התו המוקש יחד איתם.

אם אין במקלדת מקש META אמיתי ואתם משתמשים ב־<ESC> כתחליף, הסדר כן
משנה: חייבים להקיש <ESC> ורק לאחר מכן CONTROL-v, וזאת משום
ש־CONTROL-<ESC> v לא יעבוד. <ESC> הוא תו בזכות עצמו, שלא כמו CONTROL
או META.

>> הקישו C-x 1 (בחלון העליון) כדי לסלק את החלון התחתון.

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

אין חובה להציג את אותו החוצץ בשני החלונות. תוכלו להשתמש ב־C-x C-f
לפתיחת קובץ באחד החלונות -- דבר זה אינו משפיע על החלון השני. אפשר גם
לפתוח קבצים שונים בכל אחד משני החלונות באופן בלתי־תלוי.

הנה עוד שיטה להשתמש בשני חלונות להצגה של שני דברים שונים:

>> הקישו C-x 4 C-f ואחר־כך הקישו שם של אחד הקבצים שלכם.
   סיימו עם <Return>. שימו לב שהקובץ המבוקש מוצג בחלון התחתון. הסמן
   מדלג לשם אף הוא.

>> הקישו C-x o לעבור לחלון העליון ואחר־כך הקישו C-x 1 כדי לסלק את
   החלון התחתון.


* תבניות מרובות
---------------

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

>> הקישו C-x 5 2.
   כתוצאה, תבנית חדשה תופיע על המסך.

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

>> הקישו C-x 5 0.
   התבנית שבה הקשתם את הפקודה תיסגר ותיעלם מהמסך.

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


* רמות עריכה רקורסיביות
-----------------------

יתכן ותיקלעו למצב שקרוי "רמת עריכה רקורסיבית". Emacs מציין זאת ע״י
סוגריים מרובעים בשורת הסטטוס מסביב לשם האופן הראשי. למשל, יוצג שם
[(Fundamental)] במקום (Fundamental).

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

>> הקישו M-x כדי להיכנס למיני־חוצץ; אחר־כך הקישו <ESC> <ESC> <ESC> כדי
   להיחלץ משם.

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


* לקבלת עזרה נוספת
------------------

בשיעור הראשון הזה השתדלנו לתת בידיכם מידע שאך יספיק להתחלת השימוש שלכם
ב־Emacs. ‏Emacs מכיל כל־כך הרבה שאין שום אפשרות לתאר ולהסביר כאן את
הכל. אולם, סביר שתרצו ללמוד יותר על Emacs שכן יש בו עוד הרבה תכונות
שימושיות. Emacs כולל פקודות לשם קריאת תיעוד על הפקודות של Emacs.
הפעלת פקודות "עזרה" אלו תמיד מתחילה במקש CONTROL-h שעל־כן נקרא "מקש
עזרה" ("help").

להפעלת פקודות עזרה יש להקיש את C-h ואחר־כך עוד תו שמבקש עזרה מסוג
מסויים. אם אתם _באמת_ אבודים, הקישו C-h ?‎ ו־Emacs יציג את סוגי העזרה
שהוא מעמיד לרשותכם. אם הקשתם C-h ובסופו של דבר החלטתם שאין צורך בשום
עזרה, פשוט הקישו C-g לבטל את הפקודה.

(אם הקשת C-h אינה מציגה בתחתית התצוגה הודעה בדבר עזרה, נסו להקיש F1 או
M-x help <Return>‎ כתחליף.)

סוג העזרה הבסיס ביותר הוא C-h c. הקישו C-h, אחריו את האות c ואז הקישו
סדרת מקשים שמפעילה פקודה כלשהי. Emacs יציג תיאור מאד קצר של הפקודה
ההיא.

>> הקישו C-h c C-p.

התוצאה שתוצג צריכה להיות משהו כמו זה:

		C-p runs the command previous-line

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

ניתן לציין אחרי C-h c גם פקודות שמופעלות ע״י סדרת מקשים באורך גדול
מאחד, כגון C-x C-s או ‏‎<ESC> v (כתחליף ל־M-v, אם אין מקש META או ALT).

לקבלת מידע מפורט יותר על פקודה, השתמשו בפקודה C-h k במקום C-h c.

>> הקישו C-h k C-p.

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

הנה עוד כמה פקודות עזרה שימושיות:

    ‏C-h x	תן הסבר על פקודה. יש להקיש את שם הפקודה.

>> נסו להקיש C-h x previous-line <Return>‎.
   כתוצאה, יוצג תיעוד מלא של הפונקציה המממשת את הפקודה C-p כפי שהוא
   ידוע ל־Emacs.

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

    ‏C-h a	פקודות בנוגע לנושא מסויים. הקישו מילת מפתח ו־Emacs
		יציג את רשימת הפקודות ששמותיהן מכילות את מילת המפתח.
		כל הפקודות הללו ניתנות להפעלה ע״י META-x. עבור חלק
		מהפקודות תוצג גם סדרת מקשים שמפעילה את הפקודה.

>> הקישו C-h a file <Return>‎.

כתוצאה מזה, יוצג חלון עם רשימה של כל הפקודות ששמותיהן מכילות את המילה
"file". ביניהן תראו גם מקשי קיצור כגון C-x C-f לצד שמות הפקודות כגון
find-file.

>> הקישו C-M-v כדי לגלול את חלון העזרה. עשו זאת פעמים אחדות.

>> עתה הקישו C-x 1 כדי לסגור את חלון העזרה.

    ‏C-h i	הצג מדריכים למשתמש הכלולים בחבילת Emacs. (פקודה זו
		ידועה גם בשם "Info".) פקודה זאת פותחת חוצץ מיוחד הקרוי
		"*info*" שבו תוכלו לקרוא מדריכים המותקנים במערכת שלכם.
		הקישו m emacs <Return>‎ כדי לקרוא במדריך למשתמשי Emacs.
		אם אינכם מכירים את Info, הקישו h ו־Emacs יקח אתכם
		לשיעור על התכונות של Info mode. כשתסיימו עם השיעור
		הזה, אנו בהחלט ממליצים להשתמש במדריך Emacs בתור התיעוד
		העיקרי שלכם.


* עוד תכונות
------------

תוכלו ללמוד עוד על־אודות Emacs ע״י קריאה במדריך למשתמש שלו, אם כספר
מודפס או בגירסה מקוונת בתוך Emacs עצמו. (תוכלו להגיע אל המדריך דרך
תפריט Help או ע״י הקשה על C-h r.) אולם שתי תכונות שבוודאי ימצאו חן
בעיניכם הן השלמה אשר חוסכת הקשות, ו־dired שמאפשרת טיפול נוח בקבצים.

השלמה היא דרך להימנע מהקשות מיותרות. למשל, אם ברצונכם לעבור לחוצץ
*Messages*, תוכלו להקיש C-x b *M<Tab>‎ ו־Emacs ישלים את שאר האותיות של
שם החוצץ ככל שניתן להסיק ממה שהקשתם. השלמה פועלת גם על שמות הפקודות
ושמות קבצים. תכונת ההשלמה מתוארת במלואה במדריך למשתמש Emacs בצומת
(node) בשם "Completion".

‏Dired מאפשר להציג רשימת קבצים בתיקיה (וכאפציה גם בתת־תיקיות שלה), לנוע
בתוך הרשימה הזו, לפתוח קבצים, לשנות את שמותיהם, למחוק אותם ולבצע עליהם
עוד פעולות רבות. Dired מתואר במלואו במדריך למשתמש בצומת בשם "Dired".

בנוסף, מדריך למשתמש מתאר עוד הרבה מאד תכונות של Emacs.


* לסיום
-------

כדי לצאת מ־Emacs יש להקיש C-x C-c.

שיעור זה נכתב כדי להיות מובן לכל המשתמשים החדשים, לכן אם מצאתם שמשהו
כאן אינו ברור, אל תשבו ותאשימו את עצמכם -- תתלוננו!


* זכויות שימוש
--------------

שיעור זה הינו צאצא של שורה ארוכה של שיעורים בשימוש ב־Emacs, החל מהגרסה
הראשונה שנכתבה ע״י Stuart Cracraft עבור גירסת ה־Emacs המקורית.

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

                       Copyright (C) 2010-2021 Free Software Foundation, Inc.

‏GNU Emacs הינו תכנה חפשית; זכותכם להפיצו ו\או לשנותו בכפוף לתנאי
הרשיון GNU General Public License, כפי שהוא יוצא לאור ע״י Free
Software Foundation, אם בגרסא 3 של הרשיון, ואם (כאופציה השמורה לכם)
בכל גרסא מאוחרת יותר.

‏GNU Emacs מופץ מתוך תקווה שהוא יביא תועלת, אולם ללא כל כתב אחריות;
אפילו לא אחריות־במשתמע של סחירות או התאמה לאיזו תכלית מסוימת. לפרטים,
אנא עיינו ב־GNU General Public License.

‏GNU Emacs אמור להיות מלווה בעותק של GNU General Public License; אם לא
קיבלתם אותו, תוכלו למצוא אותו sב־‪<https://www.gnu.org/licenses/>‬.

הנכם מוזמנים לקרוא את הקובץ COPYING ואז אכן לחלק עותקים של GNU Emacs
לחבריכם. עזרו לנו לחסל את "הבעלות" על תוכנה שאינה אלא חבלה בתוכנה,
וזאת ע״י שימוש, כתיבה ושיתוף של תוכנה חופשית!



--- end of TUTORIAL.he ---

;;; Local Variables:
;;;   coding: utf-8
;;;   bidi-display-reordering: t
;;;   sentence-end-double-space: nil
;;;   bidi-paragraph-direction: nil
;;; End: