2011-06-08 65 views
5

問題:我有兩個緩衝區並行分離。我移動到左緩衝區中的一行,我想要做,它將右緩衝區中的點移動到相同的行號。例如,如果我在左邊的緩衝區中的第26行,我運行某種宏,瞧,我在右邊的緩衝區上的第26行。將一個緩衝區中的點移動到與另一個緩衝區中的點相同的行號

事情我已經嘗試過,因爲我很喜歡(或全部),這都沒有奏效:

  • scroll-all-mode。它起作用,如果緩衝區同步開始(例如,點在兩個緩衝區中的同一行號)並且如果我堅持基本的線移動。但是如果我isearch-forward-regexp或者頁面向上/向下翻頁,它會很快失去同步。如果有一個可以「重新同步」的命令,那麼這就解決了我的問題。
  • 將當前行號保存在一個寄存器中,並使用該寄存器值goto-line。保存和恢復位置總是返回到相同的緩衝區。
+0

如果你實際上不需要點移動(和'hl-line-mode'可以彌補這一點),我注意到'2C'自動滾動功能可以使緩衝區保持在鎖定步驟,​​遠勝於'scroll-all-mode'。可悲的是,將兩者結合起來並不具有預期的效果。見'M- :(info「(emacs)兩列」)RET' – phils 2012-04-11 06:45:22

+0

@Ben你是說你想比較兩個緩衝區/文件嗎?如果是這樣,使用'ediff-files'或'ediff-buffers'。 – CodyChan 2014-11-19 18:33:08

回答

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))))) 
+0

您也可以創建一個次要模式,重新綁定您的'C-n'和'C-p'鍵,使您可以以鎖步方式移動兩個緩衝區。 – 2011-06-09 10:33:14

+0

你們搖滾...... – Ben 2011-06-09 23:16:10

相關問題