Emacs Notları

☁️ Ümit Eroğlu 🌍🛰
7 min readOct 12, 2023

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.

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

☁️ Ümit Eroğlu 🌍🛰
☁️ Ümit Eroğlu 🌍🛰

Written by ☁️ Ümit Eroğlu 🌍🛰

Software, Cloud, DevOps, IoT, GIS, Remote Sensing.

No responses yet

Write a response