2010-02-02 23 views
6

Bir metin dosyasına sahibim. Emacs, regex'e göre metni seçebilir ve öldürme halkasına koyabilir, böylece başka bir yere kopyalayabilirim? Regex-kill-ring-save gibi bir şey mi?Emacs regex ile kopyala

cevap

3

(Charles cevap bunu isteyeyim olarak çalışmıyor), sadece eşleştirme dizesi koyar ISearch/ISearch-regexp modu Haritaya yeni fonksiyon eklendi

(defun hack-isearch-kill() 
    "Push current matching string into kill ring." 
    (interactive) 
    (kill-new (buffer-substring (point) isearch-other-end)) 
    (isearch-done)) 

(define-key isearch-mode-map (kbd "M-w") 'hack-isearch-kill) 

(sırasıyla C-s ve C-M-s ile etkinleştirebilirsiniz) ISearch/ISearch-regexp yaklaşımının iyi şudur: Kill ringe (Charles önerisi anki noktadan öldürür oysa dize eşleşen sonuna kadar) arama dizenizi büyüyebilir ve kopyalayabilirsiniz memnun kaldığınız anda M-w ile (ve C-u C-Space ile daha önce bulunduğunuz yere geri dönün).

Bu benim için Emacs 23.1 ile çalışır. Her durumda çalışıp çalışmadığını bilmiyorum. Ben aşağı yukarı aynı anlaşılacağı KillISearchMatch (artı biraz daha ipucu ...) üzerinde tökezledi emacswiki geçiyor: Neyse ben bunu yararlı :)

GÜNCELLEME bulursun.

Alkış, Daniel

+0

Teşekkürler, istediğim şey buydu, ama LISP'ye emdiğimden beri yapamadım. –

1

böyle bir işlev zaten varsa emin değilim, ancak bir klavye makro ile bunu yapabileceklerini: search-forward-regexp ile regexp için C-x (

  • Arama:

    1. Başlat bir kbd makro kaydetme
    2. Çeşitli emacs gezinme komutlarıyla eşleştirmenin (öldürmek istediğiniz metin) başına gidin. search veya backward-word vb
    3. Mark: C-w

    Ardından yürütmek böylece M-x name-last-kbd-macro ile klavye makro adlandırabilirsiniz:

  • metni öldür senin maçın sonuna C-spc
  • Taşı C-x e yerine bir ada sahip makro.

    Makroyu gelecek oturumlar için kaydetmek isterseniz, .emacs'nu açıp makroyu M-x insert-kbd-macro numaralı arabelleğe ekleyebilirsiniz. Daha sonra, anahtarları normal emacs işlevlerine bağladığınız gibi makroya bir anahtar bağlayabilirsiniz. (global-set-key "\C-c m" 'funky-macro-macro). Zaten verilen yorumlarla esinlenerek

    More about emacs keyboard macros

  • 0

    Isearch+ zaten bunu yapar. İsteğe bağlı olarak arama hedefi çevresindeki bölgeyi ayarlar. Bunu değiştirmek için, İş Arama sırasında herhangi bir zamanda C-SPC'u kullanabilirsiniz.