Source

XEmacs / etc / TUTORIAL.th

  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
		      ==============================
		      GNUEMACS ภาษาญี่ปุ่น (Mule) เบื้องต้น
		      ==============================

หมายเหตุ:       เอกสารฉบับเบื้องต้นนี้ ถูกเขียนขึ้นโดยยึดหลักที่ว่า "ลองเล่นเลยดีกว่าเรียนรู้"
               บรรทัดที่เริ่มต้นด้วย ">>" จะมีคำสั่งว่า ต่อไปจะให้ทำอะไร

     โดยทั่วไป การป้อนคำสั่งให้กับ Mule ทำได้โดยใช้ ปุ่มคอนโทรล (ปุ่มที่บนหน้าสัมผัส เขียนไว้
ว่า CTRL หรือ CTL) หรือ ปุ่ม META (โดยปกติ หมายถึงปุ่ม ESC)  ในที่นี้ เราจะใช้สัญลักษณ์ต่อไป
นี้ แทนการเขียนเต็ม  ว่า CONTROL หรือ META

C-<ตัวอักษร>     หมายถึง ให้กดปุ่มคอนโทรลค้างไว้ แล้วกดปุ่ม <ตัวอักษร>   ตัวอย่างเช่น C-f
               หมายถึง ให้กดปุ่มคอนโทรลค้างไว้ แล้วกดปุ่ม f
<<Blank lines inserted here by startup of help-with-tutorial>>
       >> ตอนนี้ขอให้ลองกด C-v (View Next Screen ดูหน้าต่อไป) ดู  เพื่อเลื่อนไปอ่านหน้า
          ต่อไป
          ต่อจากนี้เป็นต้นไป  ทุกครั้งที่อ่านหน้าหนึ่ง  จบขอให้ทำในทำนองเดียวกัน เพื่อเลื่อนไป
          ดูหน้าต่อไป

ESC <ตัวอักษร>   หมายถึง ให้กดปุ่ม ESC แล้วปล่อย หลังจากนั้นจึงกดปุ่ม <ตัวอักษร> ตาม

หมายเหตุ:       <ตัวอักษร> ไม่ว่าเป็นตัวใหญ่หรือตัวเล็ก จะให้ความหมายเหมือนกันเมื่อถูกใช้ใน
               คำสั่ง   ถ้าหากมีปุ่ม META ให้กด ก็จะสามารถใช้การกด M-<ตัวอักษร> แทน
               การ ESC <ตัวอักษร> ได้  (คือให้กดปุ่ม META ค้างไว้ แล้วจึงกด <ตัวอักษร>)

ข้อสำคัญ:        เวลาจะเลิกใช้ Emacs ให้กด C-x C-c  หรือในกรณีที่สั่ง Emacs จาก csh
               ก็สามารถใช้ suspend (หยุดชั่วคราว) ได้  การ suspend Emacs ทำได้โดย
               กด C-z

     ต่อจากนี้  ขอให้ป้อนคำสั่ง C-v ทุก  ครั้งที่อ่านจบหนึ่งหน้า

     ภายในหน้าที่แล้วกับหน้าถัดไป จะมีเนื้อหาซ้ำกันอยู่บางบรรทัด  ที่เป็นเช่นนี้ ก็เพื่อให้สามารถรู้
ได้ว่า เนื้อหาที่แสดงอยู่นั้น ต่อเนื่องกันอยู่


     ก่อนอื่น จำเป็นจะต้องรู้วิธีการโยกย้ายตำแหน่งไปมา ภายในแฟ้มข้อมูลเสียก่อน  ตามที่บอกไป
แล้ว ก็คือ C-v ใช้สำหรับเลื่อนไปข้างหน้า  ถ้าจะเลื่อนกลับที่เก่า ก็ให้กด ESC v

      >> ลองใช้ ESC v และ C-v เพื่อเลื่อนไปมาดู สักสองสามครั้ง

สรุป
===
     คำสั่ง สำหรับเลื่อนไปมาทีละหน้าภายในแฟ้มข้อมูล คือ

     C-v     เลื่อนไปข้างหน้า หนึ่งหน้าจอ
     ESC v   เลื่อนไปข้างหลัง หนึ่งหน้าจอ
     C-l     เขียนหน้าจอใหม่ และในขณะเดียวกัน ก็ให้เลื่อนตำแหน่งของเคอร์เซอร์ (cursor)
             ไปอยู่ตรงกลางจอ

       >> ขอให้สังเกตดูว่า ในขณะนี้เคอร์เซอร์อยู่ที่ไหน พร้อมทั้งจำข้อความที่อยู่รอบข้างของ
          เคอร์เซอร์ด้วย  แล้วลองกด C-l ดู   ตรวจสอบดูว่า เคอร์เซอร์เลื่อนไปอยู่ที่ไหน
          ข้อความที่อยู่รอบข้างเปลี่ยนไปอย่างไร

วิธีโยกย้ายเคอร์เซอร์ขั้นพื้นฐาน
=======================

     ตอนนี้ เราก็รู้วิธีโยกย้ายไปมาแบบทีละหน้าแล้ว  ต่อไป ก็มาเรียนรู้วิธีโยกย้ายไปที่ตำแหน่งใด
ตำแหน่งหนึ่งภายในหน้าเดียวกัน ซึ่งสามารถทำได้หลายวิธี  วิธีหนึ่งก็คือให้ใช้คำสั่ง ไปบรรทัดก่อนหน้า
(previous) ไปบรรทัดต่อไป (next) ไปด้านหน้า (forward) ไปด้านหลัง (backward)  คำสั่ง
เหล่านี้ ถูกตั้งไว้ที่ C-p C-n C-f และ C-b ตามลำดับ  ซึ่งจะทำให้โยกย้ายไปมาได้ โดยเทียบกับ
ตำแหน่งปัจจุบัน  สรุปเขียนเป็นแผนภาพได้ดังนี้


			      บรรทัดที่แล้ว C-p
                                    :
                                    :
   ตัวอักษรด้านหลัง C-b  ....  ตำแหน่งเคอร์เซอร์ปัจจุบัน  ....   ตัวอักษรด้านหน้า C-f
                                    :
                                    :
			      บรรทัดต่อไป C-n


     คำสั่งเหล่านี้ เอามาจากตัวอักษรตัวแรกของ คำว่า Previous Next Backward Forward
ซึ่งจะช่วยให้จำได้ไม่ยาก  คำสั่งเหล่านี้เป็นคำสั่งสำหรับการโยกย้ายขั้นพื้นฐาน ซึ่งต้องใช้อยู่เสมอ

       >> ลองกด C-n ดูหลาย  ครั้ง  เพื่อเลื่อนเคอร์เซอร์มายังบรรทัดนี้ (บรรทัดที่กำลังอ่าน
          อยู่นี้)

       >> ลองกด C-f ดูหลาย  ครั้ง  เพื่อเลื่อนเคอร์เซอร์ไปยังตรงกลางของบรรทัด แล้วลอง
          กด C-p เลื่อนขึ้นข้างบนดู  สังเกตดูด้วยว่า ตำแหน่งของเคอร์เซอร์เปลี่ยนไปอย่างไร

       >> ลองกด C-b ขณะที่อยู่ที่ตำแหน่งหน้าสุดของบรรทัดดู  สังเกตดูด้วยว่า เคอร์เซอร์เคลื่อน
          ไปอย่างไร  จากนั้นให้กด C-b อีกสองสามครั้ง  แล้วกด C-f เพื่อเลื่อนไปยังท้ายสุด
          ของบรรทัดดู  เคอร์เซอร์จะเป็นอย่างไร ถ้ากดจนเลยท้ายบรรทัดไป


     เวลาที่เลื่อนเคอร์เซอร์ จนเลยบรรทัดแรกสุดหรือบรรทัดท้ายสุดของหน้าไป  เคอร์เซอร์จะ
