gpt4 book ai didi

emacs - 如何替换 Emacs 中的单词?

转载 作者:行者123 更新时间:2023-12-04 10:29:23 25 4
gpt4 key购买 nike

给定以下句子:

This is one two three.



当我将光标移动到 之间的空间时一个 两个 , 我想替换 两个 与 XXX。
我知道在 vi 中有一种方法可以标记 两个 作为修改后的字符串,这样当我完成输入新字符串并且新字符串替换 两个 到位。

//更新 1//

vi中对应的命令是'cw'

最佳答案

我可能只会使用 M-d SPC X X X(如果需要 SPC,取决于光标是直接放在“一”之后还是“二”之前)或 M-f M-DEL X X X,但也许这不是你要找的。

好的,你没有回答我的评论,也没有投票给答案,所以我猜到你可能喜欢什么,这里有一个小技巧:

(defun change-word (n)
(interactive "p")
(lexical-let ((old-window-configuration (current-window-configuration)))
(clone-indirect-buffer "*edit-word*" t)
(narrow-to-region (point) (save-excursion
(forward-word n)
(point)))
(overwrite-mode 1)
(local-set-key (kbd "C-c C-c")
(lambda ()
(interactive)
(widen)
(let ((end-of-edit (point)))
(kill-buffer)
(set-window-configuration old-window-configuration)
(goto-char end-of-edit))))))

调用 M-x change-word(或将其绑定(bind)到您喜欢的键),编辑单词,完成后键入 C-c C-c。如果要编辑下一个 n单词,给它一个前缀参数(例如 M-3 M-x change-word 来更改接下来的三个单词)。它不完全相同——您将在另一个缓冲区中编辑——但它很接近。试试看你喜不喜欢。这不是一个非常复杂的解决方案。也许最好的,也是最具 emacs 风格的方法是使用类似于 isearch-mode 的东西,突出显示更改的区域等等。请注意,您必须 (require 'cl)因为 lexical-let .

另一种可能性是这样的:
(defun change-word ()
(interactive)
(dotimes (i (- (save-excursion (end-of-thing 'word)) (point)))
(insert (read-char))
(delete-char 1)))

但是这个例子只是一个非常粗略的技巧——你甚至无法在编辑你的单词时导航。也许有人可以写一些修改命令循环行为的东西,但我没有研究过。

我不知道有什么内置功能可以完全满足您的需求,但当然还有 Viper 和其他内置的 Vi 仿真模式。

关于emacs - 如何替换 Emacs 中的单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7060946/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com