术语

对于以下概念emacs有自己的术语:

通用名称

通用快捷键

Emacs名称

Emacs快捷键

Cut

C-x

Kill-region

C-w

Copy

C-c

Kill-ring-save

M-w

Paste

C-v

Yank

C-y

Yank next

M-y

如果你不想使用 默认剪切和粘贴 按键绑定 ,可以考录以下替代方案:

X11复制或粘贴到Emacs

X对复制粘贴支持向来都 非常糟糕。这点很重要,因为Emacs支持这一混乱的各个方面。对此讨论重要的是理解X通常区分两种选中类型,PRIMARYCLIPBORD 。每使用鼠标选中一块文本,选中的文本被设置为 PRIMARY 选区。使用 copy 函数将把选中的文本放到 CLIPBOARD。使用鼠标中键粘贴将会插入 PRIMARY 选区。使用 paste 函数将插入 CLIPBOARD

这样,自GNU Emacs 24.1,GNU Emacs应该已经可以正常使用这些。如果你不喜欢这些行为这里有两个你可以自定义的选项:

  • x-select-enable-primary - 默认 nil; 如果你想Emacs命令 C-wC-y 使用 PRIMARY 选区将此配置为 t

  • x-select-enable-clipboard - 默认 t; 如果你想Emacs命令 C-wC-y 使用 CLIPBOARD 选区将此配置为 nil

只在图形界面下有效

是的,你可以让Emacs同时使用这两个选区。

这并不影响使用鼠标中建粘贴。默认,使用 mouse-yank-primary ,它将只查看 PRIMARY 选区。如果你想使用鼠标中键改为插入 CLIPBOARD。使用下面的配置:

 (global-set-key (kbd "<mouse-2>") 'x-clipboard-yank)

最后,在其他应用,粘贴通常使用粘贴板的内容替换选中的内容。在Emacs中开启此行为,可以使用以下语句开启 DeleteSelectionMode:

(delete-selection-mode)

XEmacs

(setq interprogram-cut-function 'own-clipboard)
(setq interprogram-paste-function 'get-clipboard)

第三方插件

simpleclip

你可以使用 https://github.com/rolandwalker/simpleclip 通常可用。

需要注意,对于复制和粘贴,它只有两个命令:

simpleclip-get-contents
simpleclip-set-contents

cliphist

从粘贴板管理器读取粘贴板历史(Parcellite, ClipIt at Linux and Flycut at Mac)。

datclip

如果这些有点麻烦,使用 https://github.com/thomp/datclip 可以在datclip缓冲区中简单显示primary,secondary,和clipborder选区。