2011-06-08 32 views
5

Sự cố: Tôi có hai bộ đệm được chia song song. Tôi di chuyển đến một dòng trong bộ đệm trái và tôi muốn làm một cái gì đó di chuyển điểm trong bộ đệm phù hợp với cùng một số dòng. Ví dụ, nếu tôi đang trên dòng 26 trong bộ đệm bên trái, tôi chạy một macro của một số loại và thì đấy tôi đang ở dòng 26 trên bộ đệm bên phải.Di chuyển điểm trong một bộ đệm đến cùng một số dòng như điểm trong một bộ đệm khác nhau

Những điều tôi đã cố gắng mà chưa từng làm việc như tôi thích (hoặc ở tất cả):

  • scroll-all-mode. Nó hoạt động nếu các bộ đệm được đồng bộ hóa để bắt đầu (ví dụ: điểm nằm trên cùng một số dòng trong cả hai bộ đệm) và nếu tôi bám vào chuyển động dòng cơ bản. Nhưng nó nhanh chóng mất đồng bộ nếu tôi isearch-forward-regexp hoặc trang-up/page-down. Nếu có một lệnh mà có thể "resync" thì điều này giải quyết vấn đề của tôi.
  • Lưu số dòng hiện tại vào sổ đăng ký và sử dụng giá trị đăng ký đó trong goto-line. Việc lưu và khôi phục các vị trí luôn quay trở lại cùng một bộ đệm.
+0

Nếu bạn không thực sự cần điểm để di chuyển (và 'hl-line-mode' có thể bù đắp cho điều này một chút), tôi đã nhận thấy rằng tính năng autoscroll' 2C' giữ các bộ đệm trong bước khóa tốt hơn nhiều so với 'scroll-all-mode'. Kết hợp cả hai không có hiệu quả mong muốn, thật đáng buồn. Xem 'M-: (thông tin" (emacs) Hai cột ") RET' – phils

+0

@Ben Bạn có nói rằng bạn muốn so sánh hai bộ đệm/tập tin? Nếu vậy, sử dụng 'ediff-files' hoặc' ediff-buffer '. – CodyChan

Trả lời

6

Đoạn Emacs Lisp nên làm những gì bạn muốn:

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

Để ràng buộc nó vào một dãy phím,

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

Bạn cũng có thể tạo một chế độ phụ giúp bạn khôi phục các phím 'C-n' và' C-p' cho phép bạn di chuyển qua cả hai vùng đệm ở chế độ khóa. –

+0

Các bạn rock ... – Ben

Các vấn đề liên quan