对于标题非常不明确的道歉。
基本上在emacs中你可以用C-SPC C-SPC设置标记然后C-u C-SPC回到那个标记点。 如何设置一个能够设置标记并转到该位置的功能(如果之前使用该功能设置了标记)。
意思是,我想将CM-f2绑定设置标记(如果没有设置),所以模拟C-SPC C-SPC,如果先前设置了标记,CM-f2将转到模拟Cu C的位置-spc。
在C中,这将是:
bool mark = 0;
while (1) {
if (mark) {
command = C-u C-SPC;
mark = 0;
} else {
command = C-SPC C-SPC;
mark = 1;
}
}
答案 0 :(得分:2)
我不认为使用该标记是正确的解决方案,但这里使用的是寄存器。
(defun register-set-or-jump ()
(interactive)
(let ((pos (get-register :saved-pos)))
(if (markerp pos)
(progn
;; Saved position found.
;; Jump there and clear the register.
(jump-to-register :saved-pos)
(set-register :saved-pos nil)
(message "Jumped to saved position"))
;; No saved position available.
;; Save point to the register.
(point-to-register :saved-pos)
(message "Saved position to register"))))
(global-set-key (kbd "<C-M-f2>") 'register-set-or-jump)
我建议使用a register而不是the mark的原因是许多Emacs命令依赖和/或修改标记,而您可以根据需要使用或多或少的寄存器。