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

Ben*_*Ben 5 emacs

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

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

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

hua*_*uan 6

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

(goto-line (line-number-at-pos) (window-buffer (next-window))
Run Code Online (Sandbox Code Playgroud)

要将其绑定到键序列,

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