2012-05-09 85 views
5

例如我想在一堆突出顯示的行的末尾添加一個雙引號。或者我想從一堆突出顯示的行中刪除兩個字符。有這個命令嗎?我知道有插入矩形文本的「M-x r t」,但這僅適用於垂直排列的所有內容,這通常不是行尾。如何在Emacs中一次添加或刪除多行文本?

回答

7

可以

  1. 保存一個鍵盤宏與 C-XC-èC-FC-X, RESP。 C-XC-ë退格退格C-FC-X。然後用C-Xëēēè ...
  2. 做一個正則表達式替換M-C-%調用宏。替換$" 增加一個雙引號,用..$替換..$不用刪除最後兩個 個字符。
+1

或者在錄製宏之後,做一個C-u n C-x e,其中'n'是他想要的重複次數。 – SlowLearner

+1

您是否錯過宏中的「C-n」以進入下一行以準備下次執行宏? – deong

+0

@deong:你說得對,謝謝。更新。 – choroba

3

這裏有一個更直觀的方式,當你在一行中輸入時,看到每一行的結果。

抓鬥yasnippet從http://github.com/capitaomorte/yasnippet最近的副本並添加到您的.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)))) 

現在選擇一個區域,然後鍵入M-x add-to-end-of-lines-snippet

5

M-Xreplace-regexp$"應該工作,但我不知道,如果replace-regexp方面大關。

+3

你總是可以對區域進行縮放,並在整個縮小的緩衝區上運行,而不會破壞原始高位以外的行('C-x n n'和'C-x n w'來恢復縮小)。 – Juancho

+0

'replace-regexp'也可用於其他任務(刪除最後2個字符)。替換「..$「,沒有什麼可以實現的。 – Juancho

相關問題