Emacs:如何删除没有杀环的文本?

man*_*ken 78 emacs

我想删除一些文本,这样我就可以抽取其他文本而不是它.我怎样才能做到这一点?Cw削减选定的文本以杀死戒指,我最终没有我想要的文本.

此外,是否可以直接抽取文本而不是一些文本,甚至没有按下按钮来杀死它?

ash*_*ley 46

M-x delete-region经常键入,但你可以将它绑定到一个键.

使用较新版本的Emacs中的删除选择模式,您无需键入命令即可开始输入:

默认情况下,即使标记处于活动状态,也会正常进行文本插入 - 例如,键入插入字符"a",然后停用标记.删除选择模式(次要模式)会修改此行为:如果启用该模式,则在标记处于活动状态时插入文本会导致首先删除区域中的文本.此外,通常只删除一个字符(例如C-dDEL)的命令将删除整个区域.要打开或关闭"删除选择"模式,请键入M-x delete-selection-mode.

  • 此外,使用最新版本的Emacs,您甚至不需要将`delete-region`绑定到键,因为Backspace现在就这样做了.Backspace删除所选区域而不是删除它,换句话说,Backspace会删除所选文本而不保存/推送到kill ring.这是因为`delete-active-region`的值是`t`,除非你将它自定义为其他值. (33认同)

Eug*_*zov 36

您可以使用M-yafter C-y从kill ring插入前一项,或使用browse-kill-ring包.

至于第二个问题,请参阅DeleteSelectionMode.


小智 20

我有同样的问题.到目前为止,我最接近的是制作一个基本上是小功能:

(defun ruthlessly-kill-line ()
  "Deletes a line, but does not put it in the kill-ring. (kinda)"
  (interactive)
  (move-beginning-of-line 1)
  (kill-line 1)
  (setq kill-ring (cdr kill-ring)))
Run Code Online (Sandbox Code Playgroud)

  • 为什么不只是 (delete-region (line-beginning-position) (line-end-position))? (2认同)

Joh*_*eri 11

取自EmacsWiki:

相当于‘kill-line’(‘C-k’)但没有杀死环的副作用:

(delete-region (point) (line-end-position))
Run Code Online (Sandbox Code Playgroud)


小智 5

Mx eval-expression(setq kill-ring(cdr kill-ring)) - 从kill-ring中删除最后一项