2012-05-09 36 views
5

ví dụ: Tôi muốn thêm một dấu ngoặc kép vào cuối một loạt các dòng được đánh dấu. Hoặc tôi muốn xóa hai ký tự khỏi một loạt các dòng được đánh dấu. Có một lệnh cho điều này? Tôi biết có "M-x r t" để chèn một hình chữ nhật của văn bản, nhưng điều này chỉ hoạt động nếu tất cả mọi thứ được xếp thẳng đứng, mà thường không phải là trường hợp của các đầu của dòng.Làm cách nào để bạn thêm hoặc xóa văn bản vào cuối nhiều dòng cùng một lúc trong Emacs?

Trả lời

7

Bạn có thể

  1. tiết kiệm một macro bàn phím với C-x(C-e"C-fC-x), resp. C-x(C-eBackspaceBackspaceC-fC-x). Sau đó gọi vĩ mô với C-xe, e, e, e ...
  2. làm một sự thay thế regex với M-C-%. Thay thế $ bằng " để thêm dấu ngoặc kép, thay thế ..$ mà không có gì để xóa hai ký tự cuối cùng .
+1

Hoặc sau khi ghi macro, hãy thực hiện C-u n C-x e trong đó 'n' là số lần lặp lại mà anh ta muốn. – SlowLearner

+1

Bạn không thiếu một "C-n" trong các macro ở đó để đi đến dòng kế tiếp để chuẩn bị cho việc thực hiện tiếp theo của vĩ mô? – deong

+0

@deong: Bạn nói đúng, cảm ơn. Đã cập nhật. – choroba

3

Dưới đây là một cách trực quan hơn, xem kết quả trong mỗi dòng khi bạn nhập chúng vào một dòng.

Grab một bản sao gần đây của yasnippet từ http://github.com/capitaomorte/yasnippet và thêm vào bạn .emacs

(require 'yasnippet) 

(defun yas/add-to-end-of-lines-snippet() 
    (interactive) 
    (when (region-active-p) 
    (let ((snippet (replace-regexp-in-string "$" "$1" (buffer-substring (region-beginning) (region-end))))) 
     (delete-region (region-beginning) (region-end)) 
     (yas/expand-snippet snippet)))) 

Bây giờ chọn một khu vực và gõ M-x add-to-end-of-lines-snippet.

5

M-xreplace-regexp$" nên làm việc, nhưng tôi không chắc chắn nếu replace-regexp khía cạnh dấu.

+3

Bạn luôn có thể 'thu hẹp đến vùng' và hoạt động trên toàn bộ vùng đệm bị thu hẹp mà không có nguy cơ phá hủy các đường bên ngoài của hàm gốc cao (' C-x n n' và 'C-x n w' để hoàn nguyên thu hẹp). – Juancho

+0

'replace-regexp' cũng có thể được sử dụng cho nhiệm vụ khác (xóa 2 ký tự cuối cùng). Thay thế "..$ "không có gì để đạt được điều này. – Juancho

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