2011-02-02 53 views
41

Giả sử tôi có một tập tin văn bản với nội dungPhụ thêm ký tự vào cuối của mỗi dòng trong Emacs

1 
123 
12 
12345 

Nếu tôi muốn thêm một 'a' trong phần đầu của mỗi dòng tôi chỉ đơn giản có thể sử dụng chuỗi hình chữ nhật (Cx rt), nhưng nếu tôi muốn gắn 'a' vào cuối mỗi dòng, sau đó tệp sẽ trở thành

1a 
123a 
12a 
12345a 

Cảm ơn.

+0

Companion câu hỏi, làm thế nào để loại bỏ ký tự từ ngày kết thúc mỗi dòng ?: http: //unix.stackexchange. com/q/108459/4671 –

+0

Xem http://stackoverflow.com/questions/761706/in-emacs-edit-multiple-lines-at-once/774953#774953 – gdelfino

Trả lời

55

Bạn có thể sử dụng replace-regexp cho mục đích này, với metacharater $ regexp phù hợp với end-of-line. Chuyển đến phần bắt đầu của bộ đệm và sau đó thực hiện M-x replace-regexp và trả lời $ và (văn bản của bạn) cho hai lời nhắc.

Hoặc, trong emacs-nói, ví dụ cụ thể của bạn thêm a:

M-< M-x replace-regexp RET $ RET a RET

+3

Doh! Đẹp hơn nhiều. –

+0

tbh, "macro bàn phím" là suy nghĩ đầu tiên của tôi, quá, cho đến khi tôi dừng lại và nghĩ rằng "có được một cách đơn giản hơn". – nelhage

+4

Hoặc 'C-M-% $ RET một RET' để làm điều tương tự một cách chọn lọc hơn với' truy vấn-thay thế-regexp' – phils

18

Các macro bàn phím Emacs là bạn của bạn.

C-x (C-e a C-n C-x) 

Mà chỉ cần thiết lập các macro bàn phím bằng cách: bắt đầu từ vĩ mô bàn phím (Cx (), đi đến tận cùng của dòng (Ce), chèn một a, đi đến dòng tiếp theo (Cn), và sau đó kết thúc ghi macro (Cx)).

Bây giờ bạn có thể thực hiện nó (C-x e), và tiếp tục nhấn e cho mỗi dòng bạn muốn có nó chạy trên, hoặc bạn có thể chạy nó trên một khu vực với C-x C-k r.

Nếu bạn làm điều này rất nhiều, bạn có thể lưu macro hoặc bạn có thể viết một hàm. Đây sẽ là một chức năng như:

(defun add-string-to-end-of-lines-in-region (str b e) 
    "prompt for string, add it to end of lines in the region" 
    (interactive "sWhat shall we append? \nr") 
    (goto-char e) 
    (forward-line -1) 
    (while (> (point) b) 
    (end-of-line) 
    (insert str) 
    (forward-line -1))) 
+3

Tôi thường tạo macro như vậy bằng cách nhập 'F3 End a Down F4' theo sau là chuỗi 'F4'. Tôi có xu hướng thích các phím mũi tên thông thường và Home/End trên Emacsisms. –

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