Birçok geliştirici gibi ben de rahat edebileceğim bir editör arama süreci yaşadım. Programlama dilleriyle haşır neşir olduğum ilk zamanlarda, çevrenin de etkisiyle Vim kullanıyordum. O zamanlar Pardus'a katkı vermek için can atıyordum ve sensei olarak nitelediğimiz tecrübeli Pardus geliştiricilerinin, "bir bildiği olsa gerek" mantığıyla alışkanlıklarını taklit ediyorduk. TAB yerine dört boşluk kullanmak, grafik arayüz yerine konsola alışmak, commitleri atomik olarak yapmak; hatta bazı kodlama standartlarını da bu 'geliştirici abilerin' alışkanlıklarına göre şekillendirmek buna birkaç örnek.
Ama bir noktadan sonra, diğer geliştiricilerin bazı kullanım alışkanlıklarını itici bulmaya başlıyor ve kendi tercihlerinizi belirlemeye başlıyorsunuz. Ortak geliştirme için standartları bozmadan (4 boşluk yerine tab kullanmaya karar vermemek gibi) bireysel alışkanlıkları değiştirmek söz konusu olabiliyor. Grafik arayüzün mümkün olmadığı veya basitçe bir düzenlemek gerektiği zaman hala Vim kullanmama rağmen, Emacs'i bir IDE olarak kullanmayı tercih ediyorum. Peki, neden Emacs?
- Bir kere açıyorum ve hep kullanıyorum. Kendi dosya yöneticisini kullanmak çok zor değil, C-x C-f yaptıktan sonra dosya yolunu hatırlayamadığında iki defa TAB tuşuna basarak dizin içeriğini görüntülemek mümkün. Ayrıca yazı yazmaya başlamadan önce Vim'deki gibi bir tuşa basarak yazım moduna geçmek gibi bir olayı yok. Tam tersi, öntanımlı modun yazım modu olması gerektiğini savunanlardanım.
- Emacs'in kısayolları evrensel. Örneğin ben şuan Chromium'dan bu makaleyi yazarken, Emacs yön tuşlarını kullanarak yazı içinde imlecin konumunu değiştirebiliyorum. Aynı şekilde, Bash üzerinde de Emacs kısayollarını kullanmak mümkün; kesmek, yapıştırmak, hatta geriye doğru arama yapmak bile Emacs kısayollarıyla aynı. Mac'te (ve yanlış bilmiyorsam GNOME'da) Emacs yön tuşlarını tüm uygulamalarda kullanabilecek şekilde ayarlayabiliyorsunuz.
- Girintileme konusunda belirlenen kuralların dışına çıkmaması, katı olması benim bir diğer tercih sebeplerimden. Eğer Javascript için if'ten sonra dört boşluk içeri girinti kuralı belirlemişseniz, ne kadar TAB basarsanız basın, if'ten sonra her zaman sadece dört boşluk içeri girinti yapar. TAB'ı daha fazla boşluk bırakmak amacıyla kullanmak için ona göre ayarlamanız gerekir. Bence Emacs'in TAB tercihini değiştirmesek daha iyi. Bir diğer örnek, Python'da da aynı kural işler; ama daha fazla TAB basmanız durumunda dışa doğru girintilemeye başlar. Çünkü Python'da süslü parantezler yerine girintileme, syntax'ın bir parçasıdır.
- Çok güzel bir wiki'si var ve büyük bir komünitesi var. Github hesabınız varsa emacsmirror hesabını takip edin, oldukça kullanışlı eklentiler bulabilirsiniz. Ben ne zaman "X editor bunu yapabiliyor, Emacs neden yapamıyor" diye düşünsem, ilk önce bu hesap profilindeki proje listesine bakarım. Textmate'deki snippets özelliğini Emacs'te kullanmanıza yarayan yasnippet eklentisini bu şekilde buldum mesela.
- Konfigürasyonu Emacs Lisp adında bir Lisp şivesiyle yazıyorsunuz. Bu bana bir süre itici gelmişti, hatta bir süre Pymacs ile konfigürasyonları hazırlıyordum. Ama bir düşünün, bir dil daha öğrenmekten ne kaybedersiniz? Üstelik fonksiyonel programlama dilinin nasıl bir şey olduğu hakkında az biraz fikir sahibi olursunuz, kendi Emacs'inizi kişiselleştirirken. Bunu kesinlikle zaman kaybı olarak değerlendirmeyin.
- Bash'i birebir Emacs içinden kullanmak için 'M-x term' mutlaka deneyin. Eğer alışabilirseniz, ayrıca kabuk penceresi açma derdinden kurtarabiliyor.
- Bunların dışında, iki dosya arasındaki farkı gösteren ediff, dosya yöneticisi dired, gnu project debugger için gdb, email ve rss için gnus gibi birçok ihtiyacı karşılayacak uygulamayı Emacs'in içinde bulabilirsiniz. Hatta birkaç oyun da mevcut, benim gibi sigara içme alışkanlığı olmayanlar için sıkıntıyı Tetris giderebilir :P
- Emacs'i grafik arayüzü olmayan sistemlerde de kullanmak mümkün, hatta dilerseniz konsolda 'emacs -nw' ile çalıştırıp konsol üzerinden de Emacs'i kullanabilirsiniz.
Aklıa geldikçe bu maddeleri çoğaltacağım. Ama şöyle bir gerçek var, birçok güzel editör bir özelliği öyle ya da böyle bir şekilde destekliyor. Yani bu saydığım özellikleri Vim'de de yapabilmenin illa ki bir yolu vardır; ama önemli olan elinizin alışması, içinize sinmesidir. Bir de ne editör seçerseniz seçin, mutlaka sıkıcı bir alışma evresi ve sıkıcı bir yapılandırma sürecinden geçiyorsunuz. Zate bu yüzden internette birbirinden farklı onlarca .emacs konfigürasyon dosyalarıyla karşılaşıyorsunuz. Benimkini de buradan bulabilirsiniz: https://github.com/gkmngrgn/emacs-config Ama Emacs kullanmaya yeni karar verdiyseniz, bence mutlaka şununla birlikte deneyiniz: https://github.com/technomancy/emacs-starter-kit