Öncelikle emacs ile çalışan temel metinleri öğrenmeniz gerekir. Emacs çok karmaşık olduğundan, metni ve kopyayı nasıl seçeceğinizi öğrenmek zor olabilir. Bu yüzden bunu nasıl verimli bir şekilde yapacağınızı öğrenmek için biraz zaman ayırın. Kılavuzu okumak yardımcı olabilir. Mac OS X için Aquamacs kullanın, yerel kısayolları destekler.
ESS ile çalışmak R ile çalışmaktan farklı değildir. Kod düzenleme için aynı kurallar geçerli olmalıdır. Benim durumumda, her projenin ana dizinimdeki R adlı üst dizinde bulunan kendi dizini vardır (Windows için, emacs home dizinini tüm kaynağınızın bulunduğu dizine yönlendirmenizi öneririm). Yani proje üzerinde çalışmak için ESS kullandığımda her zaman M-x R
proje dizinimi başlangıç dizinini seçerim.
R işlemine başladıktan sonra, genellikle emacları iki pencereye bölerim (emacs terminolojisi). Sonra solda, sağdaki R işlemine gönderdiğim bir kaynak kodum var. İlgili kısayollar (emacs kısayollarıdır) C-x 3
pencereleri dikey olarak bölmek C-x 1
, geçerli arabelleği tek pencere yapmak ve C-x 2
pencereleri yatay olarak bölmek içindir.
R'ye kod gönderirken, işlevler ve R deyimleri arasında ayrım yapıyorum. Bunu tüm işlevlerimi genellikle bir dosyada tutarak yaparım 10code.R
. Sonra ESS dosyası yükle seçeneğini (kısayol C-c C-l
) kullanarak bu dosyayı yükleyebilirim . Bu yaklaşımın avantajı, tüm işlevleri kaynaklaması ve R tamponunda hiçbir şey üretmemesidir. Kodunuzda bir hata varsa, ESS minibuffer'da bir mesaj gösterir ve bunu C-c
`` tuşuna basarak araştırabilirsiniz .
Diğer kod, açıklayıcı tutmaya çalıştığım R ifadeleridir: verileri yükle, verileri temizle, istatistiksel modele uy, sonuçları denetle, nihai sonuçları üret. Bu ifadelerin kaynak kodu, projenin geçerli durumudur. Niyet, proje bittikten sonra, bu kod ile dosyaları kaynak, projeyi yeniden üretir (ayrıca izleme geçmişi için git kullanıyorum). Bu dosya ile çalışırken, ben sadece eval fonksiyonu, paragraf, hangi kısayol olan deyim komutu ile R sürecine göndermek bir R deyimi ile çalışır C-c C-c
. Bu komut R işlemine paragrafı, yani yeni satırlarla ayrılmış metni gönderir. Bu, R ifadelerini görevler halinde gruplayabildiğiniz ve tüm görevi R işlemine gönderebileceğiniz için kullanışlıdır. Ayrıca çok uygun olan metinlerin seçilmesini gerektirmez. KısayolC-c C-c
imleci R penceresine hareket ettirme avantajına sahiptir, böylece gönderilen R ifadesinin sonuçlarını hemen inceleyebilirsiniz.
Yani benim temel iş akışım pencereler ve arabellekler arasında çok hareket ediyor. Bunu kolaylaştırmak için .emacs dosyamda aşağıdaki kısayolları kullanıyorum:
(define-key global-map [f1] 'Control-X-prefix)
(define-key global-map [f3] 'find-file)
(define-key global-map [f2] 'save-buffer)
(define-key global-map [f8] 'kill-buffer)
(define-key global-map [f5] 'switch-to-buffer)
(define-key global-map [f6] 'other-window)
(define-key global-map [f9] 'ess-load-file)
Nadiren kullanıyorum f1
, ama diğerleri çok sık. Kullandığım diğer belirli ESS ayarları şunlardır:
(setq comint-input-ring-size 1000)
(setq ess-indent-level 4)
(setq ess-arg-function-offset 4)
(setq ess-else-offset 4)
Bu, ESS'ye sekmenin 4 karakterini genişletmesini (varsayılan 2'dir), ki bu benim kişisel tercihimdir ve ESS'nin geçmiş olarak kaydettiği komutlarınızın sayısını artırır.
Doğrudan R işlemiyle çalışmak için aşağıdaki kısayolları çok kullanışlı buldum:
(add-hook 'inferior-ess-mode-hook
'(lambda nil
(define-key inferior-ess-mode-map [\C-up] 'comint-previous-matching-input-from-input)
(define-key inferior-ess-mode-map [\C-down] 'comint-next-matching-input-from-input)
(define-key inferior-ess-mode-map [\C-x \t] 'comint-dynamic-complete-filename)
)
)
Bu, R deyimi geçmişinizdeki R deyimini çağırır, ancak bunu zaten satırınızda olan deyimle eşleştirmeye çalışır. Örneğin pl
, R sürecine yazmak ve \C-up
(bu kontrol ve yukarı ok) tuşuna basmak , ile başlayan tüm ifadeler arasında dolaşacaktır pl
, bu nedenle örneğin tüm plot(...
komutları hatırlayacaktır .
ESS ile kullandığım son ayar şöyledir:
(setq ess-ask-about-transfile t)
Bu şekilde ESS, R işlemiyle her zaman arabellekteki metni nereye kaydedeceğini sorar. Genellikle bu dosyaları tarihe göre numaralandırırım, bu yüzden her zaman tam olarak ne yaptığımı takip etmek için başka bir yolum var. Bu seçeneğin tek uyarısı, bir nedenden ötürü ESS'nin R tamponunu R'yi yükledikten sonra salt okunur olarak ayarlamasıdır C-x C-q
. Tamponu yazılabilir hale getirmenin kısayolu şudur .
Bunlar benim ESS ile çalışmak için kullandığım ayarlarım, onlarla mutlu hissediyorum ve birkaç yıl boyunca hiçbir şey eklemeye gerek duymadım. ESS'yi ilk kez kullananlara tanıtırken genellikle bu genel bakışı veririm.
Emacs ile çalışırken benim için en çok kullanılan kısayol ve özellikle C-g
mini tampondaki komutu bırakan son kısayol ile bitireceğim . Emacs ve ESS ile çalıştığım tüm yıllar boyunca, hala istemediğim bazı Emacs komutunu çağırmayı başardım C-g
, bu durumlarda çok yardımcı olur.