Jangan mengubah posisi kursor saat menggulir di Emacs

18

Apakah ada cara untuk berhenti Emacsmemindahkan posisi kursor teks saya (alias, titik) secara otomatis saat saya menggulir? Saya terus kehilangan lokasi dan tanda saya dengan perilaku yang mengganggu ini.

Saya menguji saran berikut, tanpa hasil:

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

(Saya menjalankan Emacs24.2 di Ubuntu dan di OS X.)

NVaughan
sumber

Jawaban:

11

Saya pikir Anda ingin perilaku kursor (titik) dan area terlihat harus seperti dalam notepad, gediteditor modern lainnya: kemampuan untuk mengubah area yang terlihat secara independen dari posisi titik dan untuk segera mengembalikan area yang terlihat ke posisi titik setelah titik bergerak. Tetapi emacsmemiliki konsep lain: area yang terlihat selalu mengikuti posisi titik dan sebaliknya.

Lihat juga /programming/9616623/ctrl-up-down-style-scrolling-in-emacs

Jawaban sebelumnya menunjukkan idiom khusus: jika Anda ingin memindahkan area yang terlihat (dengan titik bersamaan) jauh dari posisi saat ini dan kemudian mengembalikan titik tepat di posisi sebelumnya Anda harus memiliki kebiasaan untuk digunakan mark-ring. Selalu ada jalan melalui mark ringke posisi kerja saat ini: banyak perintah, seperti isearch-forward, beginning-of-buffer, ace-jump-modeotomatis menyimpan posisi sebelumnya di mark ringdan Anda tidak harus menggunakan C-<SPC> C-<SPC>sebelumnya, tetapi hanya C-u C-<SPC>untuk melompat kembali. Perintah gulir, seperti scroll-upatau mwheel-scroll, tidak secara otomatis menyimpan posisi sebelumnya secara default karena dapat menghasilkan terlalu banyak tanda berlebihan.

Anda dapat menggunakan perintah clone-indirect-bufferatau view-buffer-other-windowuntuk pekerjaan independen dengan buffer di beberapa tempat. Dan gunakan perintah recenter-top-bottom( C-l) untuk terus menahan titik di tengah area yang terlihat.

artcan
sumber
2
Terima kasih. Jawaban yang menarik. Tampaknya ada masalah dengan Emacs saya (baik di Mac dan di Ubuntu): C-u C-<SPC>sepertinya tidak berfungsi. Saya tidak tahu apakah itu masalah cua-modeatau sesuatu. Saya mencoba menjalankan Emacs dengan -qopsi, tetapi tidak ada yang berubah. Ada ide?
NVaughan
Sayang sekali ... Saya merasa ini sangat menjengkelkan, karena saya gunakan highlight-symbol-mode. Saya mengatur kursor pada satu variabel dan menyoroti semua kejadian. Ketika saya mulai menggulir, kursor meninggalkan variabel dan semua sorotan hilang. Emacs akan jauh lebih baik jika setidaknya akan berperilaku seperti editor kontemporer lainnya mengenai hal-hal bergulir.
itmuckel
7

Saya tidak tahu apakah ada cara untuk menghentikan emacs dari memindahkan poin Anda saat menggulir. Tetapi jika Anda ingin menyimpan lokasi Anda untuk kembali lagi nanti, Anda dapat menggunakan cincin tanda .

Yaitu, ketik C-<SPC> C-<SPC>untuk mendorong lokasi titik saat ini ke cincin tanda, kemudian ketik C-u C-<SPC>untuk mengatur titik ke lokasi sebelumnya di cincin tanda.

Kirill
sumber
3

Saya menggunakan ini:

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

Berikut ini berfungsi untuk saya:

(custom-set-variables
 '(scroll-conservatively 1000)
 '(scroll-margin 3)
 )
salah satu pengguna Emacs Jepang
sumber