如何在Emacs中像普通kill一样删除矩形?

4

我不知道该如何表达,请看下面的例子。

输入:

a
bc
deffffffff
gh
i

我在"c"前设置了标记,并将当前光标放在"h"后面。然后按下C-x r k,即M-x kill-rectangle。 我假设输入、输出和kill ring缓冲区中都没有空格。
a
b
dffffffff
g
i

Kill ring:

c
e
h

但我想要的是以下输出和剪贴板。
期望的输出:
a
b
d
g
i

期望的 kill ring:

c
effffffff
h

有没有什么方法可以做到这一点?谢谢。

1
只需在“h”后添加一堆空格,然后按下“C-x r k”。区域不可见,但仍将起作用。最后,使用“delete-trailing-whitespace”。 - abo-abo
是的,这就是我一直在做的事情。但是我没有注意到在粘贴后使用delete-trailing-whitespace命令非常有用。谢谢。如果有更加智能的方法,欢迎分享! - Kei Minagawa
2个回答

3

cua-mode的矩形操作函数非常复杂。对于您的使用情况,它允许您使用cua-set-rectangle-mark标记矩形,然后使用cua-copy-rectangle复制矩形。最后使用cua-paste粘贴。以下是一个示例

1) 首先通过执行M-xcua-modeRET启用cua-mode

2) 使用cua-set-rectangle-mark(绑定到C-RET)开始标记矩形

rectangle selection with cua-mode

3) 使用cua-copy-rectangle(绑定到M-w)复制所选矩形或使用cua-cut-rectangle(绑定到C-w)删除所选矩形

4) 最后使用cua-paste(绑定到C-y)粘贴

更新:在Emacs 24.4中(尚未发布),您可以使用cua-rectangle而无需启用cua-mode,相关命令是cua-rectangle-mark-mode


3
在Emacs-24.4中,你可以只使用M-x cua-rectangle-mark-mode而无需启用cua模式。 - Stefan

1

一种方法,但它会干扰空格:

  1. 使用 M-x picture-mode 进入图片模式。
  2. 从同一位置开始选择区域,然后将光标移动到最后一个 f 后面的空格处。
  3. 剪切:C-x r k
  4. 使用 C-c C-c 退出图片模式。这样做的次要效果是删除尾随的空格。此外,剪切的矩形会用空格填充。

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