【发布时间】:2022-01-21 06:42:27
【问题描述】:
在 Vim 中,我可以转到光标所在的先前位置。
此外,我可以在位置列表中来回移动(C-o 用于向后跟踪,C-i 用于向前跟踪)。
emacs 中是否有类似的功能?
C-u C-SPC 只在列表中倒退。
【问题讨论】:
-
看看
mark-ring。只是一个循环缓冲,所以肯定有可能
标签: emacs
在 Vim 中,我可以转到光标所在的先前位置。
此外,我可以在位置列表中来回移动(C-o 用于向后跟踪,C-i 用于向前跟踪)。
emacs 中是否有类似的功能?
C-u C-SPC 只在列表中倒退。
【问题讨论】:
mark-ring。只是一个循环缓冲,所以肯定有可能
标签: emacs
我意识到这是一个旧帖子,但我刚刚完成了一个可以做你想做的事情的包,称为足迹。它和你在 vim 中描述的功能类似,但并不完全相同。
首先,vim 的向前/向后跟踪功能似乎没有密度限制,其中脚步试图防止其位置历史记录(或步进环)中的光标位置(或步进)过于密集。如果您更喜欢密集记录,您可以自定义设置“足迹--最小线-前-步”。给它一个值 1 应该使它的行为类似于 vim。
两者之间的另一个区别是足迹只记录行号。它不记录行内的位置。用它来导航总是会把你带到一行的开头。
Vim 和足迹也以不同的方式处理我所说的分支或循环导航,但是对它们每个行为的完整描述是复杂的。不过,脚步的行为在 README.md 中有详细说明。
最后一个区别(我知道)是 vim 将在多个会话中保留其历史记录。脚步声不会这样做。
如果您想尝试,可以在以下链接中找到:https://gitlab.com/jdavisclemson/footsteps。
概要说明:
此软件包提供了一种在浏览项目时快速追溯“足迹”的方法。 它维护一圈自动记录的先前位置,简称为“足迹”或“步骤”。 这些步骤会根据某些可定制的设置“智能”地记录下来。 步数存储在步环中,可以将其概念化为足迹。
如果您选择使用该软件包,我强烈建议您阅读整个 README.md 以了解有关其工作原理的更多详细信息。
【讨论】:
你可以试试http://www.emacswiki.org/emacs-en/pointhistory.el。
来自文件内文档的引用:
提供两个环pointhistory-ring 和pointhistory-auto-ring 用于记住点的位置。
如果命令将点移动很长一段距离,则先前的点位置存储在pointhistory-auto-ring 中。
您可以通过命令pointhistory-auto-backward(绑定到M-S-up)返回到这些点位置。如果您不小心移动了点并想要返回到之前的位置,这将非常有用。
如果你想记住一个点的位置供以后使用,你可以调用pointhistory-point2ring(绑定到M-+)。
按 M-up 或 M-down 旋转存储的点位置。
【讨论】:
如果您使用Icicles,那么您可以使用命令icicle-goto-marker 在这些位置之间循环。默认情况下,它以 Icicle 模式绑定到 C-- C-SPC(C-SPC 没有前缀参数设置标记)。
您可以键入与此类位置附近的某些文本相匹配的文本,以缩小循环候选范围。您可以以不同的方式对候选人进行排序,因此您可以按不同的顺序循环。而且你可以直接去任何位置,不用骑车,通过匹配文本。
在 Emacs 中有两种这样的位置环:
global-mark-ring - 在每个标记缓冲区中具有一个位置的单个环。mark-ring - 每个缓冲区的环。也就是说,每个缓冲区都有一个相关联的mark-ring 在该缓冲区内的位置。用于在global-mark-ring 上的位置之间导航的Icicles 命令是icicle-goto-global-marker。默认情况下,它以 Icicle 模式绑定到C-- C-x C-SPC(C-x C-SPC 没有前缀参数会弹出全局标记)。
【讨论】: