- 我在终端中用鼠标选择绝对文件名
- 我想在正在运行的 emacs 中打开这个文件:ctrl++x ctrlf
- Emacs 迷你缓冲区:包含“~/....”
- 我输入 ctrl-a ctrl-k 删除“~/....”
- 我想用中间按钮粘贴
- 插入“~/....”,而不是第一步的文件名。
如何阻止 emacs 覆盖我用鼠标选择的文本?
答案1
如果我正确理解您的要求,可能最简单的解决方案是在迷你缓冲区的开头提取(粘贴)复制的文件名前执行kill-to-end-of-line ie而不是Ctrl++ a Ctrl,kdo Ctrl+a Ctrl+yCtrl+ k.如果您更喜欢使用鼠标,则可以在同一点用中键粘贴替换Ctrl+ 。y
或者,根据这个 stackoverflow 答案删除(而不是杀死)emacs 中的一行应该可以通过添加以下内容自动将外部复制的文本添加到 emacs Kill-ring 中
(setq save-interprogram-paste-before-kill t)
Meta到您的 emacs 配置 - 这应该使文件名可通过使用+向后滚动删除环来进行拉取y
答案2
这在过去也困扰过我。
我找到的解决方案是制作Ctrl+K仅删除命令。这对我有用,因为我从来没有使用Ctrl+K来复制和粘贴。
最初发布这里
;; Ctrl-K with no kill
(defun delete-line-no-kill ()
(interactive)
(delete-region
(point)
(save-excursion (move-end-of-line 1) (point)))
(delete-char 1)
)
(global-set-key (kbd "C-k") 'delete-line-no-kill)
答案3
EMACS 会将多个斜杠转换为根路径,例如//
变为/
如果您要
- 保留迷你缓冲区中的所有文本
- 附加一个
/
- 将绝对路径粘贴到迷你缓冲区中,并将其附加到现有文本中
迷你缓冲区将有一个路径,例如~//path2file/file
EMACS 将打开/path2file/file
无需重新分配Ctrl+K,只需了解 EMACS 如何处理迷你缓冲区中的文件名即可。
阅读 GNU EMACS 手册主题“文件名的迷你缓冲区”这里;开始阅读文本“但是你不需要杀死默认值;”