Emacs'ı, Emacs'ı yeniden .emacs
başlatmadan güncellediğim tüm tanımlarımı yeniden yüklemeye nasıl alabilirim ?
Emacs'ı, Emacs'ı yeniden .emacs
başlatmadan güncellediğim tüm tanımlarımı yeniden yüklemeye nasıl alabilirim ?
Yanıtlar:
Load-file komutunu kullanabilirsiniz ( M-x load-file
ardından, düzenlenmekte olan dosya olan varsayılan dosya adını kabul etmek için return tuşuna iki kez basın).
Ayrıca noktayı herhangi bir sexp'in sonuna taşıyabilir ve C-xC-esadece bu sexp'i yürütmek için basabilirsiniz. Yalnızca bir veya iki satırı değiştiriyorsanız, tüm dosyayı yeniden yüklemek gerekmez.
defun
ya da arkasındaki noktayı taşımak yerine defvar
, bildirim gövdesi ve türünün içinde de bırakabilirsiniz C-M-x
. Çok kullanışlı.
Çok garip ki çok uygun
M-x eval-buffer
burada bahsedilmez.
Eğer .emacs
aradaki idempotent ise, tampondaki tüm kodu hemen değerlendirir .
.emacs
idempotent olduğunu (veya olması gerektiğini) söylüyor ?
.emacs
idempotent olmamak ne zaman mantıklı olur ?
Genellikle değiştirilen bölgeyi yeniden değerlendirebilirsiniz. Değiştirdiğiniz ~ / .emacs bölgesini işaretleyin ve ardından kullanın M-x eval-region RET
. Bu, tüm dosyayı yeniden değerlendirmekten genellikle daha güvenlidir, çünkü iki kez yüklendikten hemen sonra tam olarak çalışmayan bir .emacs dosyası yazmak kolaydır.
Etkin olan arabellekte .emacs dosyanızı açtıysanız:
MX Eval-Buffer
M-x load-file
~/.emacs
M-: (load user-init-file)
Eval:
(parantez dahil) istemiuser-init-file
~/.emacs
varsayılan olarak değeri (yapılandırma dosyası yolunu gösteren) tutan bir değişkendir (load)
kısa, eski ve etkileşimli olmayan sürümleridir (load-file)
; bir emacs komutu ( M-xyazılacak) değil, sadece bir elisp işleviM-:
> M-x
Diğerleri sorunuzu belirtildiği gibi zaten cevapladı, ancak genellikle yazdığım satırları yürütmek istediğimi düşünüyorum. bunun için CtrlAltx, lisp iyi çalışıyor.
eval-lastsexp
.C-x C-e
C-M-x
, "Lisp sonunda" olmak zorunda değilsiniz - C-x C-e
belki düşünüyorsun ? Bununla ilgili güzel bir şey C-M-x
, nokta bir işlev / değişken bildiriminin ortasında olsa bile onu çağırabilmenizdir.
Başlangıçta bunu yapmamanızı öneririm. Bunun yerine, yeni bir emacs oturumu başlatın ve doğru çalışıp çalışmadığını görmek için yaptığınız değişiklikleri test edin. Bu şekilde yapmanın nedeni, yüklenemeyen veya temiz yüklenemeyen, çalışamaz bir .emacs dosyanızın olduğu bir durumda sizi bırakmaktan kaçınmaktır. Düzenlemenizin tamamını orijinal oturumda ve tüm testlerinizi yeni bir oturumda yaparsanız, rahatsız edici kodu yorumlamak için her zaman güvenilir bir şeyiniz olur.
Sonunda değişikliklerinizden memnun olduğunuzda, devam edin ve yeniden yüklemek için diğer yanıtlardan birini kullanın. Kişisel tercihim, eval
yalnızca eklediğiniz / değiştirdiğiniz bölümdür ve bunu yapmak için eklenen / değiştirilen kod ve çağrı bölgesini vurgulamanız yeterlidir M-x eval-region
. Bunu yapmak, luapyad'ın işaret ettiği gibi, değerlendirilen kodu en aza indirir, istenmeyen yan etkileri en aza indirir.
Klavye kısayolu:
(defun reload-init-file ()
(interactive)
(load-file user-init-file))
(global-set-key (kbd "C-c C-l") 'reload-init-file) ; Reload .emacs file
C-x C-e ;; current line
M-x eval-region ;; region
M-x eval-buffer ;; whole buffer
M-x load-file ~/.emacs.d/init.el
Şu anda Ubuntu 15.04 kullanıyorum; Bunun için bir anahtar tanımlamayı seviyorum.
[M-insert] klavyemdeki alt-insert'e çevirir.
Bunu .emacs dosyanıza koyun:
(global-set-key [M-insert] '(lambda() (interactive) (load-file "~/.emacs")))
Bunu init dosyanızda tanımlayın ve Mx reload-user-init-file ile çağırın
(defun reload-user-init-file()
(interactive)
(load-file user-init-file))
M-x eval-buffer
Çalışacak olsa da, geçiş ve diğer benzer şeylerle ilgili sorun yaşayabilirsiniz. Daha iyi bir yaklaşım, .emac'lerinizde (veya sadece ortalığı karıştırıyorsanız arabellekte) yeni olanları işaretlemek veya vurgulamak olabilir M-x eval-region
. Bu yardımcı olur umarım.
İşte yapılandırmanızı hızlı bir şekilde test etmenin hızlı ve kolay bir yolu. C-x C-e
Belirli bir lisp sonunda belirli işlevleri tek tek yürütmek için de kullanabilirsiniz .
Cx Ce, etkileşimli derlenmiş Lisp işlevi olan eval-last-sexp (global haritada bulunur) komutunu çalıştırır.
Cx Ce'ya bağlıdır.
(eval-last-sexp EVAL-SON-SEXP-ARG-DAHİLİ)
Sexp'i noktadan önce değerlendirin; eko alanında baskı değeri. Etkileşimli olarak, önek bağımsız değişkeni ile çıktıyı geçerli arabelleğe yazdırır.
Normalde, bu işlev 'eval-expression-print-length' ve 'eval-expression-print-level' değişkenlerinin değerine göre uzun çıktıyı keser. Bununla birlikte, sıfır önek argümanı ile böyle bir kısaltma yoktur. Böyle bir önek argümanı, tamsayıların birkaç ek biçimde (sekizli, onaltılık ve karakter) yazdırılmasına neden olur.
'Eval-expression-debug-on-error' varsayılan değilse nil değilse, bu komut tüm hataların hata ayıklayıcıya girmesini sağlar.
Mx eval-buffer veya Mx yükleme dosyası gibi komutların yanı sıra yeni bir emac'i komut satırından yeniden başlatabilirsiniz:
emacs -q --load "init.el"
Kullanım örneği stackoverflow.com/questions/44959535/company-backends-in-gnu-emacs/
Bunun gibi emac'lar için tuş ciltleme ayarlayabilirsiniz
;; reload emacs configuration
(defun reload-init-file ()
(interactive)
(load-file "~/.emacs"))
(global-set-key (kbd "C-c r") 'reload-init-file)
Umarım bu yardımcı olur!