2013-01-15 77 views
2

我想从缓冲区A到缓冲区B复制一整行。如何在emacs中的缓冲区之间复制整行?

与在Ediff会话中使用相同的方法。 您只需按A或B并复制整条线。

但是我不是在ediff,因为这两个文件是不同的。

有没有一种快速的方法来做到这一点?

或者键盘宏是最好的选择?

回答

7

除非您有兴趣学习emacs-lisp,否则键盘宏绝对是最好的选择。

这里是章升从记录该宏

CX lossage(钙C-SPC的C n的Mw CXö钙赛扬铜 - 1 CXöCX)

下面是宏倾倒文本(edit-last-kbd-macro

;; Keyboard Macro Editor. Press C-c C-c to finish; press C-x k RET to cancel. 
;; Original keys: C-a C-SPC C-n M-w C-x o C-a C-y C-u -1 C-x o 

Command: last-kbd-macro 
Key: none 

Macro: 

C-a   ;; le::beginning-of-line 
C-SPC   ;; set-mark-command 
C-n   ;; next-line 
M-w   ;; le::kill-ring-save 
C-x o   ;; other-window 
C-a   ;; le::beginning-of-line 
C-y   ;; yank 
C-u -1 C-x o  ;; other-window 

这里是给宏绑定到你的init文件的关键代码:

(global-set-key (kbd "C-c c") [?\C-a ?\C- ?\C-n ?\M-w ?\C-x ?o ?\C-a ?\C-y ?\C-u ?- ?1 ?\C-x ?o]) 
+0

此外,函数'append-to-buffer'可能会有用。它可以用来代替序列'other-window','kill-ring-save'和'yank'。 – artscan

+0

是的,这是一个更简单的序列,它并不占用你的杀戒的一个插槽。上面没有优化,我会在编辑文件时记录相当多的特殊宏,并且几乎从不保存它们,所以效率对我来说不是问题。 –

+0

不错,谢谢。 – elviejo79