有效使用标记环


29

我已经使用该标记来选择缓冲区的区域。例如,我知道该序列C-<space> C-s foo可用于选择当前点和搜索后的点之间的所有文本foo

我最近发现了标记环的存在,因此可以C-<space> C-<space>留下标记,将点移到缓冲区中,然后C-u C-<space>跳回去。

是否有任何建议,指南或技巧可有效使用标记环进行导航?


2
感谢您提出问题。我想到的一个想法是为“添加标记”建立一个更快的绑定,例如 (global-set-key (kbd "s-m") '(lambda () (interactive) (push-mark)))
Joe Corneli 2015年

Answers:



12

当您设置set-mark-command-repeat-popt通过

(setq set-mark-command-repeat-pop t)

您可以C-SPC在首次调用后按住,C-u C-SPC以跳至标记环中存储的先前位置。


10

我发现使用寄存器标记位置更容易:C-x r <space>然后用字母标记,C-x r j然后用字母跳回。我可以维护多个标记,在多个缓冲区之间交替使用时非常有用


2
我总是感到自己停顿
下来,

@nispio前一段时间,我实现了扩展git@github.com:atykhonov / iregister.el.git,其中一个想法是:允许跳过使用哪个寄存器的决定。扩展名可能对您没有用,但是您可以借用这样的想法,即您的自定义脚本可以仅使用任何免费寄存器,然后允许浏览已使用的寄存器并进行还原。
Andriy Tykhonov 2015年

9

C-x C-x对于exchange-mark-and-point具有类似用途C-u C-space。它使您可以在一个点和最后一个标记之间跳动。transient-mark-mode当它激活标记并选择区域时,弹跳起来有点奇怪。


C-x C-x使用瞬态标记模式时,非常适合选择您最后选择的内容(在iedit模式下有用)或被选中的内容。
符文·卡加德

8

除了您在此处获得的其他提示之外,我想我还应该提及这C-s为您设置了标志,因此无需明确地进行操作。此外,许多命令是“移动可能很长的路要走”(beginning-of-bufferend-of-buffer例如)也设置在这里你开始的标志。与其他使用标记的方法(弹出,交换点和标记等)一起,一旦您了解了缓冲区的工作原理,它就是使用缓冲区的一种非常有效的方法。还要注意,如果将文本拖到缓冲区中,则指向并标记包围被拖文本。


5

(您的问题是开放式的,因此可能会因为主要基于意见而被封闭。)

我使用的方法:冰柱 多命令 icicle-goto-marker(绑定到C-- C-SPC)在任意缓冲区(mark-ring)中的标记周围跳闸,而icicle-goto-global-markerC-- C-x C-SPC)在全局标记(global-mark-ring)之间跳闸。

标记所在的文本行用作完成候选。您可以键入一些文本(例如,子字符串,正则表达式)以将候选对象缩小到匹配的行。您可以在匹配的行之间循环,访问任何您喜欢的行。如果您还使用库,crosshairs.el则会用十字准线暂时突出显示您访问的标记的位置,因此您可以快速查看它的位置。

这是doc字符串的一部分icicle-goto-marker

Go to a marker in this buffer, choosing it by the line that includes it.
If `crosshairs.el' is loaded, then the target position is highlighted.

By default, candidates are sorted in marker order, that is, with
respect to their buffer positions.  Use `C-M-,' or `C-,' to change the
sort order.

During completion you can use these keys:

`C-RET'   - Goto marker named by current completion candidate
`C-down'  - Goto marker named by next completion candidate
`C-up'    - Goto marker named by previous completion candidate
`C-next'  - Goto marker named by next apropos-completion candidate
`C-prior' - Goto marker named by previous apropos-completion candidate
`C-end'   - Goto marker named by next prefix-completion candidate
`C-home'  - Goto marker named by previous prefix-completion candidate
`<S-delete>' - Delete marker named by current completion candidate

Use `mouse-2', `RET', or `S-RET' to choose a candidate as the final
destination, or `C-g' to quit.
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.