Không thay đổi vị trí con trỏ khi cuộn trong Emacs


18

Có cách nào để ngăn Emacskhông cho tự động di chuyển vị trí con trỏ văn bản của tôi (hay còn gọi là điểm) trong khi tôi đang cuộn không? Tôi liên tục mất vị trí và đánh dấu với hành vi gây phiền nhiễu này.

Tôi đã thử nghiệm đề xuất sau đây, nhưng không thành công:

(setq scroll-preserve-screen-position t
scroll-conservatively 0)

(Tôi đang chạy Emacs24.2 trên Ubuntu và trên OS X.)

Câu trả lời:


11

Tôi nghĩ rằng bạn muốn hành vi của con trỏ (điểm) và vùng nhìn thấy phải giống như notepad, geditcác trình soạn thảo hiện đại khác: khả năng thay đổi vùng nhìn thấy độc lập với vị trí điểm và ngay lập tức đưa vùng nhìn thấy về vị trí điểm sau khi di chuyển điểm. Nhưng emacscó một quan niệm khác: khu vực nhìn thấy luôn theo vị trí điểm và ngược lại.

Xem thêm /programming/9616623/ctrl-up-down-style-scrolling-in-emacs

Câu trả lời trước cho thấy thành ngữ đặc biệt: nếu bạn muốn di chuyển vùng nhìn thấy (có cùng điểm) ra xa vị trí hiện tại và sau đó trả lại điểm ở vị trí chính xác trước đó bạn nên có thói quen sử dụng mark-ring. Có luôn luôn là một cách thức thông qua mark ringvào vị trí làm việc hiện tại: nhiều lệnh, như isearch-forward, beginning-of-buffer, ace-jump-modetự động tiết kiệm vị trí trước trong mark ringvà bạn không nên sử dụng C-<SPC> C-<SPC>trước đó, nhưng chỉ C-u C-<SPC>để nhảy trở lại. Các lệnh cuộn, như scroll-uphoặc mwheel-scroll, không tự động lưu vị trí trước đó theo mặc định vì nó có thể tạo ra quá nhiều dấu hiệu quá mức.

Bạn có thể sử dụng các lệnh clone-indirect-bufferhoặc view-buffer-other-windowcho công việc độc lập với bộ đệm ở một vài nơi. Và sử dụng lệnh recenter-top-bottom( C-l) để liên tục giữ điểm ở giữa vùng nhìn thấy được.


2
Cảm ơn. Câu trả lời thú vị. Dường như có vấn đề với Emacs của tôi, mặc dù (cả trong Mac và Ubuntu): C-u C-<SPC>dường như không hoạt động. Tôi không biết đó có phải là vấn đề cua-modehay không. Tôi đã thử chạy Emacs với -qtùy chọn, nhưng không có gì thay đổi. Có ý kiến ​​gì không?
NVaughan

Điều đó thật tệ ... Tôi thấy điều này siêu phiền phức, bởi vì tôi sử dụng highlight-symbol-mode. Tôi đặt con trỏ trên một biến và nó làm nổi bật tất cả các lần xuất hiện. Khi tôi bắt đầu cuộn, con trỏ rời khỏi biến và tất cả các điểm nổi bật bị mất. Emacs sẽ tốt hơn nhiều nếu ít nhất nó sẽ hoạt động giống như các biên tập viên đương đại khác liên quan đến công cụ cuộn.
itmuckel

7

Tôi không biết có cách nào để ngăn emacs di chuyển điểm của bạn khi cuộn không. Nhưng nếu bạn muốn lưu vị trí của mình để quay lại vị trí đó sau, bạn có thể sử dụng vòng đánh dấu .

Nghĩa là, gõ C-<SPC> C-<SPC>để đẩy vị trí điểm hiện tại lên vòng đánh dấu, sau đó gõ C-u C-<SPC>để đặt điểm đến vị trí trước đó trong vòng đánh dấu.


3

Tôi sử dụng cái này:

;;; scrollers - M-f, M-b
(global-set-key "\M-f" "\C-u1\C-v")
(global-set-key "\M-b" "\C-u1\M-v")

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.