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

Emacs 将一个缓冲区中的点移动到与另一个缓冲区中的点相同的行号,emacs,Emacs,问题:我有两个并排分割的缓冲区。我移动到左侧缓冲区中的一行,我想做一些事情,将右侧缓冲区中的点移动到相同的行号。例如,如果我在左边缓冲区的第26行,我运行某种宏,瞧,我在右边缓冲区的第26行 我尝试过但没有发挥我喜欢(或根本没有发挥作用)的事情: 滚动所有模式。如果缓冲区开始时是同步的(例如,两个缓冲区中的点在同一个行号上),并且如果我坚持基本的线移动,它就可以工作。但如果II向前搜索regexp或向上/向下翻页,它很快就会失去同步。如果有一个命令可以“重新同步”,那么这就解决了我的问题 将当

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

我尝试过但没有发挥我喜欢(或根本没有发挥作用)的事情:

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

这段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)))))

您还可以创建一个次要模式,重新绑定
C-n
C-p
键,允许您在锁步中移动两个缓冲区。如果您实际上不需要点移动(和
hl行模式
可以在一定程度上弥补这一点),我注意到,
2C
autoscroll功能使缓冲区保持锁定状态的效果远远好于
scroll all mode
。遗憾的是,将两者结合起来并没有达到预期的效果。请参见
M-:(信息“(emacs)两列”)RET
@Ben您是说要比较两个缓冲区/文件吗?如果是,请使用
ediff文件
ediff缓冲区