Emacs:复制文本(而不是删除它)

27

在Emacs中,如何复制文本区域(以便将其粘贴到另一个缓冲区),而不是删除它(例如:我想要复制的文件以只读模式打开,因此无法删除)。


这不是应该去Super User(http://superuser.com/)问吗? - Chetan
可能是这样,但是请查看stackoverflow.com/questions/tagged/emacs和superuser.com/questions/tagged/emacs中的大量emacs标签。 - Peter Turner
Emacs的问题比较棘手,可以参考http://meta.stackexchange.com/questions/36017/what-site-should-host-questions-about-emacs-keybinding了解一些相关讨论。 - dmckee --- ex-moderator kitten
3个回答

52

只需标记(C-space 在范围的一端,然后移动到另一端) 并使用 M-w (kill-ring-save):

(kill-ring-save BEG END)

将区域保存为已被删除的方式,但不要删除它。


8

另外两种方法:

  • 您还可以使用鼠标(鼠标按钮1)选择它,这将把区域复制到kill ring。

  • 当缓冲区为只读时,您可以使用kill-*例程(C-wC-k)将区域/行复制到kill ring。 Emacs会发出哔哔声,但这是一个记录在案的功能:

如果缓冲区为只读,Emacs会哔哔声并避免删除文本,但仍将文本放入kill ring中。 这意味着您可以使用删除命令从只读缓冲区复制文本。


选择复制到剪贴板的行为在X11中有效,但我认为这是因为它是X11行为。或者它也可以在其他情境下工作吗? - dmckee --- ex-moderator kitten
@dmckee 与 X 的交互与 kill-ring 无关。您可以在没有 kill-ring 的情况下复制到 X,也可以在没有 X 的情况下将东西放在 kill-ring 上。但是,通常它们是相互关联的。我只是描述 Emacs 的行为,无论您是否在 X 中都可以工作。 - Trey Jackson

2
我使用命令
M-x append-to-file

这样做的问题是,如果您要复制到的文件已经打开,您需要以某种方式刷新屏幕,以便新内容出现在那里。此外,您复制的内容将会添加到您选择的目标文件的末尾。
您可能还会发现以下命令:
M-x write-region

并且

C-x i   (insert-file)

实用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接