2010-02-02 36 views
6

Tôi có một tệp văn bản. Emacs có thể chọn văn bản dựa trên regex và đặt nó trong kill-ring, vì vậy tôi có thể sao chép nó ở một nơi khác? Một cái gì đó giống như regex-kill-ring-save?Emacs sao chép với regex

Trả lời

3

lấy cảm hứng từ những ý kiến ​​đã được đưa ra (câu trả lời Charles không làm việc như tôi muốn nó), tôi đã thêm một chức năng mới cho isearch/isearch-regexp bản đồ chế độ trong đó đặt chỉ chuỗi khớp vào vòng kill (trong khi Charles đề nghị giết chết từ điểm hiện tại đến cuối phù hợp với 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) 

những điều tốt đẹp về isearch/isearch-regexp cách tiếp cận (mà bạn có thể bật với C-sC-M-s tương ứng) là bạn có thể thấy chuỗi tìm kiếm của mình đang phát triển và bạn có thể sao chép nó với M-w ngay sau khi bạn hài lòng (và quay lại nơi bạn đã ở trước với C-u C-Space).

Điều này phù hợp với tôi với Emacs 23.1. Không biết nếu nó sẽ làm việc trong mọi tình huống. Dù sao tôi hy vọng bạn thấy nó hữu ích :)

CẬP NHẬT: thông qua các emacswiki Tôi tình cờ hơn KillISearchMatch cho thấy nhiều hay ít giống nhau (cộng thêm một số mẹo khác ...).

Chúc mừng, Daniel

+0

Cảm ơn, đó chỉ là những gì tôi muốn, nhưng không thể thực hiện được kể từ khi tôi hút LISP. –

1

Tôi không chắc chắn nếu có một chức năng như vậy đã có, nhưng những gì bạn có thể làm điều đó với một macro bàn phím:

  1. Bắt đầu ghi macro kbd: C-x (
  2. Tìm kiếm regexp của bạn với search-forward-regexp
  3. Di chuyển đến đầu trận đấu của bạn (văn bản bạn muốn giết) bằng các lệnh điều hướng emacs khác nhau, ví dụ: search hoặc backward-word, vv
  4. Mark: C-spc
  5. Di chuyển đến cuối trận đấu của bạn
  6. Giết đoạn Phúc Âm: C-w

Sau đó bạn có thể đặt tên cho vĩ mô bàn phím với M-x name-last-kbd-macro để bạn có thể thực hiện macro có tên thay vì với C-x e.

Nếu bạn muốn lưu macro cho các phiên trong tương lai, bạn có thể mở .emacs và chèn macro vào bộ đệm với M-x insert-kbd-macro. Sau khi bạn có thể liên kết khóa với macro giống như bạn liên kết các khóa với các hàm emacs bình thường, ví dụ: (global-set-key "\C-c m" 'funky-macro-macro).

More about emacs keyboard macros

0

Isearch+ thực hiện điều này rồi. Tùy chọn đặt khu vực xung quanh mục tiêu tìm kiếm. Bạn có thể sử dụng C-SPC bất kỳ lúc nào trong khi Tìm kiếm để chuyển đổi điều này.

Các vấn đề liên quan