将矩形选区的形状保存在 Emacs 寄存器中

发布于 2024-11-06 06:13:42 字数 428 浏览 1 评论 0原文

我需要从固定大小的矩形区域重复复制文本,并且希望能够将该矩形区域的形状保存在寄存器中,这样我就不必继续重新创建相同的大小。

  1. cua-set-rectangle-mark ()

  2. 移动点以创建 8x16 区域(注意:这是我要删除的步骤

  3. piture-clear-rectangle (Cc Ck)

  4. 将点移动到新位置。

  5. 图片复制矩形 (抄送 Cy)

我想用单个“从寄存器粘贴矩形区域”命令替换步骤 1 和 2。这可能吗?

I need to repeatedly copy text from a fixed size rectangular region and I'd like to be able to save the shape of that rectangular region in a register so I don't have to keep re-creating the same size.

  1. cua-set-rectangle-mark (<C-return>)

  2. Move point to create a region 8x16 (note: this is the step I want to remove)

  3. piture-clear-rectangle (C-c C-k)

  4. Move point to new location.

  5. picture-yank-rectangle (C-c C-y)

I'd like to replace steps 1 and 2 with a single 'paste rectangular region from register' command. Is this possible?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

水水月牙 2024-11-13 06:13:42

只需使用键盘宏来实现此目的不是更容易吗?

例如:-

C-x C-(   [start recording kbd macro]
steps 1-2
C-x C-)   [end recording kbd macro]

然后

C-x e     [execute kbd macro]

Wouldn't it be easier to simply use a keyboard macro for this?

E.g.:-

C-x C-(   [start recording kbd macro]
steps 1-2
C-x C-)   [end recording kbd macro]

Then

C-x e     [execute kbd macro]
时光暖心i 2024-11-13 06:13:42

您可能想使用copy-rectangle-to-registerinsert-register

Cx rr 运行命令 copy-rectangle-to-register,这是一个
`register.el' 中交互式编译的 Lisp 函数。

它与 Cx r r 绑定。

(复制矩形到寄存器寄存器开始结束和可选的删除标志)

将矩形区域复制到寄存器REGISTER中。
带有前缀arg,也删除。
要将此寄存器插入缓冲区,请使用 Cx r g。

从程序中调用,需要四个参数:REGISTER、START、END 和 DELETE-FLAG。
START 和 END 是给出矩形两个角的缓冲区位置。

插入寄存器:

Cx rg 运行命令 insert-register,这是一个交互式命令
在 `register.el' 中编译了 Lisp 函数。

它与 Cx rg、Cx r i 绑定。

(插入寄存器 REGISTER 和可选 ARG)

插入寄存器REGISTER的内容。 (REGISTER 是一个字符。)
通常在插入文本之前放置点,在插入文本之后放置标记。
如果可选的第二个参数非零,则将标记放在前面,将点放在后面。
交互地,如果提供了前缀 arg,第二个 arg 就非零。

另请参阅:

Cxrcclear-rectangle
Cxrd删除矩形
Cxrk杀矩形
Cxro开放矩形
Cxrr复制矩形到寄存器
Cxrt字符串矩形
Cxryyank-rectangle

编辑:

是的,我完全误解了这个问题。

如果您仍然特别想使用寄存器,您可以保存并重新执行点移动,如下所示:

(set-register ?a [right right right down down])
(command-execute (get-register ?a))

You probably want to use copy-rectangle-to-register and insert-register:

C-x r r runs the command copy-rectangle-to-register, which is an
interactive compiled Lisp function in `register.el'.

It is bound to C-x r r.

(copy-rectangle-to-register REGISTER START END &optional DELETE-FLAG)

Copy rectangular region into register REGISTER.
With prefix arg, delete as well.
To insert this register in the buffer, use C-x r g.

Called from a program, takes four args: REGISTER, START, END and DELETE-FLAG.
START and END are buffer positions giving two corners of rectangle.

insert-register:

C-x r g runs the command insert-register, which is an interactive
compiled Lisp function in `register.el'.

It is bound to C-x r g, C-x r i.

(insert-register REGISTER &optional ARG)

Insert contents of register REGISTER. (REGISTER is a character.)
Normally puts point before and mark after the inserted text.
If optional second arg is non-nil, puts mark before and point after.
Interactively, second arg is non-nil if prefix arg is supplied.

See also:

C-xrc: clear-rectangle
C-xrd: delete-rectangle
C-xrk: kill-rectangle
C-xro: open-rectangle
C-xrr: copy-rectangle-to-register
C-xrt: string-rectangle
C-xry: yank-rectangle

EDIT:

Right, I completely misunderstood the question.

If you still particularly want to use registers, you could save and re-execute point movements with something like this:

(set-register ?a [right right right down down])
(command-execute (get-register ?a))
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文