将一个缓冲区中的点移动到与另一个缓冲区中的点相同的行号

时间:2011-06-08 23:25:06

标签: emacs

问题:我有两个并排拆分的缓冲区。我移动到左缓冲区中的一行,我想做某事,它将右边缓冲区中的点移动到相同的行号。例如,如果我在左侧缓冲区中的第26行,我运行某种宏,并且我在右侧缓冲区的第26行。

我尝试过的东西没有像我喜欢的那样(或根本没有):

  • scroll-all-mode。如果缓冲区开始同步(例如,两个缓冲区中的点在同一行号上)并且如果我坚持基本线移动,则它可以工作。但如果我isearch-forward-regexp或向上翻页/向下翻页,它会很快失去同步。如果有一个可以“重新同步”的命令,那么这就解决了我的问题。
  • 将当前行号保存在寄存器中并使用goto-line中的寄存器值。保存和恢复位置总是返回到相同的缓冲区。

1 个答案:

答案 0 :(得分:6)

这片Emacs Lisp应该做你想做的事:

(goto-line (line-number-at-pos) (window-buffer (next-window))

将其绑定到键序列

(global-set-key (kbd "C-c l")
  (lambda ()
    (interactive)
    (goto-line (line-number-at-pos) (window-buffer (next-window)))))