6

当我执行 aC-u C-SPC时,emacs 会将我带到“以前的位置”。随后C-u C-SPC的压力会回到以前的位置。这太棒了,我经常使用它。

但是有些事情总是困扰着我:标记环中唯一缺少的标记是where-I-invoked-this-in-the-1st-place!这就像在你身后留下面包屑,然后去“哎呀,我可能会迷路,我回去检查一下”,然后在你现在所在的地方不留下面包屑!

我尝试为该功能提供建议,但我无法终生以编程方式模拟C-SPC C-SPC.

  • 我怎样才能“看到”(回声、消息、跟踪等)组合键的作用,例如“Ch k”,但对于重复的键序列,例如C-SPC C-SPC?这是手册对后者的描述(强调我的)

C-SPC 运行命令 set-mark-command,它是 `simple.el' 中的交互式编译 Lisp 函数。

它绑定到 C-@,C-SPC。

(set-mark-command ARG)

在点所在的位置设置标记,或跳转到标记处。设置标记也会改变区域,即点和标记之间的文本;这是 Emacs 中最接近某些编辑器所称的“选择”的等价物。

在没有前缀参数的情况下,将标记设置为点,并将旧标记位置推到本地标记环上。如果前一个标记设置在另一个缓冲区中,也将旧标记推到全局标记环上。

但是当我尝试使用它(非交互式)“没有前缀参数”以“在点设置标记”时,我得到一个调试器错误“错误的参数数量”..?(我意识到参数和前缀参数之间的区别)。

即使有一个哲学的,非实用的答案,我也可以。我只是想了解这里的想法。

4

4 回答 4

3

(push-mark)似乎正在做你想做的事。

于 2012-07-27T13:48:14.820 回答
1

好的,这就是我所做的

(defun px-push-mark-once-and-back ()
    "Mark current point (`push-mark') and `set-mark-command' (C-u C-SPC) away."
    (interactive)
    (let ((current-prefix-arg '(4))) ; C-u
        (if (not (eq last-command 'px-push-mark-once-and-back))
                (progn
                    (push-mark)
                    (call-interactively 'set-mark-command))
            (call-interactively 'set-mark-command))))

(global-set-key (kbd "<s-left>") 'px-push-mark-once-and-back)
于 2012-07-27T14:34:01.093 回答
1

好的,我在这里将这个问题的两个相关答案打包成一个小包。

它允许您使用C-- C-SPC在标记环中前进。

于 2012-07-29T17:28:25.300 回答
0

您可能不应该使用set-mark或非set-mark-command交互方式。在 elisp 中,只需将点(或任何位置)保存在具有好名称的变量中。

另外,C-h i m emacs m mark.

我不是emacs大师wrt标记运动,我几乎不使用它。我知道我以前见过你想要的行为。

于 2012-07-27T14:08:18.017 回答