-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathemacs_docs.tex
2343 lines (1877 loc) · 87.4 KB
/
emacs_docs.tex
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
\documentclass{article}
\usepackage{graphicx}
\usepackage{hyperref}
\usepackage{fontawesome}
\hypersetup{
colorlinks,
citecolor=blue,
filecolor=blue,
linkcolor=blue,
urlcolor=red
}
\usepackage{url}
% verbatim small
\makeatletter
\g@addto@macro\@verbatim\footnotesize
%\renewcommand{\l@section}{\@dottedtocline{1}{1.5em}{2.6em}}
\renewcommand{\l@subsection}{\@dottedtocline{2}{1.5em}{3.0em}}
\renewcommand{\l@subsubsection}{\@dottedtocline{3}{4.4em}{4.0em}}
\makeatother
\title{Tutorial Emacs Bahasa Indonesia}
\author{
@kholidfu\footnote{\url{http://twitter.com/kholidfu}}\\
\footnotesize{\url{https://github.com/kholidfu/emacs\_doc}}
}
\date{\today}
\begin{document}
\maketitle
\tableofcontents
\pagebreak
\section{Pendahuluan}
Dari sekian banyak aplikasi penyunting teks 'jadul' di keluarga
Unix adalah \verb=emacs=. Sama halnya dengan \verb=Vim=, penyunting
teks satu ini juga memiliki penggemar tersendiri (baca: \emph{fanbase} \faSmileO), yang kadang
karena kefanatikannya sampai terjadi \emph{war} antara \verb=emacs=
vs \verb=Vim=. Pertanyaan yang sering muncul adalah ``apakah
\verb=emacs= dapat melakukan ini, apakah \verb=Vim= memiliki fitur
ini?`` Dalam artikel ini, penulis tidak mau terjebak dalam
\emph{war} tersebut, melainkan sekedar menuliskan pengalaman
menggunakan \verb=emacs=, dari kacamata seorang awam.
Salah satu alasan saya belajar \verb=emacs= adalah kenyataan
bahwa beberapa \emph{key bindings} pada program di *Nix
menggunakan \verb=emacs=, sebagai contoh \verb=Bash=. Untuk
melakukan navigasi perintah pada \verb=Bash=,
\emph{default key bindings} yang digunakan adalah \verb=emacs=.
Sebagai contoh, Anda memiliki perintah seperti berikut:
\begin{verbatim}
$ ssh -i key.pem -D 9999 [email protected]
\end{verbatim}
Anda dapat menyunting perintah di atas dengan menggunakan
navigasi seperti pada \verb=emacs=, misal:
\begin{verbatim}
|----------+----------------------------|
| Perintah | Keterangan |
|----------+----------------------------|
| M-f | Menuju ke kata selanjutnya |
| M-4 M-f | Maju 4 kata |
| C-a | Menuju ke awal baris |
| C-e | Menuju ke akhir baris |
|----------+----------------------------|
\end{verbatim}
Atau perintah \verb=C-r= untuk melihat \emph{history} perintah
pada \verb=Bash=, di mana perintah ini kalau di \verb=emacs=
digunakan untuk pencarian ke belakang (\emph{backward-search}),
hampir sama bukan?
Itu hanya contoh kecil saja, karena saya sering bekerja dengan
\verb=terminal=, maka menguasai dasar-dasar navigasi dalam
\verb=emacs= berguna untuk menyunting perintah secara cepat.
Sekali lagi, tulisan ini bukanlah sebuah tutorial lengkap
program \verb=emacs=, melainkan sekedar catatan pribadi penulis
yang coba dituangkan kedalam sebuah berkas elektronik dengan
tujuan agar lebih mudah disebarluaskan kepada siapa saja yang
membutuhkan. Semoga bermanfaat...
\subsection{Tentang Emacs}
\emph{GNU Emacs is an extensible, customizable text editor - and more.}\footnote{http://www.gnu.org/software/emacs/}
\verb=Emacs= termasuk dalam keluarga aplikasi penyunting teks,
namun memiliki kelebihan dari sisi \emph{extensibility}. Tidaklah
heran beberapa kalangan menyebut \verb=emacs= sebagai sebuah sistem
operasi, karena selain menyunting teks, dengan \verb=emacs=, Anda dapat
membaca \emph{email}, menjelajah \emph{website}, dan memainkan
beberapa aplikasi permainan sederhana, \emph{FTP client}, \emph{news reader},
dan masih banyak lagi. Anda pun dapat membuat versi \verb=emacs= Anda sendiri,
selama Anda memahami bagaimana cara melakukan pengembangan pada \verb=emacs=.
Pengembangan aplikasi ini dimulai pada pertengahan 1970-an, dan
masih aktif sampai saat tutorial ini ditulis (2013). \verb=Emacs=
memiliki lebih dari 2.000 perintah \emph{built-in} yang dapat
digunakan untuk membuat \emph{macro} untuk membuat pekerjaan
menjadi otomatis.
\verb=Emacs= dibuat menggunakan \verb=emacs lisp=, sebuah
\emph{variant} dari bahasa \verb=Lisp=.
Versi pertama dari \verb=emacs= ditulis oleh Richard Stallman dan
Guy L. Steele pada tahun 1976.
\verb=Emacs= sendiri memiliki banyak \emph{variant}, dan saat ini
\emph{variant} yang paling banyak dipakai adalah \verb=GNU Emacs=
yang dibuat oleh Stallman untuk \emph{GNU Project}.
Berikut adalah tampilan default emacs\footnote{GNU Emacs 25.2.2}.
\vspace{12pt}
\includegraphics[scale=0.45]{images/emacs1.png}
\vspace{12pt}
Anda juga dapat menjalankan emacs dalam mode text-mode (non-GUI)
dengan menambahkan parameter \verb=-nw=.
\begin{verbatim}
$ emacs -nw
\end{verbatim}
\vspace{12pt}
\includegraphics[scale=0.5]{images/emacs-nox.png}
\vspace{12pt}
Dan berikut ini tampilan awal emacs yang sudah saya custom (GUI):
\vspace{12pt}
\includegraphics[scale=0.45]{images/emacs2.png}
\vspace{12pt}
\section{Bekerja dengan Berkas}
Berikut perintah ketika bekerja dengan berkas:
\begin{verbatim}
|----------+--------------------------------------------------|
| Perintah | Keterangan |
|----------+--------------------------------------------------|
| C-x C-f | Membuka berkas |
| C-x C-s | Menyimpan berkas |
| C-x s | Menyimpan semua berkas yang sedang disunting |
| C-x i | Memasukkan teks dari berkas lain ke dalam berkas |
| | yang sedang disunting |
| C-x C-v | Mengganti berkas yang sedang disunting dengan |
| | berkas lain |
| C-x C-w | Menyimpan buffer ke dalam berkas lain |
| C-x C-q | Mengubah ke mode read-only |
| C-x C-k | Menutup berkas |
|----------+--------------------------------------------------|
\end{verbatim}
\section{Dasar-dasar Navigasi}
Sebelum masuk ke pembahasan mengenai navigasi, mari kita
pelajari terlebih dahulu apa yang dimaksud dengan karakter
\verb=Control= dan karakter \verb=Meta= pada \verb=emacs=.
Penting juga untuk diketahui penggunaan istilah \emph{point} yang tidak
lain adalah \emph{cursor} (kursor) atau posisi letak \emph{mouse} Anda dalam
dokumen.
\subsection{Karakter Control dan Meta}
Program penyunting teks \verb=emacs= akan sering sekali
melibatkan dua tombol pada \emph{keyboard}, yakni tombol
\verb=Ctrl= dan tombol \verb=Meta=. Untuk tombol \verb=Ctrl=
(sering disingkat dengan \verb=C=), saya yakin semua sudah
mengetahui, lalu di mana letak tombol \verb=Meta (M)=?
Saya menggunakan sistem operasi \verb=Ubuntu= dan tombol
\verb=Meta= secara otomatis di-\emph{assign} pada tombol
\verb=Alt=.
Ketika Anda bekerja dengan \verb=emacs= dalam mode \emph{GUI},
penggunaan tombol \verb=Alt= sebagai karakter \verb=Meta=
tidak menjadi masalah. Namun ketika Anda bekerja dengan mode
\emph{command line} (\verb=emacs -nw=) menggunakan program
\verb=gnome-terminal=, hal ini akan menjadi masalah, karena
begitu Anda tekan tombol \verb=Alt=,
otomatis \verb=gnome-terminal= akan mengaktifkan \emph{menu access}.
Solusinya adalah dengan mengubah pengaturan pada
\verb=gnome-terminal= dengan cara:
\begin{verbatim}
Edit->Keyboard Shortcuts->Hilangkan centang pada "Enable menu access keys"
\end{verbatim}
\subsection{Navigasi}
Sama seperti \verb=Vim=, pengguna \verb=emacs= akan
merasakan manfaat yang lebih besar ketika meminimalkan
penggunakan perangkat \emph{mouse} mereka. Untuk itu mari kita
belajar melakukan navigasi pada \verb=emacs= menggunakan
perangkat \emph{keyboard}.
Berikut ini beberapa perintah navigasi dasar pada \verb=emacs=:
\begin{verbatim}
|----------+------------------------------------------------|
| Perintah | Keterangan |
|----------+------------------------------------------------|
| C-f | Bergerak maju 1 karakter |
| C-b | Bergerak mundur 1 karakter |
| M-f | Bergerak maju 1 kata |
| M-b | Bergerak mundur 1 kata |
| C-a | Bergerak ke awal baris |
| C-e | Bergerak ke akhir baris |
| C-n | Bergerak ke baris selanjutnya (bawah) |
| C-p | Bergerak ke baris sebelumnya (atas) |
| C-v | Menggulung layar ke bawah |
| M-v | Menggulung layar ke atas |
| C-l | Menempatkan point tepat di tengah layar |
| M-< | Menuju ke awal (top) buffer |
| M-> | Menuju ke akhir (bottom) buffer |
| M-a | Menuju ke awal kalimat |
| M-e | Menuju ke akhir kalimat |
| C-m | Membuat baris baru tepat di bawah posisi point |
| C-o | Membuat baris baru tepat di atas posisi point |
| C-j | Membuat baris baru dan indent |
|----------+------------------------------------------------|
\end{verbatim}
Selain, perintah di atas, salah satu favorit saya untuk melakukan navigasi
adalah dengan memanfaatkan \emph{search}. \verb=Emacs= memiliki dua
macam \emph{search}, yakni \emph{incremental search} dan
\emph{non-incremental search}. Masing-masing terbagi lagi
menjadi dua, yakni \emph{forward-search} dan \emph{backward-search}.
Berikut perintah untuk melakukan \emph{search}:
\begin{verbatim}
|-------------------------------+---------------------------------|
| Perintah | Keterangan |
|-------------------------------+---------------------------------|
| C-s <character/word> <RETURN> | forward incremental search |
| C-r <character/word> <RETURN> | backward incremental search |
| C-s <RETURN> <character/word> | forward non-incremental search |
| C-r <RETURN> <character/word> | backward non-incremental search |
|-------------------------------+---------------------------------|
\end{verbatim}
Berikut contoh untuk melakukan navigasi secara cepat menggunakan fitur
\emph{incremental search}:
\begin{verbatim}
emacs adalah program penyunting teks yang handal.
\end{verbatim}
Letakkan \emph{point} pada awal kalimat di atas dengan menekan \verb=C-a=,
kemudian tekan \verb=C-s=, untuk menuju ke huruf \verb=t= pada kata
\verb=teks=, gunakan perintah \verb=C-s t C-s= kemudian tekan \verb=enter=.
Untuk menuju ke karakter \verb=t= berikutnya, cukup tekan \verb=C-s=
berulang-ulang.
Dan berikut contoh untuk \emph{backward incremental search}, mari kita
asumsikan \emph{point} berada pada akhir baris, untuk menuju ke huruf
\verb=e= pada kata \verb=teks=, cukup tekan \verb=C-r e=, kemudian tekan
\verb=enter=.
Dengan menguasai hal ini saja, penulis yakin kecepatan Anda dalam menyunting
teks akan meningkat drastis (dibandingkan dengan harus menggunakan
\emph{mouse}).
\subsection{Numeric argument}
\emph{Numeric argument} pada \verb=emacs= merupakan salah satu fitur
untuk meningkatkan efisiensi pekerjaan. Dengan fitur ini, kita dapat
mengulang seberapa banyak sebuah perintah untuk dijalankan. Berikut
beberapa contoh penggunaan \emph{numeric argument} pada \verb=emacs=.
\begin{verbatim}
|-----------+----------------------------------------|
| Perintah | Keterangan |
|-----------+----------------------------------------|
| C-u 8 C-f | Bergerak 8 karakter ke kanan |
| C-u 8 C-n | Bergerak 8 baris ke bawah |
| C-u 8 * | Mengetik tanda bintang sebanyak 8 kali |
|-----------+----------------------------------------|
\end{verbatim}
\section{Dasar-dasar Penyuntingan Teks}
Untuk memulai pengetikan, Anda tinggal menekan tombol-tombol yang ada pada
\emph{keyboard} Anda. Satu hal yang perlu ditekankan di sini, apabila Anda
ingin mengetik secara efektif dan efisien, ada 2 syarat penting, yakni pertama
tinggalkan penggunaan perangkat \emph{mouse} Anda, dan sebisa mungkin hindari
penggunaan tombol panah untuk melakukan navigasi.
\subsection{Menyorot Teks}
Melakukan seleksi (sorot) pada \verb=emacs= cukup dengan menekan tombol:
\begin{verbatim}
|-----------+------------------------------------|
| Perintah | Keterangan |
|-----------+------------------------------------|
| C-<Space> | Mark Set (mengaktifkan mode sorot) |
|-----------+------------------------------------|
\end{verbatim}
Kemudian diikuti dengan \emph{motion} untuk menandai daerah yang akan disorot.
Misal untuk menyorot sebuah baris:
\begin{verbatim}
|-----------+-----------------------|
| Perintah | Keterangan |
|-----------+-----------------------|
| C-a | Menuju ke awal baris |
| C-<Space> | Mulai sorot |
| C-e | Menuju ke akhir baris |
|-----------+-----------------------|
\end{verbatim}
\subsection{Menghapus Teks}
Berikut kombinasi perintah untuk melakukan penghapusan teks dalam \verb=emacs=:
\begin{verbatim}
|---------------+--------------------------------------------------|
| Perintah | Keterangan |
|---------------+--------------------------------------------------|
| <Backspace> | Menghapus 1 karakter sebelum point |
| C-d | Menghapus 1 karakter di atas point |
| M-<Backspace> | Menghapus 1 kata sebelum point |
| M-d | Menghapus 1 kata setelah point |
| C-k | Menghapus dari posisi point sampai akhir baris |
| M-k | Menghapus dari posisi point sampai akhir kalimat |
|---------------+--------------------------------------------------|
\end{verbatim}
Anda juga dapat menggabungkan perintah penghapusan ini dengan fitur
\emph{numeric argument}, misal untuk menghapus 2 baris, gunakan perintah
berikut:
\begin{verbatim}
|-----------+----------------------------|
| Perintah | Keterangan |
|-----------+----------------------------|
| C-a | Menuju ke awal baris |
| C-u 2 C-k | Menghapus 2 baris ke bawah |
|-----------+----------------------------|
\end{verbatim}
\subsection{Killing and Yanking}
\verb=Emacs= menggunakan istilah \emph{killing} untuk \emph{cutting}, dan
\emph{yanking} untuk \emph{pasting}. \emph{Killing} memindahkan teks dari
\emph{buffer} ke bagian paling atas dari \emph{kill ring} (\emph{clipboard}).
\emph{kill ring} ini sendiri mampu menampung sampai 60 buah \emph{killed items}.
Anda dapat memanggil \emph{kill ring} ini menggunakan perintah \verb=M-y=,
tekan lagi untuk memanggil \emph{kill items} sebelumnya, dan seterusnya.
Berikut cara untuk berinteraksi dengan \emph{kill ring}:
\begin{verbatim}
|----------+-----------------------------------|
| Perintah | Keterangan |
|----------+-----------------------------------|
| C-w | Killing |
| C-y | Yanking |
| M-y | Memanggil yank sebelumnya |
| M-y | Memanggil yank sebelumnya, dst... |
|----------+-----------------------------------|
\end{verbatim}
Membingungkan? Tenang ... Itu hanya karena belum terbiasa saja ... :)
\subsection{Salin dan Tempel}
Perintah untuk menyalin teks dalam \verb=emacs=:
\begin{verbatim}
|----------+----------------------|
| Perintah | Keterangan |
|----------+----------------------|
| M-w | Menyalin (copy) teks |
| C-y | Paste (yank) teks |
|----------+----------------------|
\end{verbatim}
Berikut ini contoh perintah untuk salin baris:
\begin{verbatim}
|----------+--------------------|
| Perintah | Keterangan |
|----------+--------------------|
| C-a | Menuju awal baris |
| C-k | Hapus baris |
| C-y | Tempel baris |
| C-m | Membuat baris baru |
| C-y | Tempel lagi |
|----------+--------------------|
\end{verbatim}
\subsection{Salin Tempel Seleksi}
\begin{verbatim}
|-----------------------+---------------------|
| Perintah | Keterangan |
|-----------------------+---------------------|
| C-<Space> | Start the selection |
| C-p / C-n / C-f / C-b | Memilih area |
| C-w | Cut |
| M-w | Copy |
| C-y | Paste |
|-----------------------+---------------------|
\end{verbatim}
\subsection{Memotong (Cut) Teks}
Perintah untuk memotong teks dalam \verb=emacs=:
\begin{verbatim}
|----------+-------------------------|
| Perintah | Keterangan |
|----------+-------------------------|
| C-w | Memotong (cut) teks |
| C-y | Menempel (paste) (yank) |
|----------+-------------------------|
\end{verbatim}
\section{Mengakses Bantuan (Help)}
Ini adalah fitur yang \textbf{wajib} dikuasai oleh setiap pengguna
\verb=Emasc=, kenapa? Karena otak kita tidak mungkin untuk mengingat
semua kombinasi tombol perintah yang ada pada \verb=Emacs=.
Berikut ini beberapa tips yang penulis pakai untuk mengakses menu bantuan
(\emph{help}) untuk menemukan informasi yang kita inginkan.
Tekan \verb=C-h a= (\verb=a= untuk \verb=apropos=) untuk memunculkan
menu bantuan, kemudian ketik \emph{keyword} yang ingin kita cari,
misalkan saya ingin mengetahui bagaimana cara membuka daftar
\emph{buffers} yang aktif, saya ketikkan saja \emph{buffers list},
kemudian \verb=emacs= merespon dengan informasi yang [mungkin] terkait
dengan \emph{keyword buffers list}. Selanjutnya tinggal kita pilih dan
buka informasi mana yang mungkin relevan.
Contoh kedua adalah mencari tahu kombinasi tombol pada \verb=emacs= untuk
melakukan suatu pekerjaan. Misalkan saya ingin mencari kombinasi tombol untuk
menggulung layar pada \emph{window} lain. Ketikkan saja \verb=C-h b=,
\verb=b= di sini singkatan dari \emph{bindings}, ketik
\emph{keyword scroll other}, tekan \verb=Enter=, dan muncullah informasi
yang mungkin terkait dengan apa yang kita cari, untuk lebih cepat menemukan
tinggal kita gunakan saja fungsi \emph{search} (\verb=C-s=) diikuti dengan
kata yang ingin dicari.
Dan tentunya masih banyak lagi contoh lain, yang jelas fitur bantuan yang
sangat lengkap ini tentu saja memudahkan bagi siapa saja (baik yang sudah
mahir atau pun masih pemula) untuk mengatasi permasalahan yang dihadapi
ketika bekerja dengan \verb=Emacs=, tanpa harus melakukan jelajah ke
dunia maya.
\section{Buffers}
\verb=Emacs= memiliki 2 jenis \emph{buffer}, yang terkait dengan berkas dan
yang tidak terkait dengan berkas.
\begin{verbatim}
|----------+------------------------------------------------|
| Perintah | Keterangan |
|----------+------------------------------------------------|
| C-x C-f | Membuka buffer berkas |
| C-x C-c | Menutup emacs |
| C-x k | Menutup (kill) berkas (buffer) |
| C-x C-s | Menyimpan berkas |
| C-x C-w | Menyimpan buffer sebagai berkas baru (save as) |
|----------+------------------------------------------------|
\end{verbatim}
Berikut ini beberapa perintah untuk bekerja dengan \emph{buffer} pada
\verb=emacs=:
\begin{verbatim}
|-------------------+--------------------------------------------------|
| Perintah | Keterangan |
|-------------------+--------------------------------------------------|
| C-x <Panah Kanan> | Berpindah ke buffer berikutnya |
| C-x <Panah Kiri> | Berpindah ke buffer sebelumnya |
| C-x b | Berpindah ke named buffer |
| C-x C-b | Membuka named buffer dalam mode horizontal split |
| C-x C-b | Daftar buffer yang aktif |
| C-x 1 | Kembali ke buffer aktif |
| C-x s | Menyimpan perubahan di semua buffer |
|-------------------+--------------------------------------------------|
\end{verbatim}
Ada dua perintah untuk menyimpan berkas, yang pertama menggunakan
\verb=C-x C-s=, di mana perintah ini akan menyimpan perubahan hanya pada
\emph{buffer} yang aktif, dan perintah kedua adalah \verb=C-x s=, yang mana
akan menyimpan semua perubahan yang ada pada semua \emph{buffer} berkas
yang sedang kita sunting. Perintah kedua ini akan diikuti dengan
\emph{confirmation} apakah kita akan menyimpan perubahan tersebut pada setiap
\emph{buffer}-nya.
\subsection{ido-mode}
Selain menggunakan \emph{default buffer}, \verb=emacs= juga menyediakan beberapa
\emph{mode} untuk bekerja dengan \emph{buffer} secara lebih efisien. Keduanya
adalah \verb=iswitchb-mode= dan \verb=ido-mode=.
Keduanya memiliki cara kerja yang sama, namun untuk \verb=emacs 22+=, lebih
disarankan menggunakan \verb=ido-mode=. Pertanyaan selanjutnya apa beda
antara \verb=ido-mode= dengan sistem \emph{buffer} bawaan?
Salah satu hal yang mendasar adalah dengan menekan \verb=C-x b=, pada
\verb=ido-mode= Anda dapat melihat semua daftar \emph{buffer} yang tersedia,
sedangkan jika menggunakan \emph{buffer} bawaan, menekan \verb=C-x b=, Anda
tidak dapat melihat daftar \emph{buffer}.
Berikut perintah untuk \verb=ido-mode=:
\begin{verbatim}
|--------------+------------------------------------------|
| Perintah | Keterangan |
|--------------+------------------------------------------|
| M-x ido-mode | mengaktifkan ido-mode |
| C-x b | melihat daftar buffer |
| C-s | berpindah (rotate) antar buffer forward |
| C-r | berpindah (rotate) antar buffer backward |
| C-x k | kill buffer |
|--------------+------------------------------------------|
\end{verbatim}
\verb=ido-mode= (singkatan dari \emph{interactive-do}) juga mendukung
\emph{auto-completion} dengan mengetikkan beberapa karakter kemudian tekan
\verb=TAB=. Anda dapat membuat \emph{buffer} baru dengan mengetikkan
nama \emph{buffer}, kemudian tekan \verb=ENTER= dua kali.
Apabila Anda ingin selalu menggunakan \verb=ido-mode= setiap kali \verb=emacs=
dijalankan, tambahkan baris berikut pada berkas \verb=~/.emacs= Anda:
\begin{verbatim}
(ido-mode t) ; set ido-mode true
\end{verbatim}
\subsection{transient-mark-mode}
Mulai dari \verb=emacs 23+=, \emph{transient-mark-mode} diaktifkan secara
\emph{default}. Anda dapat menonaktifkan \emph{mode} ini dengan menekan:
\begin{verbatim}
|----------+---------------------|
| Perintah | Keterangan |
|----------+---------------------|
| M-x | transient-mark-mode |
|----------+---------------------|
\end{verbatim}
Apa keuntungan kita men-\emph{disabled mode} ini? Salah satunya adalah untuk
keperluan \emph{bookmarking}, sebagai contoh Anda sekarang berada pada baris
ke-200, kemudian Anda tekan \verb=M-g g 100= untuk lompat ke baris 100.
Setelah selesai melakukan penyuntingan pada baris ke-100, Anda dapat lompat
kembali ke baris ke-200 dengan hanya menekan \verb=C-x C-x=.
Pertanyaan selanjutnya adalah apakah sebaiknya \emph{transient-mark-mode}
di-\emph{enable} atau di-\emph{disabled}? Itu semua kembali pada Anda, jika
Anda sering melakukan \emph{copying}, \emph{killing}, dan \emph{yanking}, maka
sebaiknya \emph{transient-mark-mode} diaktifkan. Namun jika Anda sering
lompat-lompat antar baris, sebaiknya di non-aktifkan, tergantung selera ...
\subsection{*scratch* buffers}
Setiap kali Anda membuka \verb=emacs=, ada beberapa \emph{buffers} yang secara
otomatis dibuka oleh \verb=emacs= (dinamakan juga \verb=emacs= \emph{buffer}).
Kalau Anda membuka \emph{buffer} lagi, maka itu dinamakan sebagai
\emph{user buffers}.
Salah satu \verb=emacs= \emph{buffer} adalah \verb=*scratch*=, yang sesuai
dengan namanya, ini adalah tempat di mana Anda dapat melakukan corat-coret
terkait dengan apa yang sedang Anda kerjakan.
Selain itu, penulis sering memanfaatkan \emph{buffer} ini sebagai
\emph{command-mode}-nya \verb=emacs=. Kenapa? Karena ketika saya sedang di
depan komputer, kadang ada gangguan internal (baca: anak minta ikut coding),
sementara kita tidak ingin pekerjaan teracak-acak olehnya. Dengan menggunakan
\verb=*scratch*= \emph{buffer} ini, kita tidak perlu lagi khawatir pekerjaan
jadi kacau balau karenanya.
Anda pun dapat menjadikan \verb=*scratch*= \emph{buffer} ini sebagai media
untuk belajar bahasa pemrograman \verb=Lisp=, berikut ini contoh operasi
aritmatika sederhana:
\begin{verbatim}
(+ 5 3)
\end{verbatim}
Tekan \verb=C-j=, maka \verb=emacs= akan mengevaluasi baris tersebut dan
memberikan hasilnya tepat di garis setelahnya.
\begin{verbatim}
(+ 5 3)
8
\end{verbatim}
\section{Bookmarks}
Sesuai dengan namanya, \emph{bookmarks} memungkinkan kita untuk menyimpan
posisi \emph{point} dalam berkas. \emph{Bookmarks} ditandai dengan sebuah nama
yang akan disimpan selama \emph{sessions} \verb=emacs= masih berjalan. Bahkan
ketika isi dari berkas berubah, \emph{bookmark} masih dapat bekerja dengan baik.
Hal ini dikarekanakan \emph{bookmarks} tidak hanya menyimpan posisi \emph{point}
namun juga menyimpan teks apa saja yang ada di sekitar \emph{point}. Namun jika
berkas sudah banyak berubah, mungkin saja \emph{bookmarks} tidak akan bekerja
lagi.
Berikut ini perintah-perintah terkait dengan \emph{bookmarks}:
\begin{verbatim}
|------------------------+-----------------------------------------|
| Perintah | Keterangan |
|------------------------+-----------------------------------------|
| C-x r m BOOKMARK <RET> | menyimpan bookmark dengan nama BOOKMARK |
| C-x r b BOOKMARK <RET> | memanggil bookmark dengan nama BOOKMARK |
| C-x r l | melihat daftar bookmark |
| M-x bookmark-save | menyimpan bookmark ke dalam berkas |
| M-x edit-bookmarks | menyunting bookmark |
|------------------------+-----------------------------------------|
\end{verbatim}
\section{Registers}
Fitur \emph{register} dapat menyimpan teks yang Anda salin, untuk kemudian
Anda tempel di mana pun Anda inginkan (tanpa harus mencari pada \emph{ring}).
Caranya adalah dengan menyimpan teks dalam \emph{register} yang dapat Anda
panggil setiap Anda butuhkan.
Berikut cara untuk bekerja dengan \emph{registers}
\begin{verbatim}
|---------------------------------+--------------------------------------|
| Perintah | Keterangan |
|---------------------------------+--------------------------------------|
| C-x r s k | copy region ke dalam register r |
| | (copy-to-register) |
| C-x r i k | panggil register k (insert-register) |
| M-x append-to-register <RET> k | tambahkan (append) region ke dalam |
| | register k |
| M-x prepend-to-register <RET> k | prepend region ke dalam register k |
|---------------------------------+--------------------------------------|
\end{verbatim}
\section{Search and Replace}
Salah satu fungsi penting sebuah program penyunting teks adalah fungsi cari
dan ganti (\emph{search and replace}). Pada bagian ini kita akan mempelajari
bagaimana \verb=emacs= melakukan fungsi tersebut.
Pencarian pada \verb=emacs= dapat dibagi menjadi dua, pencarian maju dan
pencarian mundur. Pencarian maju lakukan dengan menekan:
\begin{verbatim}
|----------+-----------------------------------|
| Perintah | Keterangan |
|----------+-----------------------------------|
| C-s | Mengaktifkan mode search maju |
| C-s | Mencari next occurence (jika ada) |
| Enter | Keluar dari search mode |
|----------+-----------------------------------|
\end{verbatim}
Pencarian mundur:
\begin{verbatim}
|----------+---------------------------------------|
| Perintah | Keterangan |
|----------+---------------------------------------|
| C-r | Mengaktifkan mode search mundur |
| C-r | Mencari previous occurence (jika ada) |
| Enter | Keluar dari search mode |
|----------+---------------------------------------|
\end{verbatim}
Untuk mencari \emph{previous occurence} pada pencarian mundur dapat juga
dengan menekan tombol \verb=Backspace=.
Anda dapat juga mengubah mode pencarian maju ke mundur (atau sebaliknya)
dengan menekan \verb=C-s= atau \verb=C-r=.
\subsection{Replace String}
Cara pertama adalah menggunakan \emph{eXtended Command} yang dapat diakses
menggunakan \verb=M-x=. Sebagai contoh kita memiliki kalimat berikut:
\begin{verbatim}
Ini ibu budi
\end{verbatim}
Untuk mengganti kata \verb=ibu= menjadi \verb=bapak=, berikut perintah yang
harus dilakukan:
\begin{verbatim}
|--------------------------------------------------+--------------------------|
| Perintah | Keterangan |
|--------------------------------------------------+--------------------------|
| C-a | Menuju ke awal baris |
| C-<SPC> | Mark Set |
| C-e | Sorot sampai akhir baris |
| M-x repl<Tab>s<Tab><Enter>ibu<Enter>bapak<Enter> | |
|--------------------------------------------------+--------------------------|
\end{verbatim}
Cara kedua adalah dengan menggunakan perintah \verb=replace-string=.
Caranya adalah dengan menyorot daerah yang mengandung kata yang akan diganti
kemudian tekan \verb=M-x replace-string= tekan \verb=enter=, masukkan kata
yang ingin diganti, tekan \verb=enter= lagi, kemudian masukkan kata yang
pengganti.
\begin{verbatim}
|---------------------------+------------------------------------|
| Perintah | Keterangan |
|---------------------------+------------------------------------|
| C-space | Mulai menyorot |
| Motion | Tandai daerah yang mengandung kata |
| M-x replace-string | |
| Enter | |
| Masukkan kata yang dicari | |
| Enter | |
| Masukkan kata pengganti | |
| Enter | |
|---------------------------+------------------------------------|
\end{verbatim}
\subsection{Query Replace}
Fitur ini akan mengganti setiap perulangan kata yang dicari pada seluruh dokumen
namun dengan proses konfirmasi sebelumnya. Berikut ini perintahnya:
\begin{verbatim}
|----------------------------------------------------------------+------------|
| Perintah | Keterangan |
|----------------------------------------------------------------+------------|
| M-x query-replace <teks awal> <Enter> <teks pengganti> <Enter> | |
| atau | |
| M-% <teks awal> <Enter> <teks pengganti> <Enter> | |
|----------------------------------------------------------------+------------|
\end{verbatim}
Misal:
\begin{verbatim}
Saya seorang programmer
\end{verbatim}
Anda ingin mengganti kata \verb=programmer= menjadi \verb=coder=:
\begin{verbatim}
|----------------------------------------------------------------|
| Perintah |
|----------------------------------------------------------------|
| C-a |
| M-x query-replace <Enter> <programmer> <Enter> <coder> <Enter> |
|----------------------------------------------------------------|
\end{verbatim}
\section{Modes}
\verb=emacs= memiliki banyak \emph{mode}, berikut ini beberapa \emph{mode} yang sering
penulis pakai:
\subsection{Dired-Mode}
Untuk melakukan pekerjaan manipulasi berkas atau direktori, \verb=emacs=
menyediakan sebuah \emph{mode} bernama \verb=Dired mode=. Sesuai dengan namanya,
\emph{Dired} (\emph{directory editor}) mempermudah kita dalam melakukan manipulasi berkas
atau direktori dengan mudahnya.
Untuk berpindah ke \verb=dired mode=, kita dapat mengetik:
\begin{verbatim}
|-----------+---------------------------|
| Perintah | Keterangan |
|-----------+---------------------------|
| C-x d | aktifkan dired mode, atau |
| M-x dired | aktifkan dired mode |
|-----------+---------------------------|
\end{verbatim}
Dari sini, Anda dapat melakukan manipulasi berkas dan direktori, seperti
misalnya untuk menghapus sebuah berkas, tekan \verb=D= dan seterusnya ...
Berikut beberapa perintah terkait dengan \emph{dired mode}
\begin{verbatim}
|----------+-----------------------------------------------------------|
| Perintah | Keterangan |
|----------+-----------------------------------------------------------|
| <RETURN> | membuka berkas |
| q | menutup direktori |
| C | menyalin berkas |
| R | mengubah (move) nama berkas |
| D | menghapus berkas |
| + | membuat direktori baru |
| Z | compress / decompress berkas menggunakan gzip |
| m | memberi tanda pada berkas |
| u | menghilangkan tanda pada berkas |
| U | menghilangkan tanda pada semua berkas yang sudah ditandai |
| % m | memberi tanda menggunakan regex |
| g | refresh direktori |
| ^ | kembali ke direktori atasnya |
| w | menyalin nama berkas |
| 0w | menyalin full path dan nama berkas |
|----------+-----------------------------------------------------------|
\end{verbatim}
Mungkin ada yang bingung bagaimana cara memindahkan berkas / direktori
pada \emph{dired-mode}? Gampang kok tinggal pilih satu [beberapa] atau
direktori yang ingin Anda pindahkan, kemudian tekan \verb=R=.
\subsection{org-mode}
Apa itu \emph{org-mode}?
\emph{Org mode is for keeping notes, maintaining TODO lists, planning projects, and authoring documents with a fast and effective plain-text system.}\footnote{http://www.orgmode.org}
\emph{org-mode} merupakan salah satu fitur andalan \verb=emacs=. Seperti apakah
\emph{org-mode} itu? Mari kita langsung ke contoh saja ...
\subsubsection{Instalasi}
Pertama kali mari kita pasang \verb=org-mode=, pada \verb=Ubuntu=, ketik:
\begin{verbatim}
sudo apt-get install org-mode
\end{verbatim}
\subsubsection{Aktifkan org-mode}
Buka berkas baru, kemudian aktifkan \emph{org-mode} dengan:
\begin{verbatim}
|--------------+-------------------|
| Perintah | Keterangan |
|--------------+-------------------|
| M-x org-mode | Aktifkan org-mode |
|--------------+-------------------|
\end{verbatim}
Jika Anda ingin \emph{org-mode} terpanggil secara otomatis setiap kali
\verb=emacs= dinyalakan, silakan sunting berkas \verb=.emacs= Anda
dan isikan baris berikut:
\begin{verbatim}
;; Must have org-mode loaded before we can configure org-babel
(require 'org-install)
\end{verbatim}
\subsubsection{Navigasi Cepat}
Untuk berpindah secara cepat antar headline, berikut tombol kombinasinya:
\begin{verbatim}
|----------+----------------------------------|
| Perintah | Keterangan |
|----------+----------------------------------|
| C-c C-n | Berpindah ke headline berikutnya |
| C-c C-p | Berpindah ke headline sebelumnya |
|----------+----------------------------------|
\end{verbatim}
\subsubsection{Format Standar Dokumen Org}
Format dasar dokumen \verb=org= adalah:
\begin{verbatim}
|------+------------------------|
| Kode | Keterangan |
|------+------------------------|
| * | bagian utama |
| ** | subbagian tingkat dua |
| *** | subbagian tingkat tiga |
| - | list |
| /i/ | cetak miring |
| *b/ | cetak tebal |
| _u_ | garis bawah |
| =c= | true type font (code) |
|------+------------------------|
\end{verbatim}
Untuk mengetahui format lain, tekan \texttt{C-c C-x C-f}.
\subsubsection{Promote / Demote Headline}
Fitur ini berguna untuk mengubah secara cepat sebuah \emph{headline} yang
tadinya bintang satu, menjadi bintang dua dan seterusnya.
\begin{verbatim}
|------------------------+---------------------------|
| Perintah | Keterangan |
|------------------------+---------------------------|
| M-S-Panah Kanan / Kiri | Promote / Demote Headline |
|------------------------+---------------------------|
\end{verbatim}
\subsubsection{Ekspor Dokumen}
Dengan menggunakan \emph{org-mode}, Anda dapat dengan mudah meng-\emph{export}
dokumen Anda ke berbagai format, misal \verb=HTML=, \verb=LaTex= maupun
format-format lain.
Berikut contoh berkas yang menggunakan \emph{org-mode}
\begin{verbatim}
* Judul
Isi dari judul
** Sub Judul 1
*** Sub Judul 2
\end{verbatim}
Mari kita \emph{export} dokumen di atas ke dalam format \verb=HTML= dengan cara:
\begin{verbatim}
|----------+------------------------------|
| Perintah | Keterangan |
|----------+------------------------------|
| C-c C-e | Aktifkan export mode |
| b | Pilih b untuk export ke html |
| <RETURN> | Tekan Enter |
|----------+------------------------------|
\end{verbatim}
Silakan ditunggu sebentar, berikutnya \verb=emacs= akan menampilkan hasil
\emph{export} tadi dalam aplikasi \emph{browser}.
Perlu diketahui bahwa \emph{option} \verb=b= di atas hanyalah salah satu dari
sekian banyak pilihan format dokumen yang akan di-\emph{export}. Untuk
format-format lain, silakan di-\emph{explore} lebih lanjut.
\subsubsection{Expand and Collapse Tree}
Jika Anda sudah pernah menggunakan konsep \emph{folding}, tentu tidak akan
bingung, \emph{org-mode} mendukung hal tersebut dengan cara menekan:
\begin{verbatim}
|----------+------------------------|
| Perintah | Keterangan |
|----------+------------------------|
| <TAB> | rotate current subtree |
| atau | |
| S-<TAB> | rotate entire buffer |
|----------+------------------------|
\end{verbatim}
\verb=S= adalah tombol \verb=Shift=.
\subsubsection{Format Font}
Untuk memformat huruf dalam lingkungan \emph{org-mode}, cukup tambahkan
karakter-karakter khusus berikut di awal dan di akhir kata yang ingin
Anda format.
Misalnya, untuk mencetak huruf tebal, tambahkan tanda \verb=*= di awal
dan di akhir kata, \verb=*ini akan dicetak tebal*=.
Berikut daftar lengkap format huruf pada \emph{org-mode}:
\begin{verbatim}
|-------------+-------------------------|
| Perintah | Keterangan |
|-------------+-------------------------|
| *bold* | cetak tebal |
| /italics/ | cetak miring |
| _underline_ | garis bawah |
| =code= | format untuk kode |
| ~verbatim~ | format font mesin ketik |
|-------------+-------------------------|
\end{verbatim}
\subsubsection{Comment}
Untuk melakukan \emph{comment}, gunakan tanda \verb=#= di awal baris, atau
tambahkan kata \verb=COMMENT= jika Anda ingin memberi \emph{comment} pada
sebuah \emph{entry}, sebagai contoh:
\begin{verbatim}
# Ini tidak akan di export
** COMMENT subbagian ini juga tidak akan di export
isi dari subbagian ini juga tidak akan di export
\end{verbatim}
\subsubsection{Lists}
Berikut ini adalah cara membuat \emph{lists} pada \emph{org-mode}:
\begin{verbatim}
- TODO
- Mandi
- Sarapan
- Coding
\end{verbatim}
\noindent\textbf{Merubah Jenis List}
Ada beberapa macam list dalam \emph{org-mode}, seperti angka, tanda kurang,
angka dengan kurung, tanda tambah, dsb. Anda dapat merubahnya secara
otomatis menggunakan tombol:
\begin{verbatim}
|----------------------+------------------------------|
| Perintah | Keterangan |
|----------------------+------------------------------|
| S-Panah Kanan / Kiri | Merubah jenis list numbering |
|----------------------+------------------------------|
\end{verbatim}
\subsubsection{Partial Export}
Selain meng-\emph{export} seluruh dokumen, Anda pun dapat melakukan
\emph{export} hanya pada bagian tertentu, dengan cara menyorot bagian yang