Vim hakkında özlediğim ana özelliklerden biri, her zaman geçerli dosyanın dosya %
adını ara belleğe kaydetmesidir ( daha fazla bilgi ). Bu, komutların kolayca başlatılmasını sağlar:
;; compile current file
:! gcc %
;; source current file (useful when I'm editing .vimrc
:source %
;; get the size of current file
:! du -sh %
;; etc, etc...
emacs
(Herhangi bir fark yaratırsa sürüm 24) altında benzer işlevselliğe sahip olmak istiyorum , yani geçerli arabellekte açılan dosyanın adını eklemek için kolay bir yolu var.
Ne yapmak istediğime örnekler
Burada böyle bir kısayola ihtiyaç duyduğumda daha iyi açıklamak için bazı temel kullanım durumlarını tanımlarım
Derleme:
M-x compile
Emacs girdiğimde benden derleme komutu ister.gcc (current-buffer)
Kolayca girmek istiyorum .Dosya yükle: .emacs dosyamı düzenlerken, değişiklikleri test etmek için hemen yüklemek istiyorum. Bunu yapma
M-x load-file
şeklim ve sonra her zaman adı heceleyeceğim . e m a c s. Bir kısayol istiyorum.Dış süreçleri başlat:
du -sh
Örnek olarak verdim , sadece kabuk komutlarını çalıştırdığımda kısayolun da kullanılabilir olmasını istediğimi göstermek içinM-!
Şimdiye kadar bulduğum şey
- Bu soru burada U&L. Verilen cevaplar temel olarak arabellek dosya adını nerede bulacağınızı gösterir, böylece kişi onu kill-ring'e ekleyebilir. Tam olarak aradığım şey bu değil, kullanmak istemeden önce dosya adını elle öldürmek istemiyorum. (Ayrıca her iki cevapta da açıklanan çözümler emaclarımda düzgün görünmüyor ve onları biraz acı verici hale getirmek için ek tuş vuruşları gerektiriyor).
DÜZENLE : Biraz ilgisiz, bu çözümlerin neden işe yaramadığını öğrendim. Daha iyi ya da kötü için IDO'yu etkinleştirdim.
(current-buffer)
İşlev kılavuzu tarif geçerli tampon dosyasının adını döndürür, ama hiçbir yerde örneklerde ben elisp kod değerlendiriyorum, yukarıda verdi. Bu işlevin değerlendirmesinin sonucunu (mini) bir arabellek içine yerleştirmenin ve bu şekilde bir kısayola bağlamanın bir yolu var mı?
Bu şekilde düşünmek yanlış mıyım?
Şu anda Vim'i kullandıktan sonra emacs kullanmayı (aslında birkaç ay oldu) öğreniyorum. Tahmin edilebilir bir vim-in-a-emacs tuzağı kullanmaktan kaçınmak istiyorum . İstediğim şeyin çok emacs-y olmadığını düşünüyorsanız ve bunu yapmanın daha iyi (temiz?) Bir yolu olmalı, lütfen cevaplarınızda belirtin.
(buffer-file-name)
minibuffer elde ederken Yazarken elde edersiniz nil
çünkü (current-buffer)
minibuffer olduğunu. Minibuffer'dayken de arabellekleri değiştirebilirsiniz, bu nedenle Emacs'ın gördüğü gibi, mevcut arabellek ile geçerli arabellek hakkında ne düşündüğünüzü minibuffer olarak izlemek zordur.
(global-set-key (kbd "C-i") buffer-file-name)
Ctrl + I olmasını istiyorsanız koyun . .Emacs hakkındaM-x load-file RET
ne isterseniz yapın; hiçbir şey yazmanıza gerek yok.