เลื่อนไปยังบรรทัดต่อไปในทิศทางนั้น   และปรับให้เคอร์เซอร์กลับมาอยู่บนหน้าจอเสมอ

       >> ลองกด C-n เพื่อเลื่อนเคอร์เซอร์ให้เลยบรรทัดล่างสุดของหน้าจอดู  แล้วสังเกตดูว่า
          เกิดอะไรขึ้น และตำแหน่งของเคอร์เซอร์เปลี่ยนไปอย่างไร

     ถ้ารู้สึกว่าการขยับไปทีละตัวอักษรนั้นอืดอาดยืดยาด  ก็สามารถใช้การเลื่อนเคอร์เซอร์ไปทีละคำ
ได้  กด ESC f เพื่อให้เลื่อนไปข้างหน้าหนึ่งคำ และ ESC b เพื่อให้เลื่อนไปข้างหลังหนึ่งคำ

หมายเหตุ:        สำหรับภาษาไทย  ยังไม่สามารถแบ่งแยกตำแหน่งของคำได้ถูกต้อง  จึงไม่
                สามารถใช้สองคำสั่งนี้ได้

       >> ลองกด ESC f และ ESC b ลองดูหลาย  ครั้ง  และลองใช้ร่วมกับ C-f กับ C-b ดู
          ด้วย

     จะสังเกตเห็นได้ว่า ESC f และ ESC b มีรูปแบบคล้ายคลึงกับ C-f และ C-b  โดยส่วนใหญ่
ESC <ตัวอักษร> จะใช้เกี่ยวกับการจัดการข้อความ  ส่วน C-<ตัวอักษร> จะใช้กับสิ่งที่เป็นพื้นฐานมาก
กว่า (เช่น ตัวอักษร หรือ บรรทัด)

     C-a กับ C-e เป็นคำสั่งน่าจะรู้ไว้  เพราะค่อนข้างสะดวกดีทีเดียว  C-a ใช้สำหรับเลื่อน
เคอร์เซอร์ไปที่ตำแหน่งหน้าสุดของบรรทัด  C-e สำหรับเลื่อนไปที่ตำแหน่งท้ายสุดของบรรทัด


       >> ลองกด C-a ดูสองครั้ง  หลังจากนั้นให้กด C-e ดูสองครั้ง  แล้วลองสังเกตดูว่า การ
          กดคำสั่งนี้มากกว่าสองครั้ง จะไม่ช่วยให้เลื่อนเคอร์เซอร์ไปไหนได้มากกว่านั้นอีก

     ยังมีอีกสองคำสั่ง สำหรับการเลื่อนเคอร์เซอร์แบบง่าย  คือ คำสั่ง ESC < สำหรับการเลื่อน
เคอร์เซอร์ไปที่ตำแหน่งแรกสุดของแฟ้มข้อมูล และคำสั่ง ESC > สำหรับการเลื่อนไปตำแหน่งท้ายสุด

     เราเรียกตำแหน่งของข้อความ ที่มีเคอร์เซอร์อยู่ว่า "จุด (point)"  หรือพูดอีกอย่างหนึ่งได้
ว่า เคอร์เซอร์ เป็นสิ่งที่บอกให้เรารู้ว่า จุด อยู่ตรงไหนของหน้าจอ

     สรุปคำสั่งสำหรับการเคลื่อนไปมา ซึ่งรวมการเคลื่อนที่ในหน่วยของคำ หน่วยของบรรทัดไว้ด้วย
ได้ดังนี้

     C-f     ไปข้างหน้าหนึ่งตัวอักษร
     C-b     กลับข้างหลังหนึ่งตัวอักษร

     ESC f   ไปข้างหน้าหนึ่งคำ
     ESC b   กลับข้างหลังหนึ่งคำ

     C-n     เลื่อนไปบรรทัดต่อไป
     C-p     เลื่อนไปบรรทัดที่แล้ว

     ESC ]   เลื่อนไปตำแหน่งท้ายสุดของย่อหน้า (paragraph)
     ESC [   เลื่อนไปตำแหน่งแรกสุดของย่อหน้า

     C-a     เลื่อนไปตำแหน่งแรกสุดของบรรทัด
     C-e     เลื่อนไปตำแหน่งท้ายสุดของบรรทัด

     ESC <   เลื่อนไปตำแหน่งแรกสุดของแฟ้มข้อมูล
     ESC >   เลื่อนไปตำแหน่งท้ายสุดของแฟ้มข้อมูล

       >> ลองใช้คำสั่งแต่ละคำสั่งดู  คำสั่งเหล่านี้เป็นคำสั่งที่ใช้กันบ่อยสุด  คำสั่งสองคำสั่งหลัง
          จะเลื่อนเคอร์เซอร์ ไปยังที่ที่ค่อนข้างไกล  ให้ลองใช้คำสั่ง C-v และ ESC v เพื่อ
          เลื่อนเคอร์เซอร์กลับมาที่ตรงนี้

     สำหรับคำสั่งอื่น  ของ Emacs ก็เช่นกัน  คำสั่งเหล่านี้จะสามารถเพิ่มตัวเลือก (argument) 
เพื่อกำหนด จำนวนครั้ง ในการปฏิบัติงานได้   การกำหนดจำนวนครั้ง ทำได้โดยกด C-u แล้วตาม
ด้วยจำนวนครั้งที่ต้องการก่อน แล้วจึงค่อยกดคำสั่งตาม

     ตัวอย่างเช่น  คำสั่ง C-u 8 C-f หมายถึง ให้เลื่อนไปข้างหน้า 8 ตัวอักษร

       >> ให้ลองกำหนดจำนวนครั้งที่เหมาะสมสำหรับคำสั่ง C-n หรือ C-p เพื่อเลื่อนเคอร์เซอร์
          ให้มาอยู่ใกล้บรรทัดนี้ให้มากที่สุดเท่าที่จะทำได้ ในการเลื่อนเคอร์เซอร์ครั้งเดียว

     สำหรับ C-v และ ESC v จะได้ผลแตกต่างไปสักเล็กน้อย  ในกรณีนี้ จะเป็นการเลื่อนหน้าจอ
ขึ้นลง ตามจำนวนบรรทัดแทน

       >> ลองกด C-u 3 C-v ดู

     เลื่อนกลับที่เก่าได้โดย C-u 3 ESC v

คำสั่งยกเลิก
=========

     คำสั่ง C-g ใช้สำหรับสั่งยกเลิกคำสั่งต่าง  ที่ต้องการการป้อนข้อมูลเพิ่มเติม  ตัวอย่างเช่น
ระหว่างที่ใส่ตัวเลือก (argument) อยู่ หรือระหว่างคำสั่งที่ต้องการกดปุ่มมากกว่า 2 ปุ่มขึ้นไป  ถ้า
หากต้องการยกเลิก ก็ให้กด C-g

       >> ลองกำหนดจำนวนครั้งให้เป็น 100 โดยการกด C-u 100 แล้วกด C-g ดู  หลังจากนั้น
          ให้ลองกด C-f ดู แล้วสังเกตดูว่าเคอร์เซอร์เลื่อนไปกี่ตัวอักษร  หรือตอนที่พลาดไปกด
          ESC โดยไม่ตั้งใจ  ก็สามารถกด C-g ยกเลิกได้

ข้อผิดพลาด (Error)
================

     ในบางครั้ง อาจจะมีการสั่งปฏิบัติงานบางอย่าง ที่ Emacs ยอมรับไม่ได้เกิดขึ้น  ตัวอย่างเช่น
การกดคำสั่งคอนโทรลบางคำสั่ง ที่ไม่ได้กำหนดไว้ใน Emacs ก็จะทำให้ Emacs ส่งเสียงเตือน
และแสดงผลที่บรรทัดล่างสุดของจอ บอกว่าผิดพลาดอย่างไร

     คำสั่งบางคำสั่งที่เขียนไว้ในเอกสารฉบับนี้ อาจใช้ไม่ได้กับ Emacs บางรุ่น (version) ซึ่งจะ
ทำให้มีการแสดงผลข้อผิดพลาด (error) ขึ้น   ในกรณีนี้ ขอให้กดปุ่มอะไรก็ได้ เพื่อเลื่อนไปยังส่วน
ต่อไป

วินโดว์ (Window)
==============

     Emacs สามารถเปิดวินโดว์ได้พร้อมกันหลายวินโดว์ และใช้วินโดว์เหล่านั้นแสดงผลข้อความ
ต่าง  ตามต้องการได้  ก่อนอื่น ก็ควรจะทำความรู้จักกับคำสั่ง ที่ใช้สำหรับการลบวินโดว์ส่วนเกิน
ในเวลาที่แสดงผลลัพธ์ของคำสั่งบางคำสั่ง หรือ Help ออกเสียก่อน

     C-x 1             ทำให้เป็นวินโดว์เดียว

     คำสั่ง C-x 1 ใช้สำหรับลบวินโดว์อื่น  แล้วขยายวินโดว์ที่มีเคอร์เซอร์อยู่  ให้เต็มจอเป็น
วินโดว์เดียว

       >> ให้เลื่อนเคอร์เซอร์มาที่บรรทัดนี้  แล้วกด C-u 0 C-l

       >> ลองกด C-h k C-f ดู  แล้วสังเกตดูว่าวินโดว์นี้เปลี่ยนไปอย่างไร เมื่อมีวินโดว์ใหม่ซึ่ง
          อธิบายวิธีใช้คำสั่ง C-f ปรากฏขึ้น

       >> ลองกด C-x 1 เพื่อลบวินโดว์ที่โผล่ขึ้นมาใหม่ ออก

การแทรก (insert) และ การลบ (delete)
===================================

     บน Emacs เราจะสามารถพิมพ์ตัวอักษรเข้าไปได้เลย เมื่อต้องการพิมพ์ข้อความ  Emacs จะ
ถือว่าตัวหนังสือที่มองเห็นได้ทุกตัว (เช่น 'A' '7' '*' 'ก' และอื่น ๆ) เป็นข้อความที่ต้องการจะ
แทรก (insert) เข้าไปตรง   เมื่อจะจบบรรทัด ให้กด <Return> เพื่อเติมอักษรขึ้นบรรทัดใหม่
(linefeed character) แทรกเข้าไป

     ให้กด <Delete> เมื่อต้องการจะลบตัวอักษรที่เพิ่งพิมพ์เข้าไป  <Delete> หมายถึงปุ่มเขียน
บนผิวหน้าไว้ว่า "Delete"  หรือบางทีอาจจะเขียนไว้ "Rubout" ก็ได้   โดยทั่วไป <Delete>
ใช้สำหรับลบตัวอักษรที่อยู่ก่อนหน้าตำแหน่งเคอร์เซอร์ปัจจุบัน

       >> ลองพิมพ์ตัวอักษรเข้าไปหลาย  ตัว  แล้วใช้ <Delete> ลบตัวอักษรเหล่านั้นทิ้ง

       >> ลองพิมพ์ข้อความลงไปให้เกินขอบขวา (right margin)  เวลาที่พิมพ์ข้อความเข้าไป
          ยาวเกินความกว้างของหนึ่งบรรทัด  บรรทัดนั้นก็จะ "ถูกต่อ" ให้ยาวเกินหนึ่งหน้าจอ
	  โดยใส่เครื่องหมาย '\' ไว้ที่ขอบขวาสุด เพื่อบอกให้รู้ว่าบรรทัดนี้ยังมีต่อ  Emacs จะ
	  เลื่อน (scroll) หน้าจอเพื่อให้เห็นตำแหน่งที่กำลังแก้ไขอยู่ได้อย่างชัดเจน  ถ้าหาก
	  ขอบขวาหรือขอบซ้ายของมีเครื่องหมาย '\' อยู่ ก็เป็นการบอกให้รู้ว่า บรรทัดนั้นยังมีต่อ
	  ไปในทิศทางนั้น 

     ลองปฏิบัติดูเลย คงจะช่วยให้เข้าใจง่ายกว่าการอธิบายด้วยตัวหนังสือ

       >> ให้ขยับเคอร์เซอร์ไปไว้บนบรรทัดซึ่งถูกต่อให้ยาวเกินหนึ่งหน้าจอ ที่เพิ่งป้อนเข้าไปเมื่อ
          สักครู่นี้  แล้วใช้ C-d ลบข้อความออกบางส่วน จนความยาวของข้อความอยู่ภายในหนึ่ง
	  บรรทัด  สังเกตดูว่าเครื่องหมาย '\' จะหายไป

       >> ให้เลื่อนเคอร์เซอร์ไปไว้ที่ตำแหน่งแรกสุดของบรรทัด แล้วกด <Delete> ดู  การทำ
          แบบนี้ จะทำให้สัญลักษณ์คั่นระหว่างบรรทัดถูกลบออกไป  บรรทัดนั้นก็จะถูกเอาไปต่อกับ
	  บรรทัดก่อนหน้านั้น รวมกันเป็นบรรทัดยาวบรรทัดเดียว และอาจจะมีสัญลักษณ์ต่อบรรทัด
	  ปรากฏขึ้น

       >> ให้กด <Return> เพื่อเพิ่ม ตัวอักษรขึ้นบรรทัดใหม่ กลับไปอย่างเดิม

     คำสั่งส่วนใหญ่ของ Emacs จะสามารถกำหนดจำนวนครั้งที่ต้องการให้ปฏิบัติได้  รวมทั้งการ
แทรก (insert) ตัวอักษรด้วย


       >> ลองป้อนคำสั่ง C-u 8 * ดู  สังเกตดูว่าเกิดอะไรขึ้น

     ถ้าต้องการจะเพิ่มบรรทัดว่าง  (blank line) ระหว่างสองบรรทัด  ให้เลื่อนไปที่ตำแหน่ง
แรกสุดของบรรทัดที่สอง  แล้วกด C-o

       >> ให้เลื่อนไปที่ตำแหน่งแรกสุดของบรรทัดใดก็ได้  แล้วลองกด C-o ดู

     ถึงตรงนี้  เราก็ได้เรียนวิธีพื้นฐานสำหรับการป้อนข้อความ และการแก้ที่ผิดแล้ว  นอกจากจะ
ลบได้ทีละตัวอักษรแล้ว  ยังมีคำสั่งซึ่งสามารถใช้ลบได้ในเป็นคำ  หรือเป็นบรรทัด  อีกด้วย  สรุป
คำสั่งสำหรับการลบได้ดังนี้

     <Delete>       ลบตัวอักษรที่อยู่หน้าเคอร์เซอร์
     C-d            ลบตัวอักษรที่อยู่ที่เคอร์เซอร์

     ESC <Delete>   ลบคำที่อยู่หน้าเคอร์เซอร์
     ESC d          ลบคำตั้งแต่ตำแหน่งที่เคอร์เซอร์อยู่

     C-k            ลบบรรทัดตั้งแต่ตำแหน่งที่เคอร์เซอร์อยู่

     ในบางครั้ง เราอาจต้องการจะเอาส่วนที่ลบไปกลับคืนมา   โปรแกรม Emacs จะจำส่วนที่ลบ
ออกไว้ เวลาที่ลบข้อความในหน่วยที่มากกว่าหนึ่งตัวอักษร   ให้ใช้คำสั่ง C-y เวลาที่ต้องการจะเอา
ข้อความกลับคืน  สิ่งที่ควรระวังก็คือ C-y ไม่ใช่ใช้ได้เพียงแค่ตำแหน่งที่ลบข้อความออกเท่านั้น  แต่จะ
ใช้กับตำแหน่งใดก็ได้  C-y เป็นคำสั่งสำหรับแทรกข้อความที่เก็บไว้ ลงในตำแหน่งที่มีเคอร์เซอร์อยู่
เราสามารถใช้ความสามารถนี้ในการเคลื่อนย้ายข้อความได้

     คำสั่งสำหรับการลบมีอยู่สองแบบคือ คำสั่ง "Delete" กับ คำสั่ง "Kill"  คำสั่ง "Kill"
จะเก็บส่วนลบออกไว้ แต่คำสั่ง "Delete" จะไม่เก็บ  แต่ถ้าหากใช้คำสั่งนี้หลาย  ครั้ง  ก็จะเก็บ
ส่วนที่ลบออกไว้ให้

      >> ให้กด C-n สักสองสามครั้ง เพื่อเลื่อนไปยังที่ที่เหมาะสมบนหน้าจอ แล้วลองกด C-k เพื่อ
         ลบบรรทัดนั้นออกดู

     เมื่อกด C-k ครั้งแรก ข้อความในบรรทัดนั้นจะถูกลบออก  และเมื่อกดอีก C-k อีกครั้ง บรรทัด
นั้นเองทั้งบรรทัดก็จะถูกลบออกไปด้วย  แต่ถ้ากำหนดจำนวนครั้งให้กับคำสั่ง C-k ก็จะหมายถึง ให้ลบ
บรรทัดออก (ทั้งเนื้อหาและตัวบรรทัด) เป็นจำนวนบรรทัด เท่ากับจำนวนครั้งที่กำหนด

     บรรทัดที่เพิ่งลบออกไป จะถูกเก็บไว้ และสามารถนำกลับคืนมาได้ โดยใช้คำสั่ง C-y

       >> ลองกด C-y ดู

     ข้อความที่ถูกลบออก โดยการกด C-k หลาย  ครั้ง  จะถูกเก็บรวบรวมไว้ และสามารถนำ
กลับมาทั้งหมดได้ในครั้งเดียว โดยการกด C-y

       >> ลองกด C-k ดูหลาย  ครั้ง

       >> คำสั่งสำหรับเรียกข้อความกลับมา คือ C-y   ก่อนอื่นให้เลื่อนเคอร์เซอร์ลงไปข้างล่าง
          สักสองสามบรรทัด  แล้วลองกด C-y ดู ก็จะสามารถคัดลอก (copy) ข้อความได้

     ถ้าตอนนี้เก็บข้อความอะไรบางอย่างไว้  แล้วลบข้อความอื่นเพิ่มเข้าไปอีก จะเกิดอะไรขึ้น
ผลลัพธ์คือ C-y จะเรียกคืนได้แค่เพียงข้อความที่ลบออกครั้งล่าสุดเท่านั้น


       >> ลองลบบรรทัดดูหนึ่งบรรทัด  แล้วเลื่อนเคอร์เซอร์ไปที่อื่น  แล้วลบบรรทัดออกดูอีกหนึ่ง
          บรรทัด  ลองกด C-y ดู แล้วสังเกตดูว่าจะได้แค่เพียงบรรทัดที่สองคืนเท่านั้น

การอันดู (UNDO)
=============

     เวลาที่แก้ไขข้อความบางอย่าง แล้วต้องการจะเปลี่ยนกลับให้เป็นอย่างเดิม  ก็สามารถทำได้ทุก
เมื่อด้วยคำสั่ง C-x u   โดยปกติ จะใช้สำหรับยกเลิกคำสั่ง ที่ป้อนเข้าไปโดยไม่ตั้งใจ  สามารถใช้
คำสั่งนี้กี่ครั้งก็ได้ตามต้องการ

       >> ลองลบบรรทัดนี้ออกดู ด้วยคำสั่ง C-k แล้วเรียกกลับคืนมาด้วย C-x u

     คำสั่ง C-_ ก็เป็นคำสั่งอันดูอีกอันหนึ่ง  ความสามารถเหมือนกับคำสั่ง C-x u

     สามารถกำหนดจำนวนครั้งให้คำสั่ง C-_ และ C-x u ได้


แฟ้มข้อมูล (File)
==============

     เราจำเป็นต้องเก็บรักษา (save) ข้อความที่แก้ไขไว้ในแฟ้มข้อมูล  ถ้าต้องการจะให้สิ่งที่
แก้ไขเปลี่ยนไปอย่างถาวร  ไม่เช่นนั้น สิ่งที่แก้ไขไปก็จะหายไป ทันทีที่เลิกการใช้ Emacs

     แฟ้มข้อมูลที่มองเห็นอยู่ คือสิ่งที่บันทึกสิ่งที่กำลังแก้ไขอยู่  หรือพูดง่าย  ก็คือแฟ้มข้อมูลที่มองเห็น
อยู่คือตัวแฟ้มข้อมูลที่กำลังแก้ไขอยู่

     แต่จนกว่าแฟ้มข้อมูลจะถูกเก็บรักษา (save) ลงไป  แฟ้มข้อมูลที่ถูกแก้ไขอยู่ จะไม่ถูกเขียนทับ
ลงไปอย่างเด็ดขาด  อันนี้เพื่อเป็นการป้องกันการเขียนทับแฟ้มข้อมูลที่แก้ไขไปแบบครึ่ง  กลาง 
โดยไม่ได้ตั้งใจ

     นอกจากนี้ เพื่อเป็นการป้องกันการเก็บรักษา (save) สิ่งที่แก้ไขผิดไปโดยไม่ตั้งใจ  Emacs
จะเปลี่ยนชื่อแฟ้มข้อมูลต้นฉบับเก็บไว้ให้ ก่อนการเก็บรักษา

หมายเหตุ:       Emacs ยังมีการป้องกันอุบัติเหตุที่คาดไม่ถึง โดยการเก็บรักษาแฟ้มข้อมูลที่กำลัง
               แก้ไขอยู่เป็นระยะ  โดยใช้ชื่อแฟ้มข้อมูลต่างกัน  ด้วยวิธีนี้ จะทำให้สามารถลด
               ความเสียหายที่อาจเกิดขึ้นได้  ให้น้อยที่สุดเท่าที่จะทำได้

     ตรงส่วนล่างของจอ จะมีบรรทัดโหมด (mode line) ในลักษณะข้างล่างแสดงอยู่


(ตัวอย่าง) [--]J:--**-Mule: TUTORIAL.th    (Fundamental) ---55%--------------


     ฉบับสำเนาของ Tutorial ของ Emacs ที่กำลังอ่านอยู่นี้ชื่อ TUTORIAL.th  เวลาที่สั่งให้หา
แฟ้มข้อมูลหรือ find-file (ค้นหาแฟ้มข้อมูล แล้วอ่านเข้ามาในบัฟเฟอร์) ก็จะแสดงชื่อแฟ้มข้อมูลไว้
ตรงส่วน TUTORIAL.th  ตัวอย่างเช่น ถ้าสั่งให้หาแฟ้มข้อมูลชื่อ new-file  บรรทัดโหมดก็จะแสดง
ผลว่า "Mule: new-file"

หมายเหตุ:       จะมีคำอธิบายเพิ่มเติมเกี่ยวกับบรรทัดโหมด (mode line) ในตอนหลัง

     คำสั่งให้หาแฟ้มข้อมูล และคำสั่งให้เก็บรักษาแฟ้มข้อมูล มีลักษณะแตกต่างจากคำสั่งที่ผ่าน  มา
ตรงที่ ประกอบไปด้วย 2 ตัวอักษร คือต้องกดคำสั่งบางอย่าง ตามหลังคำสั่ง C-x ซึ่งหมายถึงคำสั่ง
เกี่ยวกับแฟ้มข้อมูล

     และอีกจุดหนึ่ง แต่แตกต่างจากคำสั่งที่ผ่านมาคือ เวลาสั่งให้ค้นหาแฟ้มข้อมูล เราจะถูก Emacs
ถามชื่อของแฟ้มข้อมูลนั้น   เราเรียกคำสั่งเหล่านั้นว่า คำสั่งประเภทที่ถามตัวเลือก (argument)
จากเทอร์มินัล

หมายเหตุ:       ในที่นี้ ตัวเลือก (argument) คือชื่อแฟ้มข้อมูล

                    C-x C-f   สั่งให้หา (find) แฟ้มข้อมูล

     แล้ว Emacs จะถามชื่อของแฟ้มข้อมูล โดยปรากฏขึ้นที่ส่วนล่างของจอ  เราเรียกส่วนที่ให้ป้อน
ชื่อแฟ้มข้อมูลนั้นว่า มินิบัฟเฟอร์ (mini buffer)  มินิบัฟเฟอร์จะถูกใช้งานในลักษณะนี้  มินิบัฟเฟอร์
จะหมดหน้าที่และหายไป หลังจากที่ป้อนชื่อแฟ้มข้อมูล แล้วกดปุ่ม <Return> 

       >> ลองกด C-x C-f แล้วตามด้วย C-g ดู  เป็นการสั่งยกเลิกเนื้อหาในมินิบัฟเฟอร์ หรือ
          ยกเลิกคำสั่ง C-x C-f  ดังนั้น Emacs จะไม่ค้นหาแฟ้มข้อมูลใด 

     คราวนี้ มาลองเก็บรักษาแฟ้มข้อมูลดู  เวลาที่ต้องการเก็บรักษาสิ่งที่แก้ไขมาจนถึงตอนนี้ ก็ให้ใช้
คำสั่งดังนี้

     C-x C-s   เก็บรักษา (save) แฟ้มข้อมูล

     แล้วเนื้อหาที่อยู่ใน Emacs ก็จะถูกเขียนลงไปที่แฟ้มข้อมูล  เวลาเก็บรักษาแฟ้มข้อมูล แฟ้มข้อมูล
ต้นฉบับจะไม่สูญหายไป แต่จะถูกเก็บไว้ในชื่อใหม่  ซึ่งได้มาจากชื่อเก่าที่ต่อท้ายด้วย '~'

     หลังจากที่เก็บรักษาแฟ้มข้อมูลเสร็จแล้ว  Emacs ก็จะแสดงชื่อแฟ้มข้อมูลที่เก็บให้ดู

       >> ลองกด C-x C-x เพื่อเก็บรักษาสำเนาของ Tutorial นี้ดู  ก็จะเห็นว่า ที่ส่วนล่าง
          ของจอ มีข้อความว่า "Wrote ...../TUTORIAL.th" ปรากฏขึ้น

     เวลาที่จะสร้างแฟ้มข้อมูลใหม่  ก็ให้ทำราวกับว่าจะค้นหา (find-file) แฟ้มข้อมูลเก่าซึ่งมี
อยู่ก่อนหน้านี้แล้ว  แล้วพิมพ์ข้อความลงไปในแฟ้มข้อมูลที่หาเจอ

     และเวลาที่สั่งเก็บรักษาแฟ้มข้อมูลเท่านั้น  คือตอนที่ Emacs จะเก็บเนื้อหาที่แก้ไขมาทั้งหมด ลง
ในแฟ้มข้อมูลเป็นครั้งแรก


บัฟเฟอร์ (Buffer)
===============

     ถ้าหากสั่งให้หาแฟ้มข้อมูลอันที่สอง ด้วยคำสั่ง C-x C-f  เนื้อหาของแฟ้มข้อมูลแรก ก็จะยังคง
ถูกเก็บรักษาอยู่ใน Emacs  สิ่งที่เก็บรักษาแฟ้มข้อมูลที่อ่านเข้ามา ซึ่งอยู่ภายใน Emacs เรียกว่า
บัฟเฟอร์ (Buffer)  เวลาที่อ่านแฟ้มข้อมูลใหม่เข้ามา Emacs ก็จะสร้างบัฟเฟอร์ใหม่ ขึ้นมาภายใน

     ถ้าต้องการจะดูรายการของบัฟเฟอร์ ที่ถูกเก็บรักษาอยู่ภายใน Emacs  ก็ให้กดคำสั่ง

     C-x C-b

       >> ลองกด C-x C-b ดู  สังเกตดูว่าแต่ละบัฟเฟอร์มีชื่อว่าอะไร  และถูกตั้งชื่อไว้ว่า
          อย่างไร ใน Emacs

     มีบางบัฟเฟอร์ ที่ไม่มีคู่กับแฟ้มข้อมูลจริง   ตัวอย่างเช่น ไม่มีแฟ้มข้อมูลที่มีชื่อว่า "*Buffer
List*" อยู่จริง   แต่เป็นบัฟเฟอร์ที่สร้างขึ้นมาเพื่อแสดงรายการบัฟเฟอร์ โดยคำสั่ง C-x C-b

     ข้อความทุกข้อความที่ปรากฏอยู่ในวินโดว์ของ Emacs นั้น จะอยู่ในบัฟเฟอร์ใดบัฟเฟอร์หนึ่งเสมอ

       >> ลองกด C-x 1 เพื่อลบรายการบัฟเฟอร์ออกดู

     การเรียกแฟ้มข้อมูลอื่นขึ้นมาแก้ไข ตอนที่กำลังแก้ไขแฟ้มข้อมูลหนึ่งอยู่นั้น  จะไม่ทำให้แฟ้มข้อมูล
แรกถูกเก็บรักษา  สิ่งที่แก้ไขไปในแฟ้มข้อมูลแรกจะถูกบันทึกไว้ในบัฟเฟอร์ของแฟ้มข้อมูลนั้น เท่านั้น

     การสร้างบัฟเฟอร์ใหม่ขึ้น สำหรับแก้ไขแฟ้มข้อมูลอันที่สอง แล้วแก้อะไรบางอย่างในบัฟเฟอร์นั้น
จะไม่มีผลใด  ต่อบัฟเฟอร์ของแฟ้มข้อมูลอันที่หนึ่งทั้งสิ้น  จุดนี้ทำให้สามารถเก็บแฟ้มข้อมูลแรกไว้เพื่อ
แก้ไขในตอนหลัง

     แต่เวลาที่ต้องการจะเก็บรักษา (save) บัฟเฟอร์ลงไปในแฟ้มข้อมูล ด้วยคำสั่ง C-x C-s นั้น
จะต้องสวิทซ์ไปยังบัฟเฟอร์ที่ต้องการจะเก็บ ด้วยคำสั่ง C-x C-f ซึ่งค่อนข้างยุ่งยาก  เรามีคำสั่งซึ่ง
ใช้สำหรับการนี้โดยเฉพาะ คือ

     C-x s   เก็บรักษา (save) ทุกบัฟเฟอร์ที่มีอยู่

     C-x s จะเก็บรักษาทุกบัฟเฟอร์ที่ถูกแก้ไขเนื้อหาไป ลงในแฟ้มข้อมูล โดยจะถามก่อนว่าจะให้
เก็บบัฟเฟอร์นี้ไหม y หรือ n กับบัฟเฟอร์แต่ละบัฟเฟอร์  คำถามจะปรากฏในส่วนล่างของหน้าจอ ดัง
ตัวอย่างนี้

             Save file  /usr/private/yours/TUTORIAL.th? (y or n)



การขยายคำสั่ง (extension)
=======================

     ในโปรแกรม Editor นี้ มีจำนวนคำสั่งมากกว่า จำนวนคำสั่งซึ่งสามารถกดได้โดยปุ่มคอนโทรล
หรือปุ่ม META ได้หมด  คำสั่งขยาย (eXtend) มีไว้เพื่อให้สามารถใช้คำสั่งเหล่านี้ได้หมด มีอยู่ 2
แบบ ดังนี้

     C-x     ขยายเพิ่มด้วยตัวอักษร สำหรับกดตัวอักษรตามเข้าไป 1 ตัว
     ESC x   ขยายเพิ่มด้วยชื่อคำสั่ง สำหรับกดชื่อคำสั่งตามเข้าไปทั้งหมด

     คำสั่งประเภทนี้ ก็เป็นคำสั่งที่มีประโยชน์  แต่ส่วนใหญ่จะถูกเรียกใช้ น้อยครั้งกว่าคำสั่งทั่วไป
ตัวอย่างเช่น คำสั่งหาแฟ้มข้อมูล (find) C-x C-f  คำสั่งเก็บรักษาแฟ้มข้อมูล (save) C-x C-s
คำสั่ง C-x C-c (เลิก Editor) ต่างก็เป็นหนึ่งในคำสั่งเหล่านี้

     คำสั่ง C-z เป็นคำสั่งที่ใช้ในในการออกจาก Emacs ค่อนข้างบ่อย  คำสั่งนี้จะไม่ยกเลิก
Emacs เลยทีเดียว แต่จะหยุด Emacs ไว้ชั่วคราว เพื่อให้สามารถกลับไปใช้ csh ได้อีก  การกด
C-z จึงเป็นการหยุด Emacs ไว้ชั่วคราวเท่านั้น จะไม่ทำความเสียหายให้กับเนื้อหาที่แก้ไขไป

หมายเหตุ:       แต่ทว่า ในกรณีที่ใช้บน X-window หรือใช้ sh อยู่ ก็จะไม่มีความสามารถนี้


     คำสั่งประเภท C-x มีมากมายหลายคำสั่ง  คำสั่งที่อธิบายไปแล้วมีดังนี้

     C-x C-f   หาแฟ้มข้อมูล (find) สำหรับแก้ไข
     C-x C-s   เก็บรักษาแฟ้มข้อมูล (save)
     C-x C-b   แสดงรายการบัฟเฟอร์ (buffer list)
     C-x C-c   เลิกการใช้ Editor และเก็บรักษาแฟ้มข้อมูลโดยอัตโนมัติ  แต่ถ้าหากมีแฟ้ม
               ข้อมูลบางอันถูกแก้ไข  ก็ให้ถามว่าจะเก็บรักษาแฟ้มข้อมูลนั้นไหม  โดยทั่วไป
               การออกจาก Emacs ทำได้โดยคำสั่ง C-x C-s C-x C-c คือให้เก็บรักษา
               ก่อนแล้วจึงเลิก

     คำสั่งขยายเพิ่มแบบชื่อนั้น ใช้สำหรับคำสั่งที่ไม่ค่อยได้ใช้ หรือคำสั่งที่ใช้เฉพาะกับโหมดพิเศษบาง
โหมด  ตัวอย่างเช่น คำสั่ง "command-apropos" ซึ่งจะถาม คีย์เวิร์ด (keyword) แล้วแสดงผล
คำสั่งทุกคำสั่งที่มีชื่อเกี่ยวข้องกับกับคีย์เวิร์ดนั้น  เวลาจะสั่งคำสั่งนี้ ก็ให้กด ESC x แล้วจะมีตัวอักษร
"M-x" ปรากฏขึ้นที่ส่วนล่างของจอ  จากนั้นก็ให้ใส่ชื่อคำสั่งที่ต้องการ (ในกรณีนี้คือ
"command-apropos")  เมื่อป้อนข้อมูลไปถึง "command-a" แล้วกด SPACE BAR ส่วนที่เหลือของ
ชื่อคำสั่งก็จะถูกเติมเต็ม (completion) ให้เองโดยอัตโนมัติ   หลังจากนั้น จะถูกถามคีย์เวิร์ด ก็ให้
กดสายอักขระ (string) ที่ต้องการรู้ลงไป  ต้องไม่ใส่คีย์เวิร์ดอะไรเลย ก็จะได้คำสั่งทั้งหมดที่มีอยู่

       >> ลองกด ESC x ตามด้วย "command-apropos<Return>" หรือ
          "command-a<Space><Return>"  หลังจากนั้นก็กด "kanji<Return>" ดู

     ให้กด C-x 1 เวลาต้องการจะลบ "วินโดว์" ที่โผล่ขึ้นมาใหม่ 

บรรทัดโหมด (Mode Line)
=====================

     เวลาที่พิมพ์คำสั่งเข้าไปช้า  Emacs จะแสดงสิ่งที่พิมพ์ลงไปตรงบรรทัดล่างสุดของจอซึ่งเรียก
ว่า echo area  บรรทัดซึ่งอยู่ถัดขึ้นมาหนึ่งบรรทัด เรียกว่าบรรทัดโหมด (mode line)  บรรทัด
โหมดมีลักษณะดังนี้


 [--]J:--**-Mule: TUTORIAL.th   (Fundamental) ---NN%--------------


หมายเหตุ:       ตรงส่วน NN ของ NN% จะมีตัวเลขใส่อยู่  บรรทัดโหมดที่แสดงอยู่อาจจะแตกต่าง
               ไปจากตัวอย่างบ้าง แต่ก็ไม่เป็นไร  ตัวอย่างเช่น อาจจะมีเวลาหรือ uptime
               แสดงผลอยู่  อันนี้เป็นความสามารถของโปรแกรม display-time

     บรรทัดนี้มีข้อมูลที่เป็นประโยชน์อยู่หลายอย่าง


     ข้อมูลแรกคือ ชื่อแฟ้มข้อมูลที่กำลังอ่านอยู่   ตัวเลข NN% จะแสดงให้รู้ว่ากำลังแสดงผลส่วนไหน
ของแฟ้มข้อมูลอยู่ โดยคิดเป็นเปอร์เซนต์   ถ้าเป็นส่วนบนสุดของแฟ้มข้อมูลอยู่ก็จะมีข้อความว่า
--Top-- แสดงอยู่  ถ้าเป็นส่วนล่างสุดก็จะมีข้อความว่า --Bot--  ถ้าหากสามารถแสดงแฟ้มข้อมูล
ทั้งหมดบนหน้าจอได้ ก็จะมีข้อความว่า --All-- แสดงอยู่

     ภายในวงเล็บของบรรทัดโหมด จะแสดงให้รู้ว่าตอนนี้อยู่ในโหมด (mode) อะไร  ในตัวอย่าง
ข้างบนคือ อยู่ในโหมด Fundamental ซึ่งเป็นโหมดเริ่มต้น (default)  โหมดนี้เป็นหนึ่งในโหมด
หลัก (Major Mode)

     Emacs มีโหมดหลัก (Major Mode) สำหรับการโปรแกรมภาษา หรือการแก้ข้อความ เช่น
Lisp mode Text mode และโหมดอื่น  อีกหลายโหมด  โดยปกติ Emacs จะอยู่ในโหมดหลัก
โหมดใดโหมดหนึ่งเสมอ

     คำสั่งบางคำสั่งจะมีพฤติกรรมที่แตกต่างกันโดยสิ้นเชิง เมื่ออยู่ในโหมดหลักที่ต่างกัน   ตัวอย่าง
เช่น เวลาโปรแกรมภาษา จะมีคำสั่งสำหรับสร้าง หมายเหตุ (comment) อยู่  เนื่องจากวิธีใส่
หมายเหตุของภาษาแต่ละภาษาแตกต่างกัน   คำสั่งนี้ก็จะแตกต่างกันไปในแต่ละโหมดหลัก  เพื่อให้
สามารถใส่หมายเหตุในแต่ละภาษาได้อย่างถูกต้อง

     คำสั่งสำหรับการเปลี่ยนโหมดให้เป็นโหมดหลักอื่น คือคำสั่งขยาย (extend) ซึ่งชื่อคำสั่งเป็นชื่อ
โหมด ตัวอย่างเช่น คำสั่ง M-x fundamental-mode คือคำสั่งสำหรับเปลี่ยนโหมดเป็นโหมด 
Fundamental

     เวลาที่จะแก้ไขแฟ้มข้อมูลภาษาอังกฤษ ก็ให้ใช้ Text mode

       >> ลองป้อนคำสั่ง M-x text-mode<Return>

     ถ้าต้องการหาข้อมูลเพิ่มเกี่ยวกับโหมดหลักที่ใช้อยู่ในปัจจุบัน ก็ให้ป้อนคำสั่ง C-h m

       >> ให้กด C-h m เพื่อศึกษาข้อแตกต่างระหว่าง Text mode กับ Fundamental mode

       >> ให้กด C-x 1 เพื่อลบเอกสารออกจากจอ

     ตรงส่วนซ้ายของบรรทัดโหมด จะมีสัญลักษณ์ '[--]' เพื่อแสดงโหมดสำหรับการป้อนข้อมูล
(input mode) อยู่   สัญลักษณ์ [--] หมายถึงสามารถป้อนข้อมูลได้ด้วยตัวอักษรภาษาอังกฤษ
(English alphabets)  กรุณาอ่านคู่มือของ "Tamago" สำหรับรายละเอียดของวิธีใช้

     และตรงด้านขวาของสัญลักษณ์นั้น จะมีเครื่องหมายแสดงสถานะของ flag ของระบบรหัส
(coding-system) อยู่   Mule สามารถกำหนดระบบรหัสแยกเฉพาะสำหรับ การเก็บอ่านแฟ้มข้อมูล
การป้อนข้อมูลจากคีย์บอร์ด การแสดงผลออกทางจอ ได้อิสระจากกัน  แต่โดยปกติจะแสดงเฉพาะ
สัญลักษณ์ช่วยจำ (mnemonic) ของระบบรหัสสำหรับการเก็บอ่านแฟ้มข้อมูล เท่านั้น

       >> ตรวจดูว่ามีสัญลักษณ์ คล้ายคลึงกับ "J:" "S:" "E:" แสดงอยู่ที่บรรทัดโหมดหรือไม่

     ตัวอักษรตัวแรกคือ สัญลักษณ์ช่วยจำ (mnemonic) ของระบบรหัสที่ใช้อยู่  ตัว ':' แสดงให้รู้
ว่ามีตัวอักษรของภาษาอื่น นอกจากภาษาอังกฤษแสดงอยู่ (เช่น ภาษาจีน ภาษาญี่ปุ่น เป็นต้น)  ตัว J
หมายถึง รหัสที่ใช้กับ JUNET คือ รหัส JIS  ตัว S หมายถึง Shift-JIS และ ตัว E หมายถึง
รหัส EUC ภาษาญี่ปุ่น   จะสลับเปลี่ยน (toggle) การแสดงผลภาษานานาชาติได้โดย C-x C-k t

     ตัวอย่างข้างล่าง คือการสลับเปลี่ยนไม่ให้แสดงภาษานานาชาติ แล้วสลับกลับอีกครั้งหนึ่ง

       >> ลองป้อนคำสั่ง C-x C-k t ดูสองครั้ง

     ถ้าเทอร์มินัลที่ใช้อยู่มีปุ่ม META และโหมดที่ใช้อยู่เป็นรหัส JIS  เราก็จะสามารถใช้ปุ่ม META
แทนการกดปุ่ม ESCAPE ได้  วิธีใช้จะเหมือนกับการใช้ปุ่มคอนโทรล คือให้กดปุ่ม META ค้างไว้แล้วจึง
กดตัวอักษรตาม  M-<ตัวอักษร> จะทำหน้าที่เหมือนกับ ESC <ตัวอักษร>  นั่นคือ ทุกอย่างที่อธิบายมา
จนถึงจุดนี้ จะยังคงมีผลเหมือนเดิม หลังจากเปลี่ยน ESC <ตัวอักษร> ให้เป็น M-<ตัวอักษร>  แต่ข้อ
ควรระวังก็คือ ปุ่ม META จะไม่สามารถใช้ได้กับรหัส Shift-JIS และ EUC

     การเปลี่ยนระบบรหัสจะมีผลแค่เพียงกับแต่ละบัฟเฟอร์เท่านั้น  สามารถดูคำสั่งเกี่ยวกับระบบรหัส
ได้โดยคำสั่ง C-h a coding-system <Return>

       >> ให้ป้อนคำสั่ง C-h a coding-system <Return> แล้วอ่านรายละเอียดของคำสั่ง 
	  set-display-coding-system set-file-coding-system และ
	  set-process-coding-system จากเอกสารที่ปรากฏขึ้น

การค้นหา (search)
================

     Emacs สามารถค้นหาสายอักขระ (string) ภายในแฟ้มข้อมูลไปทางข้างหน้าหรือข้างหลังได้
ถ้าต้องการค้นหาไปทางข้างหน้าของตำแหน่งเคอร์เซอร์ (cursor) ก็ให้กด C-s  ถ้าต้องการค้นหา
ไปทางข้างหลังของตำแหน่งเคอร์เซอร์  ก็ให้กด C-r  หลังจากนั้นจะมีข้อความว่า "I-search:"
ปรากฏขึ้นตรง echo area  ยกเลิกการค้นหาได้ด้วยการกด ESC


       >> กด C-s เพื่อเริ่มการค้นหา  แล้วกดตัวอักษรของคำว่า "cursor" ลงไปทีละตัวอย่าง
          ช้า แล้วสังเกตดูว่าเคอร์เซอร์ขยับไปอย่างไร

       >> ลองกด C-s ดูอีกหนึ่งครั้งเพื่อค้นหาคำว่า "cursor" ตัวต่อไป

       >> กด <Delete> ดู 4 ครั้ง แล้วสังเกตดูว่าการเคลื่อนที่ของเคอร์เซอร์

       >> กด ESC เพื่อยกเลิกการค้นหา

     การค้นหาจะเริ่มขึ้นทันที ในระหว่างที่พิมพ์สายอักขระที่ต้องการจะค้นหา เข้าไปเพียงบางส่วน
ถ้าต้องการจะค้นหาตัวต่อไป ก็ให้กด C-s อีกหนึ่งครั้ง  ถ้าหากค้นหาสายอักขระที่ป้อนเข้าไปไม่พบ ก็
จะมีข้อความปรากฏขึ้น  ให้กด C-g เพื่อยกเลิก

     ระหว่างที่ค้นหาอยู่  ถ้ากด <Delete> ตัวอักษรตัวสุดท้ายในสายอักขระก็จะถูกลบไป  แล้ว
เคอร์เซอร์ก็จะกลับไปตำแหน่งก่อนหน้า   ตัวอย่างเช่น ถ้ากด "cu" ก็จะค้นหาไปถึงตำแหน่งที่มีคำว่า
"cu"  แต่ถ้ากด <Delete> ในจังหวะนี้ ตัว 'u' ใน search line ก็จะหายไป แล้วเคอร์เซอร์
จะขยับกลับไปที่ตำแหน่งที่มีตัว 'c' อยู่

     ถ้ากดตัวอักษรคอนโทรล (control character) ตัวอื่น นอกเหนือจาก C-s หรือ C-r
การค้นหาก็จะสิ้นสุดลง

     คำสั่ง C-s จะค้นหาสายอักขระที่ต้องการ ไปทางข้างหน้าของตำแหน่งเคอร์เซอร์  ถ้าต้องการ
ค้นหาไปทางทิศหลัง  ก็ให้กด C-r  นั่นคือ สามารถใช้ C-s และ C-r สลับกันเพื่อค้นหาไปได้ในทั้ง
สองทิศทาง  C-s และ C-r ทำหน้าที่เหมือนกันทุกประการ จะต่างกันก็ตรงทิศทางการค้นหาเท่านั้น

Recursive Editing Level

     บางที เราอาจจะหลุดเข้าไปอยู่ในสถานะที่เรียกว่า Recursive Editing Level ได้โดย
ไม่ตั้งใจ  ในโหมดนี้ เครื่องหมายวงเล็บ '()' ที่แสดงชื่อโหมดหลัก (major mode) อยู่จะมีวงเล็บ
'[]' ล้อม เพิ่มขึ้นอีกหนึ่งชั้น  ตัวอย่างเช่น ถ้าเดิมเป็น (Fundamental) อยู่ ก็จะเปลี่ยนเป็น
[(Fundamental)] แทน

หมายเหตุ:       เราจะไม่อธิบายเกี่ยวกับ Recursive Editing Level ในที่นี้

     ให้กด M-x top-level <Return> เพื่อที่จะออกจาก Recursive Editing Level

       >> ลองกดดู ตรงส่วนล่างของจอจะมีข้อความว่า "Back to top level" ปรากฏขึ้น

     เนื่องจาก เราอยู่ในระดับบนสุด (top level) อยู่แล้ว  คำสั่งนี้จึงไม่มีผลใด 

     ไม่สามารถใช้ คำสั่ง C-g เพื่อที่จะออกจาก Recursive Editing Level ได้


Help
====

     Emacs มีความสามารถที่มีประโยชน์ มากมายหลายอย่าง ซึ่งไม่สามารถอธิบายได้หมดในที่นี้
แต่เราจะสามารถเรียกใช้ <HELP> เพื่อที่จะเรียนรู้ความสามารถเหล่านี้ ได้โดยการกด C-h ซึ่งจะ
ช่วยให้เราได้รับรู้ข้อมูลเพิ่มเติมหลายอย่าง

     วิธีใช้คือให้กด C-h แล้วตามด้วยตัวเลือก (option) อีกหนึ่งตัวอักษร  ถ้าไม่รู้ว่าจะต้องใช้
ตัวเลือกอะไร ก็ให้กด C-h ?  แล้วจะมีคำอธิบายเกี่ยวกับตัวเลือกปรากฏขึ้น  ได้หากเปลี่ยนใจจะ
ไม่เรียก HELP หลังจากกด C-h ก็ให้กด C-g เพื่อยกเลิกได้

     คำสั่ง HELP พื้นฐานที่สุดอันหนึ่งก็คือ C-h c แล้วตามด้วยการกดคำสั่งบางคำสั่ง  ซึ่งจะให้คำ
อธิบายสั้น  เกี่ยวกับคำสั่งนั้น

       >> ลองกด C-h c C-p ดู  ซึ่งจะให้ข้อความว่า
          "C-p runs the command previous-line"

     คำสั่งนี้จะช่วยรื้อฟื้นความจำ เกี่ยวกับคำสั่งที่เคยผ่านตาแล้ว แต่จำไม่ได้ ได้เป็นอย่างดี  คำสั่ง
ที่มีมากกว่าหนึ่งตัวอักษร เช่น C-x C-s ก็สามารถกดตามหลัง C-h c ได้

     ถ้าหากต้องการรู้รายละเอียดมากกว่านี้  ก็ให้ใช้ k แทนตัว c

       >> ลองกด C-h k C-p ดู

     ก็จะมีวินโดว์เพิ่มใน Emacs อีกหนึ่งอัน เพื่อแสดงรายละเอียดของคำสั่งนั้น  เมื่ออ่านจบแล้ว
ก็ให้กด C-x 1 เพิ่มลบวินโดว์ออก

     ตัวเลือกอื่นที่มีประโยชน์ มีดังนี้

    C-h f      ให้ใส่ชื่อของคำสั่ง เพื่อแสดงรายละเอียดเกี่ยวกับคำสั่งนั้น

       >> ให้กด C-h f previous-line แล้วตามด้วย <Return> เพื่อแสดงรายละเอียดเกี่ยว
          กับคำสั่งซึ่งเรียกใช้ได้จากการกด C-p

    C-h a      แล้วตามด้วยคีย์เวิร์ด (keyword) เพื่อแสดงคำสั่งทุกคำสั่ง ที่มีคีย์เวิร์ด รวมอยู่
               คำสั่งเหล่านี้สามารถเรียกใช้ได้โดยการกด ESC x

       >> ลองกด C-h a file แล้วตามด้วย <Return> เพื่อแสดงชื่อคำสั่งทุกคำสั่งที่มีคำว่า
          "file" รวมอยู่  ซึ่งจะมี find-file และ write-file ที่เรียกใช้ได้โดยการกด
          C-x C-f และ C-x C-w รวมอยู่ด้วย

ท้ายสุดนี้
======

อย่าลืม:         คำสั่งสำหรับการเลิก Emacs คือ C-x C-c


     เอกสารฉบับเบื้องต้นนี้  ตั้งใจเขียนขึ้นสำหรับผู้ที่เริ่มหัดใหม่ โดยเฉพาะ  ถ้าหากมีจุดไหนที่ไม่
เข้าใจ ก็อย่ามัวแต่โทษตัวเอง  แต่ขอให้โยนความผิดมายังผู้เขียนแทน


     หลังจากใช้ EMACS ดูสักสองสามวัน ก็คงจะชินไปเอง  ในตอนแรก อาจจะมีจุดที่รู้สึกสับสนและ
ไม่เข้าใจอยู่บ้าง  แต่สิ่งนี้ย่อมเกิดขึ้นเสมอ เวลาแต่เริ่มใช้ Editor ใหม่ใด  ก็ตาม  โดยเฉพาะ
อย่างยิ่งกับ EMACS เนื่องจากเป็นโปรแกรมที่มีความสามารถหลากหลายมาก   อันที่จริงแล้ว EMACS
ทำได้ทุกสิ่งทุกอย่าง



ขอขอบคุณ
=======
     เอกสารฉบับนี้ ดัดแปลงมาจาก "MicroEMACS (kemacs) ภาษาญี่ปุ่น เบื้องต้น" ซึ่งได้มาจาก
JUNET เพื่อให้ใช้เป็น Tutorial สำหรับ GNUEmacs (Nemacs)

     เอกสารนี้ ดัดแปลงมาจาก "JOVE Tutorial" (19 มกราคม 86) ของ Jonathan Payne
     ซึ่งดัดแปลงมาจากเอกสารของ Steve Zimmerman แห่ง CCA-UNIX ซึ่งดัดแปลง (อีกที) มา
     จากเอกสาร "Teach-Emacs" ฉบับเบื้องต้น (31 ตุลาคม 85) ของ MIT

     Update - February 1986 by Dana Hoggatt.

     Update - December 1986 by Kim Leburg.

     Update/Translate - July 1987 by SANETO Takanori

ขอขอบคุณเป็นพิเศษ
==============

     คุณ SANETO Takanori (ซาเนโตะ ทากาโนริ) ผู้แปลภาษาญี่ปุ่นฉบับแรกสุด  เอกสารฉบับนี้
เขียนด้วย GMW + Wnn + Nemacs  ขอแสดงความขอบคุณ แด่ผู้ที่สร้างโปรแกรมสุดวิเศษเหล่านี้ขึ้น
และขอขอบคุณ คุณ Fujiwara Shoko ที่ให้ความช่วยเหลือในการแปล การป้อนข้อมูล และอย่างอื่นอีก
หลาย  อย่าง




ขอรับผิดชอบ การแปลที่ผิดพลาด ข้อมูลเท็จ และอื่น  ไว้แต่เพียงผู้เดียว

                        ซุซูกิ ฮิโรโนบุ@sra.co.jp


Update/Add - December 1987 by Hironobu Suzuki
Update/Add - November 1989 by Ken'ichi Handa
Update/Add - January  1990 by Shigeki Yoshida
Update/Add - March    1992 by Kenichi HANDA

Translated into Thai
          - September 1994 by Manop Wongsaisuwan
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.