在Emacs中追逐标签后切换到原始缓冲区

时间:2014-01-15 23:48:01

标签: emacs

我使用M-.跳转到类/函数的定义。有时候有多个具有相同标记的类,所以我需要使用C-u M-.来跳转到多个文件,因此需要多个缓冲区。现在我的问题是,如何快速回到原始缓冲区?我知道C-x b,但你需要输入缓冲区名称,或者它只是默认情况下给你访问的最后一个缓冲区,无论如何还要进一步?例如,转到最后一个缓冲区的前一个缓冲区?

3 个答案:

答案 0 :(得分:2)

我认为M-.默认调用find-tag。您应该可以使用M-*pop-tag-mark)返回位置堆栈。

来自C-h f find-tag

  

表示调用此命令时的点的标记被推送   在一个戒指上,可以弹回M-*。与此对比   指挥所留下的痕迹。

答案 1 :(得分:1)

Icicles multi-command icicle-find-tag,绑定到 Icicle 模式中的 M-. ,结合了所有的香草Emacs命令M-.find-tag),M-,tags-loop-continue),tags-aproposlist-tags可以执行。它做得更多。

您可以完成任何标记,在匹配其他模式的标记子集中循环(以不同顺序),依此类推,在单个命令调用中访问多个标记。您可以按任意顺序选择要访问的标签---您无需按顺序访问每个标签。

  1. 您首先输入(使用RET)正则表达式,您感兴趣的所有标签必须匹配(它可能是空的,以获取所有标签)。

  2. 之后,您可以键入标签的子集和/或其源文件必须匹配的模式。

    也就是说,默认情况下,您可以完成由标记本身及其源文件名组成的multi-completion个候选项。

  3. 您可以使用C-mouse-2中的*Completions*选择要访问的候选人,也可以使用downupC-RET之间循环,然后使用M-*拜访。

  4. 您可以使用 icicle-pop-tag-mark C-g)返回原始位置。您也可以使用M-.完成{{1}}调用来返回。

  5. 更多信息here

答案 2 :(得分:0)

我使用winner-mode(以及其他类似情况)。

(winner-mode 1)添加到您的init文件中,然后当您希望返回到跳转到标记之前所处的窗口配置时,只需键入:

C-c < left> 致电winner-undo(根据需要重复多次)

如果您访问过另一个缓冲区中的多个标记,这将使您在一个步骤中返回到原始缓冲区(或任何速率的前一个缓冲区),而不是逐个退回单个标记。 / p>

如果标签带您通过多个缓冲区,那么您需要为每个缓冲区键入 Cc &lt; left&gt; 一次(或 Cc < / kbd> &lt; left&gt; Cx z z z ...如果你走了很长一段路:)