2010-02-02 23 views
6

Mam plik tekstowy. Czy Emacs może wybrać tekst oparty na regexie i umieścić go w trybie "zabijania", więc mogę go skopiować gdzie indziej? Coś jak regex-kill-ring-save?Kopia Emacsa z regexem

Odpowiedz

3

zainspirowany już oddanych komentarzy (odpowiedź Charles nie działa jak bym go chciał), dodałem nową funkcję do trybu mapie isearch/isearch-regexp która stawia tylko ciąg pasujący na ring kill (podczas gdy propozycja Charles zabija od aktualnego punktu do końca pasujące String):

(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) 

zaletą o iSearch/isearch-regexp podejścia (które można włączyć z C-s i C-M-s odpowiednio) jest to, że możesz zobaczyć rosnący ciąg wyszukiwania i możesz go skopiować to z M-w, gdy tylko będziesz zadowolony (i wróć do miejsca, w którym byłeś wcześniej z C-u C-Space).

To działa dla mnie z Emacs 23.1. Nie wiem, czy zadziała w każdej sytuacji. W każdym razie mam nadzieję, że okaże się przydatny :)

UPDATE: przechodzi emacswiki potknąłem KillISearchMatch co sugeruje mniej więcej takie same (plus kilka wskazówek ...).

Cheers, Daniel

+0

Dzięki, to jest to, czego chciałem, ale nie mogłem zrobić, ponieważ ssałem LISP-a. –

1

Nie jestem pewien, czy istnieje już taka funkcja, ale co można zrobić za pomocą makra klawiaturowe:

  1. rozpocząć nagrywanie makra kbd: C-x (
  2. wyszukać swoje regexp z search-forward-regexp
  3. Przejdź do początku swojego dopasowania (tekst, który chcesz zabić) za pomocą różnych poleceń nawigacji emacs, np. search lub backward-word itp
  4. Znak: C-spc
  5. Przejście do końca swojego meczu
  6. Zabij tekst: C-w

Następnie można nazwać makro klawiatury z M-x name-last-kbd-macro, dzięki czemu można wykonać makro o nazwie zamiast z C-x e.

Jeśli chcesz zapisać makro dla przyszłych sesji, możesz otworzyć numer .emacs i wstawić makro do bufora przy pomocy M-x insert-kbd-macro. Następnie można powiązać klucz z makrem, tak jak wiążesz klucze z normalnymi funkcjami emacsa, np. (global-set-key "\C-c m" 'funky-macro-macro).

More about emacs keyboard macros

0

Isearch+ robi to już. Opcjonalnie ustawia region wokół celu wyszukiwania. Możesz użyć C-SPC w dowolnym momencie podczas Isearch, aby przełączyć to.