GNU Emasc'i oğrenmek.
Bolum 1: Emacs ’ın Temelleri
Bazılarınız muhtemelen klavyeyi eline alıp yazmaya başlamak icin can atıyor. Sizi durdurmaya calışmayacağız; "Emacs'ı Başlatmak" adlı bolume donun ve devam edebilirsiniz. Ancak daha sonra ara vermeye hazır olduğunuzda bu bolumun başlangıcını okuyun. Aşağıdaki girişte tartışacağımız bazı temel kavramları anlarsanız, Emacs'ı oğrenmek cok daha kolaydır.
Emacs ’e Giriş
GNU Emacs, bugun dunyada en yaygın kullanılan metin editorlerinden biridir. Bircok kullanıcı Emacs'i vi'ye (Unix'in standart metin editoru) veya diğer GUI metin duzenleyicilerine tercih eder. Emacs neden bu kadar populer? Emacs en yeni arac değil ve kesinlikle en guzeli de değil. Ama oğreneceğiniz en faydalı arac olabilir. Emacs hakkında faydalı işler yapabilmeniz icin bilmeniz gerekenleri, etkili bir şekilde kullanmanızı sağlayacak şekilde sunmak istiyoruz. Bu kitap, Emacs kullanıcıları icin bir rehberdir; sıradan kullanıcılardan programcılara kadar bircok okuyucunun ihtiyaclarını karşılamaya calışır.
Bu nedenle yaklaşımımız, Emacs'ın yaptığı her şeyi size kesinlikle soylemek değildir. Bu kitabın acıklamadığı bircok ozelliği ve komutu var. Bunun bir sorun olduğunu duşunmuyoruz; Emacs, bunların ne olduğunu anlamanıza yardımcı olan kapsamlı bir cevrimici yardım olanağına sahiptir. Dikkatimizi, faydalı işlerin nasıl yapılacağını acıklamaya odaklıyoruz. İlk uc bolumde temel duzenlemeyi ele aldıktan sonra, kapsamlı bir calışma ortamı olarak Emacs'ın nasıl kullanılacağını acıklıyoruz: birden cok arabellek (buffer) ve pencere ile uretkenliğin nasıl artırılacağı, Emacs editorunden ayrılmadan komutların nasıl verileceği, ozel duzenleme modlarından nasıl yararlanılacağı, ozel dosya turlerini (ceşitli programlama dilleri icin kaynak dosyaları) duzenlemek icin Emacs'in nasıl kullanılacağı vb gibi. En onemli komutları ve en onemli duzenleme modlarını ele alıyoruz. Ancak, her zaman bir ilkeyi aklınızda tutmalısınız: Emacs bircok şeyi iyi yapar, ancak bu nedenle de onemli değildir. Asıl onemli olan ise Emacs ’in yapmanız gereken farklı şeylerin entegrasyonu nedeniyle onemli olmasıdır.
Entegrasyon ne demek? Basit bir ornek yardımcı olacaktır. Birinin size yeni bir yazıcıya erişmek icin ozel bir komutu acıklayan bir posta mesajı gonderdiğini varsayın. Bir Emacs kabuğu acıp komutu Emacs'a yapıştırabilir ve doğrudan calıştırabilirsiniz. Eğer calışırsa, komut icin bir takma ad oluşturmak uzere başlangıc dosyanızı duzenleyebilirsiniz. Tum bunları duzenleyiciden ayrılmadan ve komutu bir kez, yeniden yazmak zorunda kalmadan yapabilirsiniz. Bu yuzden Emacs cok gucludur. Bir editorden daha fazlasıdır; calışma şeklinizi değiştirebilecek eksiksiz bir ortamdır.
Size ilk tavsiyelerden birini daha vereceğiz. Bircok kişi Emacs'ın oğrenilmesi son derece zor bir editor olduğunu duşunuyor. Bunun nedenini bilmiyoruz. Kuşkusuz, bircok ozelliği var ve muhtemelen hepsini asla kullanmayacaksınız. Ancak herhangi bir editor, ne kadar basit veya karmaşık olursa olsun, aynı temel işlevlere sahiptir. Eğer bunlardan birini oğrenebilirseniz, herhangi birini de oğrenebilirsiniz. Size komutları hatırlamanıza yardımcı olacak standart anımsatıcı işaretler ("C-p onceki satır anlamına gelir" gibi) sağlayacağız, ancak bunların bile gerekli olduğunu duşunmuyoruz. Oğrenme surecinde sizi bir ilk kamburdan kurtarırlar, ancak uzun vadede fazla bir fark yaratmazlar. Bir editoru kullanmayı oğrenmek temel olarak parmak alışkanlıklarını oğrenmekle ilgilidir: onceki satıra gecmek icin parmaklarınızı nereye koyacağınızı oğrenmek gibi. Emacs ile denemeler yapıp orneklerimizden birkacını yazmayı denerseniz, bu parmak alışkanlıklarını hızla edineceksiniz. Ve bu alışkanlıkları edindikten sonra, bisiklete binmeyi unutup tekrar hatırladığınız gibi asla unutmayacaksınız. Emacs'ı bir veya iki gun kullandıktan sonra, "C-p onceki satır anlamına gelir" diye duşunmemize gerek kalmamıştı. Cunku parmaklarımız nereye gideceğini biliyordu. Bu noktada olduğunuzda, yuvadasınız demektir. Emacs ile yaratıcı olabilir ve ozelliklerini sizin icin nasıl calıştıracağınızı duşunmeye başlayabilirsiniz. Emacs'in kapsamlı menuleri vardır, ancak yine de yaygın olarak kullanılan komutlar icin tuş bağlantılarını oğrenmenizi oneririz. İyi parmak alışkanlıkları sizi inanılmaz derecede hızlı bir daktilo yazarı yapabilir ve klavyeden fareye ulaşmak ise yalnızca sizi yavaşlatır.
Parmak alışkanlıkları yaklaşımı, bu kitabı okumanın farklı bir yolunu da ima ediyor. Entelektuel olarak, bir okumadan cok şey almak mumkundur, ancak her gun yalnızca birkac yeni alışkanlık oluşturabilirsiniz. (Tabii bunlar kotu alışkanlıklar değilse.) 2. Bolum, kullanacağınız temel duzenleme tekniklerinin coğunu kapsar. Her seferinde biraz farklı bir odakla birkac kez okumanız gerekebilir. Orneğin, Emacs size ilerlemek icin bircok farklı yol sunar: bir karakter, bir kelime, bir satır, bir cumle, bir paragraf, bir sayfa vb. şeklinde ilerleyebilirsiniz. Bu tekniklerin tumu Bolum 2'de ele alınmaktadır. İleri ve geri hareket etmeyi oğrenerek başlayın, ardından yavaş yavaş daha karmaşık komutlar ekleyin. Benzer şekilde, Emacs, bir dosyada arama yapmak icin Bolum 3'te ele alınan bircok farklı teknik sunar. Hepsini bir kerede oğrenmek zorunda hissetmeyin; bir şey secin, pratik yapın ve bir sonraki konuya gecin. Kitabımızın ilk uc bolumunu birkac kez calışmak zorunda kalırsanız eğer, kimse bundan şikayet etmeyecektir. Cunku iyi alışkanlıklar geliştirmek icin harcanan zaman, iyi harcanan zamandır.
Dosyaları ve ara belleği anlamak
Aslında Emacs ile dosyaları gercekten duzenlemiyorsunuz. Bunun yerine, Emacs bir dosyanın iceriğini gecici bir arabelleğe kopyalar ve siz onu duzenlersiniz. Siz arabelleği kaydedene kadar diskteki dosya değişmez. Dosyalar gibi, Emacs arabelleklerinin de adları vardır. Bir arabelleğin adı genellikle duzenlemekte olduğunuz dosyanın adıyla aynıdır. Bir kac istisna var. Bazı arabelleklerin ilişkili dosyaları yoktur; orneğin, *scratch*, bir karalama defteri gibi yalnızca gecici bir uygulama arabelleğidir; yardım aracı, yardım mesajlarını aynı zamanda bir dosyaya bağlı olmayan *Help* adlı bir arabellekte goruntuler.
Tek kelimeyle modlar
Emacs, bazı unlu işlevselliklerini, biraz farklı davrandığı ceşitli duzenleme modlarına sahip olarak elde eder. Kelime modu kulağa teknik gelebilir, ancak bunun asıl anlamı, Emacs'in eldeki goreve duyarlı hale gelmesidir. Yazarken, her satırın sonunda Enter tuşuna basmak zorunda kalmamak icin genellikle sozcuk kaydırma gibi ozellikler istersiniz. Programlama yaparken, dile bağlı olarak kodun doğru bicimlendirilmesi gerekir. Yazmak icin metin modu vardır; programlama icin C, Java ve Perl gibi dilleri iceren farklı modlar vardır. Bu yuzden Mondlar, Emacs'in farklı gorevler icin istediğiniz turden bir editore donuşmesini sağlar.
Metin modu ve Java modu ana modlardır. Bir arabellek aynı anda yalnızca bir ana mod icinde bulunabilir; bir ana moddan cıkmak icin de bir başkasına girmeniz gerekir. Aşağıdaki tablo ana modlardan bazılarını, ne yaptıklarını ve bu kitapta nerede ele alındıklarını listelemektedir:
ANA MODLAR LİSTESİ
MOD MODUN İŞLEVİ
Temel Mod Varsayılan Moddur (Bolum 6)
Metin Modu Metin Yazmak İcin Kullanılan Moddur (Bolum 2)
Goruntuleme Modu Dosyaları Goruntulemek İcin Kullanılır Fakat Duzenlemek İcin Değil (Bolum 4)
Kabuk Modu Emacs İcinde Bir Kabuk Calıştırmak İcin Kullanılan Moddur (Bolum 5)
Anahat Modu Anahatları Yazmak İcin Kullanılan Moddur (Bolum 7)
Girintili Metin Modu Otomotik Bir Şekilde Metni Girintilemek İcin Kullanılan Moddur (Bolum 7)
Paragraf Girintili Metin Modu Her Paragrafın İlk Satırını Girintilemek İcin Kullanılan Moddur (Bolum 7)
Resim Modu Klavyeyi Kullanarak ASCII Tarzında Cizimler Oluşturmak İcin Kullanılan Moddur (Bolum 7)
HTML Modu HTML Yazmak İcin Kullanılan Moddur (Bolum 8)
SGML Modu SGML ve XML Yazmak İcin Kullaınılan Moddur (Bolum 8)
LaTeX Modu Dosyaları TEX ve LATEX ’e Formatlamak İcin Kullanılan Moddur (Bolum 8)
Derleme Modu Programları Derlemek İcin Kullanılan Moddur (Bolum 9)
CC Modu C, C++ ve Java Programlarrını Yazmak İcin Kullanılan Moddur (Bolum 9)
Java Modu Java Programlarını Yazmak İcin Kullanılan Moddur (Bolum 9)
Perl ve Cperl Modu Perl Programlarını Yazmak İcin Kullanılan Moddur (Bolum 9)
SQL Modu SQL ’i Kullanan Veri Tabanlarıyla Etkileşim Kurmak İcin Kullanılan Moddur (Bolum 9)
Emacs Lisp Modu Emacs Lisp Fonksiyonlarını Yazmak İcin Kullanılan Moddur (Bolum 11)
Lisp Modu Lisp Programlarını Yazmak İcin Kullanılan Moddur (Bolum 11)
Lisp Etkileşim Modu Lisp İfadelerini Yazmak ve Değerlendirmek İcin Kullanılan Moddur (Bolum 9 ve 11)
Bir dosyayı her duzenlediğinizde, Emacs, duzenleyeceğiniz şey icin sizi doğru ana moda sokmaya calışır. “.c” ile biten bir dosyayı duzenlerseniz, sizi cc moduna gecirir. “.el” ile biten bir dosyayı duzenlerseniz, sizi Lisp moduna gecirir. Bazen dosyanın adından cok iceriğine bakar. TEX icin bicimlendirilmiş bir dosyayı duzenlerseniz, Emacs sizi LaTeX moduna gecirir. Hangi modda olmanız gerektiğini soyleyemezse, sizi hepsinden daha genel olan temel moda sokar. Emacs genişletilebilir olduğundan eklenti modları da mevcuttur; burada listelemesek de bu kitapta bazılarından bahsediyoruz.
Ana modlara ek olarak kucuk modlar da vardır. Bunlar, Emacs'ın davranışının belirli bir yonunu tanımlar ve ana modda acılıp kapatılabilir. Orneğin, otomatik doldurma modu, Emacs'in sozcuk kaydırma yapması gerektiği anlamına gelir; uzun bir satır yazdığınızda, otomatik olarak uygun bir satır sonu yapmalıdır. Aşağıdaki liste ise, bazı kucuk yani ikincil modları, yaptıklarını ve bu kitapta nerede ele alındıklarını listeler:
BAZI İKİNCİL MODLARIN LİSTESİ
MOD MODUN İŞLEVİ
Otomatik Doldurma Modu Kelime Kaydırmayı Etkinleştiren Moddur (Bolum 2)
Uzerine Yazma Modu Direk Eklemek Yerine Yazdıkca Yazdığınız Karakterlerin Yerlerini Değiştiren Moddur (Bolum 2)
Oto Kayıt Modu Dosyanızı Ozel Bir Oto Kayıt Dosyasına Otomatik Bir Şekide Ara Sıra Kaydeden Moddur (Bolum 2)
Isearch Modu Aramak Yapmak İcin Kullanılan moddur (Bolum 3)
Flyspell Modu Flyspell Yazım Denetleyicisi İcin Kullanılan Moddur (Bolum 3)
Flyspell Prog Modu Fyspell İle Programların Yazımını Denetlemek İcin Kullanılan Moddur (Bolum 3)
Kısaltma Modu Kısaltılmış Kelimeler Kullanmanıza İzin Veren Moddur (Bolum 3).
Paragraf Girintili Metin Modu Her Paragrafın İlk Satırını Girintilemek İcin Kullanılan Moddur (Bolum 7)
Tekrar Doldurma Modu Duzenledikce Emacs ’in Paragrafları Doldurmaya Calışan Modudur (Biraz deneyseldir, Bolum 2)
Artistik Mod Mouse Kullanarak ASCI tarzı cizimler Oluşturmak İcin Kullanılan Moddur (Bolum 7)
Anahat Modu Anahatları Yazmak İcin Kullanılan Moddur (Bolum 7)
SGML İsim Varlık Modu HTML, SGML ve XML Dkumanlarına Ozel Karakterler Eklemeke İcin Kullanılan Moddur (Bolum 8)
ISO Vurguları Modu Metin Belgelerinin İcine Vurgulanmış Aksanlı Karakterler Eklemek İcin Kullaınılan Moddur
Font Kilitleme Modu Okunabilirliği Artırmak İcin Metinleri Renkler ve Yazı Tipleriyle Ozel Olarak Vurgulamak İcin Kullanılan Moddur (Orneğin, yorumları koddan gorsel olarak ayırmak, Bolum 9).
Derleme Modu Programları Derlemek İcin Kullanılan Moddur (Bolum 9)
Zenginleştirilmiş Mod Metin Niteliklerini Kaydetmek İcin Kullanılan Moddur (Bolum 10)
VC Modu Emacs Altında Ceşitli Versiyon Kontrol Sistemlerini Kullanmak İcin Kullanılan Moddur (Orneğin: git, Bolum 12)
Bilgi Modu Emacs ’in Kendi Dokumantasyonunu Okumak İcin Kulanılan Bir Moddur (Bolum 14)
Paragraf girintili metin modu, anahat modu ve derleme modu dahil olmak uzere bircok modun hem buyuk hem de kucuk yani ikincil modlar olduğunu fark etmiş olabilirsiniz. Her biri tek başına ana mod olarak veya diğer ana mod ile birlikte bir minor yani ikincil mod olarak kullanılabilir.
Bazı belirsiz ama ilginc programlama dilleri (Modula 2 gibi) icin modlar iceren ve burada tartışmayacağımız bircok başka mod da vardır. Ayrıca Emacs ’in kendisinin kullandığı diğer birkac mod da vardır. Orneğin: 5.bolumde acıklanan ve klasoz duzenleme ozelliği icin kullanılan Dired modu gibi.
Ek olarak, eğer Lisp programlama dilinde iyiyseniz kendi modlarınızı da ekleyebilirsiniz. Emacs neredeyse sonsuz bir şekilde genişletilebilir.
EMACS ’i başlatma
Emacs ’i başlatmak icin, basitce Emacs ikonuna tıklayın veya komut satırına “emacs” komutunu yazın ve Enter ’a basın.
Birkac onemli menu ogesi ve calıştırıyor olduğunuz Emacs surumunu acıklayan kısa bir mesaj goreceksiniz. Emacs sıcrayan grafiksel bir ekran veya metinsel bir ekran olarak gorunebilir. Bu mesaj, ilk karakteri yazar yazmaz ortadan kaybolur. Daha sonra Emacs sizi genellikle boş olan “scratch” adlı bir buffer yani arabelleğe yerleştirir ki burası ayrıca deneme yapmanız icin de ideal bir yerdir.
NOT: Emacs ’i nasıl başlatacağınız platformlara gore ceşitlilik gosterebilir. Linux ’un varsayılan olarak masaustunde ikon yoktur. Eğer Emacs ’i bu platformlara yuklediyseniz Windows ve MacOS ’da bu ikonlar bulunabilir. MacOS X ’in “ usr/bin/ “konumuna yuklu bir GNU Emacs surumuyle birlikte geldiğini ve Emacs ’i terminal emulatorunu kullanarak başlattığınızda varsayılan olarak calışan şey olduğunu untmayaın. Eğer Emacs ’i terminal emilatorunden calıştırdıysanız mouse ’ı her calışmanızda kullanamayacaksınız ve ayrıca bazı kısıtlamalar da olacaktır. Sizin icin GNU Emacs ’in daha iyi bir surumu mevcut: detaylar icin 13.bolume bakın.
EMACS ekranı hakkında
Emacs ’e girdiğinizde, editlerinizi yapacağınız pencerenin ust kısmında geniş bir calışma alanı gorursunuz. Aşağıdaki şekle bakın:
Bir imlec pozisyonunuza işaret eder. Ayrıca bu imlec, ozellikle Emacs ’e daha fazla aşina olanlar arasında ve online yardım sisteminde, “point - işaret” olarak da adlandırılır; bu yuzden bu terimi unutmamak cok onemlidir.
Yazmaya başlamadan once herhangi ozel bir şey yapmak zorunda değilsiniz. Alfa numeretik karekterler ve noktalama işaretlerini yazdığınız surece, Emacs onları arabelleğinizin icine ekler. İmlec, Emacs ’in yeni karakterler eklediği yeri belirtir; yazdıkca da ileriye doğru taşınır. Bircok editorun (ozellikle de vi ’nin) aksine, Emacs ’in metin yazmak ve komut vermek icin ayrı modları yoktur. Hemen şimdi birşeyler yazmayı deneyin ve Emacs ’i kullanmanın ne kadar basit olduğunu gormeye başlayacaksınız. (Herhangi bir şebepten dolayı sıkışırsanız eğer, sadece C-g ’tuş kombinasyonunu kullanın).