2013-04-07 21 views
5

Tüm arabelleği işaretlemekle eşdeğer bir işlevi ayarlamak ve bir komut istemek için C-u M-| çalıştırarak, arabelleği komutun içine pipetleyin ve arabelleği çıktıyla değiştirin. O zaman belki vardiya-f5 ya da bir şey için ayarlayın.Emacs shell komutu arabellek üzerinde

(defun shell-command-on-buffer() 
    (interactive) 
    (mark-whole-buffer)) 

nasıl gerisini yapabilirsiniz:

Ben sadece bildiğim kadarıyla bu kadar var?

cevap

5

Bu benim için çalışıyor:

(defun shell-command-on-buffer (command) 
    (interactive "sShell command on buffer: ") 
    (shell-command-on-region (point-min) (point-max) command t)) 
+0

Teşekkürler, denedim. Bu benim için yeni bir tampon açıyor - ideal olarak mevcut arabelleği değiştirmek istiyorum, C-u M- | yapar. – teppic

+0

Ah, özür dilerim, ilk önerim, "kabuk-komuta-bölge" ile aynı C-u davranışına sahip. Talebinize daha iyi cevap vermek için düzenlenmiştir – brontitall

+0

Hayır, korkarım ki - bu komut için bana soruyor ama yanlış sayıda yanlış bir hata veriyor. – teppic

4

Bu seferki yerine genel minibuffer tarihinin "kabuk komutu" minibuffer geçmişini kullanarak avantajına sahiptir.

(defun shell-command-on-buffer() 
    (interactive) 
    (shell-command-on-region (point-min) (point-max) (read-shell-command "Shell command on buffer: ") t)) 
+1

Lütfen read-shell-komutunun 23.1 sürümünde GNU Emacs'e sunulduğunu unutmayın. Daha eski sürümlerle uyumlu olmanız gerekiyorsa, bunu kullanmak istemeyeceksiniz ya da arama denemeden önce read-shell-komutunun varlığını kontrol eden bir kod eklemeniz gerekecektir. –