Emacs konusunda yeniyim ve bir çaylak sorunuz var. Belirli bir işlevin bir anahtarını (global-set-key (kbd "C-c a b c") 'some-command)
ile bağlayabilirim; burada some-command
bir işlevdir. Tek bir tuşla iki işlevi nasıl çağırırım (some-command
ve some-other-command
)? Çok teşekkürler!Emacs çoklu komutlar için anahtar bağlama
cevap
İki işlevi çağıran kendi işlevinizi tanımlayabilir ve anahtarı kendi işlevinize bağlayabilirsiniz.
(global-set-key (kbd "C-c a b c") (lambda() (interactive) (some-command) (some-other-command)))
Sen (siz de bağlayabilir) bu üçüncü işlevi çağırmak bunu funcall
veya apply
başkalarını çağırmak hangi defun
, başka functon tanımlayabilirsiniz diğerlerini açılmasına neden olur.
Koşullu olarak, istediğiniz tüm işlevleri (komutları) çağıran bir komut tanımlayın. Aramak için hangisi olduğunu ayırt etmek için önek argümanını kullanın. Bu nedenle, yeni, gönderme komutu C-o
'a bağlanırsa, C-u C-o
, işlevlerden birini çağırır ve C-o
(önek arg komutu olmadan) diğerini çağırır.
Bir önek argümanını tanıyan bir komutu nasıl tanımlayacağınızı görmek için C-h f interactive
yapmak isteyeceksiniz. Ayrıca, Elisp kılavuzuna da danışın - bunun nerede olduğunu bulmak için i interactive
kullanın.
Bu kolay ve eğlenceli bir egzersiz. Kendi basit komutlarınızı tanımlamayı öğrenmek, Emacs ile kendi dilinde konuşmaya başlamak için iyi bir yoldur.
Ben asla bu anahtar ne Emacs sorduğunuzda, kabul kullanmak (size böyle bir şey söylüyorum sona erecek basit bir nedenle, tuşlara lambda ifadeleri bağlayıcı öneririz: Ya basit bir lambda kullanmak örnek olarak, bayt-derlenmiş kod): Eğer hiçbir zaman
C-c a b c runs the command #[nil "\300 \210\301 \207" [some-command
some-other-command] 1 nil nil], which is an interactive compiled Lisp
function.
It is bound to C-c a b c.
(anonymous)
Not documented.
kodunuzu bayt-derlemek, bu az şifreli, ama yine de biçimlendirilmemiş var:
C-c a b c runs the command (lambda nil (interactive) (some-command)
(some-other-command)), which is an interactive Lisp function.
Hangi iken hala okunabilir Böyle küçük bir işlev durumunda, büyük işlevler için hızla anlaşılmaz olur. ile karşılaştırıldığında
? Elde
C-c a b c runs the command my-run-some-commands, which is an
interactive compiled Lisp function in `foo.el'.
It is bound to C-c a b c.
(my-run-some-commands)
Run `some-command' and `some-other-command' in sequence.
eğer adı (daha anonim bir fonksiyon yapar daha belgelemek için teşvik eder) fonksiyonu. Abo-Abo işaret ettiği gibi
(defun my-run-some-commands()
"Run `some-command' and `some-other-command' in sequence."
(interactive)
(some-command)
(some-other-command))
(global-set-key (kbd "C-c a b c") 'my-run-some-commands)
Son olarak, bu aynı zamanda, her iki bağlantıyı takip ederek kolayca ziyareti görüntülemek için herhangi bir zamanda bu fonksiyonun tanım veya düzenleme/yeniden değerlendirmek kodu can demektir ya da (işlevin adını girmek) find-function
Mxkullanılarak (bizim örneğimizde foo.el
kadar) yardımcı tampon maddesi içinde temin ya Mxfind-function-on-key
(bu için bağlı anahtar dizisi de).
Çok önemlisi, bu yaklaşımı kullanarak tanımlamaya geçebilirsiniz. –
- 1. Çoklu komutlar
- 2. Toplu iş için döngü/çoklu komutlar
- 3. emacs dümen M-x: tarihsel komutlar listesine atlamak için nasıl
- 4. Xcode 4 idekeybindings tek tuşa basmak için çoklu komutlar
- 5. Bir anahtar Emacs LaTeX derlemesi?
- 6. Bazı Komutlar
- 7. Çoklu küresel komutlar hata veriyor: yapamaz: Küresel özyinelemeli
- 8. Emacs için Bağlamlar
- 9. Huzurlu komutlar
- 10. Çoklu dil için ASP.NET MVC Razor'da dinamik model bağlama
- 11. jQuery 'live' yöntemine çoklu olayları bağlama
- 12. Omurga olayını çoklu sınıf seçicisine bağlama
- 13. PHP'de Yabancı Anahtar İçeriğini görüntüleme ve bağlama
- 14. Emacs
- 15. .Net Genel Bağlantılı Anahtar Simgelere Bağlama Yönlendirme
- 16. CMake özel temiz komutlar
- 17. MacPorts Liman Komutlar
- 18. Event Store/CQRS mimarisinde, neden komutlar yerine komutlar saklanır?
- 19. MySQL ve PHP: Çoklu Anahtar Kelime Araması
- 20. R için Emacs modu?
- 21. Emacs için grafiksel kırıntı
- 22. haskell için emacs ayarlama
- 23. Bağlama Listview Eylemler için SelectedItems
- 24. Kompozit anahtar için yabancı anahtar
- 25. Emacs run-javascript?
- 26. html bağlama için Sonlandırıcı
- 27. Emacs, R, Sweave: Emacs
- 28. Emacs
- 29. Emacs
- 30. Emacs
@Stefan Lütfen lambdaların neden alıntı yapmadığını açıklar mısınız? – songyuanyao
Bu harika çalışıyor. Teşekkürler! Ben de alıntı hakkında aynı soru var --- Ben de genellikle lambdas alıntı ve neden olmasın bilmek istiyorum. –
@songyuanyao: Çünkü ''...) 'bir * listesi *, bir * işlevidir *. Bkz. Http://stackoverflow.com/questions/16801396/when-should-emacs-function-syntax-be-used/16802304#16802304 – Stefan