书签跳转:Emacs如何跳转到bmark,只有一个拆分窗口改变了内容?

时间:2011-06-01 21:06:15

标签: emacs bookmarks emacs23

我从一个窗口中可见的文件开始;然后我做了一个分割窗口,因此现在两个窗口显示相同的内容(在相同的缓冲点)。

现在我想通过2个窗口中只有1个窗口中的书签跳转到文件中的其他位置,但是当我执行书签跳转时,两个窗口都会在书签的位置结束。

单独留下另一个窗口的点!

我该如何配置?

由于

(在linux上运行,GNU Emacs 23.2.1; xemacs不这样做)


音符后:

我想要做的是在两个窗口上显示相同的文件,当一个窗口(w1)显示文件的一部分时,在另一个窗口(w2)中我跳转到不同的部分,使用各种书签,而w1的位置不会改变。

6 个答案:

答案 0 :(得分:1)

可能有一个直接的答案,但总的来说,我发现在多个窗口中显示相同的缓冲区时,各种各样的事情都会变得不方便。我建议使用indirect buffers。运行M-x clone-indirect-buffer以创建另一个缓冲区,或C-x 4 cclone-indirect-buffer-other-window)以在另一个窗口中显示新缓冲区。间接缓冲区具有与原始缓冲区相同的内容,并且保存保存到相同的文件,但缓冲区具有

  • 独立点,标记,标记;
  • 独立模式(更常见的是独立的局部变量);
  • 独立观点(缩小,隐藏文字,面孔......)。

答案 1 :(得分:1)

这不能直接回答您的问题,但为您的问题提供了另一种解决方案。我使用bm.el作为可见书签。如果在两个窗口中显示相同的文件,则使用可见书签跳转只会修改当前缓冲区中的点。

我已使用以下内容配置了包:

(require 'bm)
(setq bm-highlight-style 'bm-highlight-only-fringe)

(global-set-key (kbd "<C-f2>") 'bm-toggle)
(global-set-key (kbd "<f2>") 'bm-next)
(global-set-key (kbd "<S-f2>") 'bm-previous)

答案 2 :(得分:1)

如果你使用带有书签+和自动书签(c-x p RET / C-x p n / C-x p p)的clone-indirect-buffer-other-window,它将按照你想要的方式工作。没有克隆,书签+对我来说似乎也有同样的问题。

答案 3 :(得分:0)

我使用此功能(我发誓,从互联网上复制)进行分割。使用这个,我认为你可以得到你的,但做的顺序是相反的。

1)使用书签打开另一个文件 2)拆开窗户。

;;----------------------------------------------------------------------------
;; When splitting window, show (other-buffer) in the new window
;;----------------------------------------------------------------------------
(defun split-window-func-with-other-buffer (split-function)
  "dont just dumb split window, change buffer as well"
  (lexical-let ((s-f split-function))
    (lambda ()
      (interactive)
      (funcall s-f)
      (set-window-buffer (next-window) (other-buffer)))))

(global-set-key "\C-x2"
        (split-window-func-with-other-buffer 'split-window-vertically))
(global-set-key "\C-x3"
        (split-window-func-with-other-buffer 'split-window-horizontally))

答案 4 :(得分:0)

试试Bookmark+。如你所描述的那样改变其他窗口中的窗口点。

答案 5 :(得分:0)

回答自己的问题(几年后):

开始使用emacs 24(24.3.1),它“修复”了这种不受欢迎的行为。