删除一个单词而不将其添加到 Emacs 中的 kill-ring

Posted

技术标签:

【中文标题】删除一个单词而不将其添加到 Emacs 中的 kill-ring【英文标题】:Delete a word without adding it to the kill-ring in Emacs 【发布时间】:2011-05-26 04:47:16 【问题描述】:

在使用 minibuffer (C-x C-f) 切换文件时,我经常使用 M-Backspace 删除路径中的单词。 Emacs 会自动将我删除的内容放入 kill ring 中。这可能很烦人,因为有时我要移动到另一个文件来粘贴一些东西,最后我粘贴了文件路径的一部分。我知道有变通办法,其他代码仍在杀戮环等中,但我只想禁用此功能。

【问题讨论】:

【参考方案1】:

Emacs 没有backward-delete-word 函数,但定义一个函数很容易:

(defun backward-delete-word (arg)
  "Delete characters backward until encountering the beginning of a word.
With argument ARG, do this that many times."
  (interactive "p")
  (delete-region (point) (progn (backward-word arg) (point))))

然后你可以在minibuffer-local-map中绑定M-Backspace到backward-delete-word

(define-key minibuffer-local-map [M-backspace] 'backward-delete-word)

【讨论】:

在这里,我一直使用退格键和 C-d 来编辑迷你缓冲区中的文件名。 :)【参考方案2】:

help-gnu-emacs@gnu.org 上查看有关此主题的讨论: http://lists.gnu.org/archive/html/help-gnu-emacs/2011-10/msg00277.html

讨论归结为这个简短的解决方案:

(add-hook 'minibuffer-setup-hook'
          (lambda ()
            (make-local-variable 'kill-ring)))

【讨论】:

以上是关于删除一个单词而不将其添加到 Emacs 中的 kill-ring的主要内容,如果未能解决你的问题,请参考以下文章

将文件推送到 Github/Gitlab 而不将其添加到 .git?

测试 WPF 控件而不将其添加到窗口

如何在现有 csv 文件中写入新行而不将其附加到最后一行?

SwiftUI:将动画添加到 Picker 而不将其添加到值中

可以隐藏 SlickGrid 列而不将其从“列”数组中删除吗?

如何计算GeoJSON的边界而不将其添加到地图中