Emacs Notları
Genişletilebilir, özelleştirilebilir, ücretsiz/özgür metin düzenleyici
— ve daha fazlası.
“GNU Emacs sayfasından”
Emacs’ın Kısa Tarihi
1970: MIT AI Lab — TECO editörü
1976: Richard Stallman — TECO’ya makro ve buffer eklendi
1976: Guy Steele ve David Moon — Birleştirilmiş makro düzenleme (Emacs)
1981: James Gossling — Gossling Emacs
1986: Richard Stallman — GNU Emacs
2023: Son Sürüm — Sürüm 29.1
Özellikler ve Yetenekler
İçeriğe duyarlı düzenleme.
Yerleşik belgeler ve öğretici.
Programları derlemek, çalıştırmak ve test etmek için araçlar.
Son derece özelleştirilebilir.
Uzantılar için yerleşik paket yöneticisi.
Entegre shell.
Emacs Arabelleği (Buffer)
“Emacs’ta tüm dosyalar arabellektir, ancak tüm arabellekler dosya değildir.”
Bir arabellek, (Buffer) düzenlemekte olduğunuz metni tutar.
Yalnızca bir arabellek etkin olabilir.
Her arabelleğin benzersiz bir adı vardır ve bazılarının özel adları vardır.
Pencereler ve Çerçeveler
Emacs, modern “pencereleme” işletim sistemlerinden önce gelir.
Emacs Çerçeveleri:
Çerçeveler Emacs “pencereleridir”.
Çerçeveler terminallerde de mevcuttur.
Emacs Pencereleri:
Pencereler, çerçevelerin alt bölümleridir.
Buffer’lar pencerelerde görüntülenir.
Point ve Mark
Nokta (Point)
İmleç için Emacs terimidir.
Konum bağımsız olarak izlenir.
Geçerli arabellek noktası vardır
İşaret (Mark)
Nokta ile çalışır.
Bir bölgenin sınırını temsil eder.
Buffer’daki bir noktaya geri döner.
Öldürmek ve Yanklamak (Killing and Yanking)
(Muhtemelen düşündüğün gibi değil :)
Emacs’ta Kill: Diğer editörlerdeki kesme işlemine eşdeğerdir.
Emacs’ta Yanking: Diğer düzenleyicilerde yapıştırmaya eşdeğerdir.
Peki ya kopyalama? Kill döngüsüne kaydetme olarak bilinir.
Emacs’ta Kill Ring:
- Diğer düzenleyicilerdeki panoya benzer.
- Daha önce öldürülen metnin bir listesini içerir.
- Tüm arabellekler arasında paylaşılır.
Emacs Modları
Mod, Emacs davranışını yararlı şekillerde özelleştiren bir dizi tanımdır.
- GNU Emacs Kılavuzu sayfasından
İki tür: majör ve minör modlar
Majör Modlar
Arabelleklerin Majör modu olmalıdır.
Yalnızca bir Majör mod etkin olabilir.
Tipik olarak dil veya görev odaklıdır.
Minör Modlar
Minör modlar isteğe bağlıdır.
Aynı anda birden fazla Minör mod olabilir.
Genellikle Majör moddan bağımsızdır.
Mac kullananlar için:
(Emacs için iTerm2 profilini değiştirin)
- Çoğu Mac klavyesinde (Meta olarak kullanmak için) alt yoktur.
- Yeni bir profil oluşturun ve tuş haritalamasını değiştirin .
Emacs’i Yükleme
Apt tabanlı sistemlere kurulum:
sudo apt-get update
sudo apt install emacs
rpm tabanlı sistemlere kurulum:
sudo dnf install emacs
Not: Daha eski sistemler için yum kullanın.
sudo yum install emacs
Kaynaktan Emacs oluşturun:
wget https://ftp.gnu.org/pub/gnu/emacs/emacs-VERSION.tar.xz
* VERSION’u yüklemek istediğiniz sürümle değiştirin.
tar -axvf emacs-VERSION.tar.xz
cd emacs-VERSION
./configure
make
make install
Emacs’i Başlatma ve Çıkma
Terminalden
emacs ya da
emacs -nw
Pencereden
“Başlat” menüsünü kullanın.
Çıkmak İçin
ctrl-x ctrl-c
Pencereli seçenek:
Pencerede “X” e tıklayın.
Komutlar ve Tuşlar
Komutlar
Özel Lisp işlevidir.
Programcı tarafından adlandırılmıştır.
Kendin versiyonunuzu yazın.
Tuşlar (Keys)
Bir veya daha fazla giriş dizisi.
Eksiksiz Tuşlar ve örnek Tuşlar.
Komutlara bağlı. (tuş haritaları)
Emacs Mini Buffer (Arabellek)
Minibuffer, Emacs’in bulunduğu yerdir. Dosya adları, bağımsız değişkenler, Emacs komut isimleri veya Lisp ifadeleri gibi karmaşık komutları okur.
Hataları ve genel bilgileri gösterir.
Emacs Yardım
Emacs, kapsamlı yerleşik belgelere ve giriş niteliğinde bir öğreticiye sahiptir.
Yardım sistemi için yardım.
Yardım almak için birden fazla yöntem.
Kendi sorularınızı araştırın ve yanıtlayın.
Describe, Info, ve Apropos
Yardım almanın üç harika yolu:
Describe:
- Ne aradığını bildiğinde kullanışlıdır.
- Tuşları, komutları, işlevleri ve daha fazlasını açıklar.
Info:
- Emacs’ın kendi bilgi kılavuzuna (TeXinfo) erişim
- Yüklü olan diğer TeXinfo kılavuzlarına da erişebilir
Apropos:
- Ne aradığınızdan emin olmadığınızda kullanışlıdır
- Komutları, belgeleri ve daha fazlasını arayabilir
Emacs’i Yapılandırma
Emacs’ın hemen hemen her yönünü yapılandırma ve özelleştirme yeteneği.
-Arayüzü özelleştirin.
-Çoğu davranışı yapılandırın veya değiştirin.
-Kendi Elisp kodunuzu yazın.
Arayüzü Özelleştirin
Yerleşik:
- Emacs’i yapılandırmanın veya özelleştirmenin en uygun yoludur.
- Tüm yönlerini değiştirmeyi desteklemiyor.
Düzen:
- Gruplar ve alt gruplardan oluşur.
- Gruplar genellikle bir paketi, modu veya işlevi temsil eder.
Erişim:
- Arayüzü başlatmak için M-x özelleştir’i kullanın.
- Kullanılabilir kısayollar, örneğin M-x özelleştirme yüzü.
- Değişiklikleri uygulamalı ve kaydetmelisiniz.
- Fare kullanmak yardımcı olabilir.
Paketleme yöneticisi
Emacs, Emacs Lisp Kitaplığı olan paketlerde ek özellikler uygulanarak genişletilir.
Genel bakış:
- Paketleri kurmanın ve görüntülemenin en uygun yoludur.
- Birden fazla depo mevcuttur.
- Başlangıç dosyanıza depolar ekleyin. (~.emacs)
- Alttaki adresten daha fazlasını öğrenin:
https://www.emacswiki.org/emacs/ELPA
Komutlar:
- M-x package-list-packages
- M-x package-install
- M-x package-delete
Elisp Kodunu Değerlendirme
Yazdığınız veya indirdiğiniz Elisp kodunu Emacs’ı yeniden başlatmadan değerlendirin.
M-x eval-buffer
M-x eval-region
Temiz bir ortam için Emacs’ı yeniden başlatın.
Dosyalarla Çalışmak
Bir dosyayı bulma:
- Emacs dosyaları “bulur”, ancak bu terim “dosyaları açar” ile aynı olabilir.
- C-x C-f (Dosya bul).
Yeni bir dosya oluşturma:
- Emacs, mevcut bir dosyayı bulmakla, yeni bir dosya oluşturmak arasında ayrım yapmaz.
- Var olmayan bir dosya bulursanız, Emacs boş bir dosya (buffer) açar.
Majör Mod
- Emacs, bir Majör mod seçmek için karmaşık algılama mekanizmalarına sahiptir.
Majör Mod Tespiti
Dosya yerel değişkenleri
• Bir modu ve değişkenleri yüklemek için üstbilgi veya altbilgi
Program yükleyici yönergeleri
• Shebang’ler (ör. #!/bin/bash)
Sihirli mod algılama
• Mod eşleştirme için magic-mod-alist değişkenini kullanır
Otomatik mod algılama
• Çoğu mod’un uygulanış şeklidir.
• Dosya adı uzantılarını, adları ve dosya yollarını kullanır
Dosyalara Yazma
Geçerli arabelleği kaydet:
- C-x C-s (Ara belleği kaydet)
- İlişkili dosyaya arabellek kaydeder.
- İlişkili bir dosya yoksa, Emacs bir isim isteyecektir.
Yeni bir dosyaya yaz:
- C-x C-w (Yeni bir dosyaya buffer yaz)
- Farklı Kaydet olarak düşünün.
Tüm dosyaları kaydet:
- C-x s (Tüm arabellekleri kaydet)
- Emacs, kaydedilmemiş tüm dosyaları tek tek kaydetmenizi isteyecektir.
Emacs İçinde Gezinme
Tanıdık ok tuşlarıyla başlayın.
Fare de desteklenmektedir.
Emacs gezinme tuşlarını kullanın.
Satıra Göre Hareket Etme
Görsel Çizgiler
Ekranda gördüklerinizdir.
Sarılmış çizgiler görsel olarak sayılır.
Mantıksal Çizgiler
Buffer içeriği tarafından kontrol edilir.
Uzun bir satır bu şekilde ele alınır.
Bazen ekran çizgileri olarak adlandırılır.
Modern Emacs görsel çizgilerle hareket eder.
Buffer’larla Çalışmak
Switching Buffers:
- C-x b Buffer’ları değiştirir.
- Diğer Windows yöneticilerindeki Alt+Tab’e benzer.
- Geçiş yapmak için bir Buffer ister.
- Varsayılan, önceki Buffer’dır.
Listing Buffers:
- C-x C-b Buffer’ları listeler.
- M-x ibuffer, Buffer’ları da listeleyen bir alternatiftir.
Killing Buffers:
- C-x k bir Buffer’ı öldürür.
İşlemi Geri Alma/Dönme
Esc Esc Esc
- Sıkışırsanız kullanışlıdır.
- Tüm Pencereleri siler (gizler).
- Bilgi istemlerinden (Prompts) çıkılır.
- Önek (Prefix keys) tuşları iptal edilir.
Yanlışlık Olduğunda
Geri alma:
- C-/ , C — _ , veya C-x u son değişimi geri alır.
- Tüm işlemler geri alma çevrimine kaydedilir.
- Geri alma geçmişini kaybetmek zordur.
- “Geri alma döngüsünden kaçının.”
Pencere Yönetimi
Emacs Pencereleri:
- Çerçevelerin alt bölümleridir.
- Buffer’lar pencerelerde görüntülenir.
Pencere Bölme:
- C-x 2 aşağıdaki pencereyi böler.
- C-x 3 pencereyi sağa böler.
Pencere Silme:
- C-x 0 aktif pencereyi siler.
- C-x 1 diğer tüm pencereleri siler.
Pencere Değiştirme:
- C-x o pencereler arasında geçiş yapar.
“Diğer” Pencere
C-x o’yu çalıştırırsanız geçerli pencereden hemen sonraki penceredir.
Diğer pencerelerde işlem yapmak:
- C-x 4 C-f diğer penceredeki dosyaları bulur.
- C-x 4 C-o diğer pencerede bir buffer’ı görüntüler.
- C-x 4b diğer penceredeki buffer’ı değiştirir ve güncel hale getirir.
- C-x 4 0 buffer’ı ve diğer pencereyi öldürür.
Metin Seçme
Bölge olarak bilinir.
Nokta ve işaretten oluşur. (point and mark)
Mark’ı işarete dönüş olarak kullanın.
Mark’ı Ayarlama
Emacs Tuşları:
- C-<SPC> Mark’ı ayarlar ve bölgeyi etkinleştirir veya devre dışı bırakır.
- C-x C-x Mark’ı ve Point’i değiştirir.
- S+<ok tuşları>, diğer editörlerdeki seçime benzer.
Fare Seçimi:
- Mouse-1 + <sürükle>, üzerinde hareket ettiğiniz metnin etrafındaki Point’i ve Mark’ı ayarlar.
- Mouse-3 Mark’ını Point’in olduğu yere ayarlar ve ardından Point’i tıkladığınız yere taşır.
Mark (İşaretleme) Geçmişiniz
Genel bakış:
- Geri alma döngüsüne benzer.
- Her Buffer’ın kendi işaret döngüsüne vardır.
- Saklanacak giriş sayısını yapılandırın.
- C-u C — <SPC> işarete geçer.
Global Mark Ring (Küresel İşaret Döngüsü)
- Bir dizi ziyaret edilen buffer’ları ve her bir buffer için bir işaret koyduğunuz yeri kaydeder.
Kelimeler, Buffer’lar, Sayfalar ve Paragraflar
Nesne İşaretleme (Object Marking) :
- M-@ sonraki kelimenin sonundaki işareti ayarlar.
- M-h bir sonraki paragrafı işaretler.
- C-x h tüm Buffer’ı işaretler.
- C-x C-p geçerli sayfayı işaretler.
- Mevcut bölgelere ekler.
Artımlı Arama (Incremental Search)
Yönlü arama.
Siz yazdıkça eşleşir.
Eşleşmeleri görüntüleyin ve seçin.
Artımlı Olmayan Arama (Non-incremental Search)
Yönlü arama.
Tüm arama dizesini girin.
Eşleşmeleri görüntüleyin ve seçin.
Emacs Occur
Arama için regex kullanır.
Eşleşen satırların bir listesini sağlar.
Mevcut artımlı arama dizesinde etkinleştirilebilir.
Emacs Grep
Açılmamış dosyaları aramak için kullanın.
Eşleşen dosyaların ve satırların bir listesini sağlar.
Düzenleme için dosyaları arabelleklere açabilir.
Emacs ve Killing
- Diğer editörlerdeki kesme işlemine eşdeğerdir
Peki ya kopyalama?
- Kill döngüsüne kaydetme olarak bilinir
Kill Ring
- Diğer düzenleyicilerdeki panoya benzer
- Daha önce öldürülen metnin bir listesini içerir
- Tüm arabellekler arasında paylaşılır
Killing ve Deleting Farkı
Killing
Metin, Kill döngüsüne gönderilir.
Ardışık öldürmeler ekler.
Killing aynı zamanda silmektir.
Deleting
Metin, Kill döngüsüne GÖNDERİLMEZ.
Çok fazla silme komutu yoktur.
Genellikle bir karakter veya boşluklar üzerinde çalışır.
Kill, Ring ve Yank
Yanking
- Kill döngüsünden çekilmektir.
- Noktadaki Kill döngüsünden geçerli olan girişi ekler.
- Diğer düzenleyicilerde yapıştırmaya eşdeğerdir.
Ara ve Değiştir
GNU standard düzenli ifadelerle veya olmadan kullanın.
Tam buffer veya bir bölge üzerinde işlem yapın.
Aramalar büyük/küçük harfe katlama (büyük/küçük harf duyarsızlığı) olabilir.
Eşleşmeleri görüntüleyin ve seçin.
Case Değiştirme
Metnin durumunu değiştir.
Bir bölgede veya kelime(ler) arasında hareket edin.
Emacs’ta Aktarma (Transposing)
- Metnin “birimlerini” değiştirmek
- Karakterler, kelimeler, S-ifadeleri ve daha fazlası üzerinde kullanılabilir
Çizgilerle Çalışmak
Birleştirme ve Ayırma Çizgileri:
- Kill döngünüzü değiştirmez
- Nokta orijinal konumunda kalır
Satırları Silme
Geçerli satırı yok sayar.
Noktanın önünde çalışır.
Boşlukları ve sekme satırlarını kaldırır.
Boşlukları Yönetme
Bazı programlama dilleri için kullanışlıdır.
Metni arabelleklere kopyaladıktan sonra.
Boşluk Minör Mod
Size boşluk gösterir.
Vurguları ve sembolleri kullanır.
Mod özelleştirilebilir.
Sekmeler ve boşluklarla çalışma
Girintili Çizgiler:
- Bir satırın başına boşluk ekleyin veya ayarlayın.
- En basit yol TAB tuşuna basmaktır.
- Davranış majör mod tarafından belirlenir.
- Bölgeler üzerinde hareket edebilir.
Sekme Durakları:
- Varsayılan olarak, sekme durağı her sekiz sütunda birdir.
- Kişiselleştirilebilir.
- Metin modunda, boşluk olmayan ilk karakterin önceki satırdaki konumu, sekme durağı olarak değerlendirilir.
Komut Çalıştırma
Emacs’ta Shell Komutları:
- Tek olan komut satırlarını, bir Shell alt işlemine geçirin.
- Bir buffer’a çıktı oluşturun. (özel veya akım)
- Senkron ve asenkron şekillerde.
Shell ile Etkileşim
Emacs’ta Shell Türleri:
- Shell modu.
- Emacs Shell.
- Terminal emülatörü.
Hepsi Emacs arabelleklerinden yararlanır.
Shell Modu
Harici bir Shell çalıştırır. (sistem varsayılan Shell’i)
Yeni bir pencerede görüntülenir.
Etkileşimli programlar düzgün çalışmaz.
M-x shell tarafından başlatılır.
Lisp’te Yerleşik Bir Shell
- Bash benzeri özellikler, ancak kendi Shell’i.
- Platformlar arası taşınabilirlik.
- Yerleşik komutları veya cali sistem komutlarını kullanın.
- M-x shell tarafından başlatılır.
Etkileşimli Programlar Çalıştırın
- Normal bir terminal emülatörü gibi davranır.
- Yavaş olabilir.
- Çizgi ve karakter modları.
- M-x ansi-term tarafından başlatılır.