Sederhananya, saya mencoba menggulir di emacs seperti di vim dan sebagian besar editor lainnya; ketika saya misalnya, dua baris dari bawah / atas, dan saya tekan ke bawah / atas ( Ctrl- p, n, ↑, ↓) ia pergi hanya satu baris atas atau bawah, tidak setengah layar.
87
z.
vim lebih sering untuk mendapatkan perasaan Emacs ;-) Ini mungkin tidak biasa, tetapi sebenarnya lebih berguna daripada menggulir baris demi baris IMHO.Jawaban:
Lihat beberapa saran di EmacsWIki:
sumber
scroll-conservatively
. Peringatan terhadap ini agak aneh - jika itu menyebabkan masalah, cukup mudah untuk menghapus baris dari init.el Anda!Jika Anda ingin memposisikan layar dengan tepat, Anda dapat menggunakan Ctrl-L.
Secara default, ini memposisikan garis saat ini di tengah layar.
ESC 0 Ctrl-L memposisikan baris saat ini di atas.
sumber
Saya agak terlambat ke pesta, tetapi jika Anda tidak keberatan menginstal paket maka pengguliran lancar ( github , juga tersedia dalam MELPA ) mungkin yang Anda cari - ini pasti berhasil untuk saya.
Setelah Anda menginstalnya, Anda dapat memunculkan perintah berikut di init.el Anda:
(require 'smooth-scrolling) (smooth-scrolling-mode 1) (setq smooth-scroll-margin 5)
Baris terakhir adalah opsional; itu mulai bergulir di dekat tepi layar daripada di atasnya, jadi Anda selalu memiliki sedikit konteks di sekitar intinya. Sesuaikan dengan selera.
sumber
Solusi saya bukanlah mengubah pengguliran default Emac, melainkan membuat perintah urutan kunci dari makro. Dengan cara ini Anda memiliki cara yang mudah untuk menggulir satu baris pada waktu yang Anda inginkan. Tidak ideal, tapi sangat mudah. Kebetulan M- (↓) dan M- (↑) tersedia, jadi itulah yang saya gunakan.
Beginilah cara saya melakukannya. Pertama, Anda perlu merekam makro untuk gulungan satu baris, atas dan bawah.
Mulailah makro
Gulir ke bawah satu
C-u 1 C-v
Hentikan makro
Untuk gulir ke atas, gunakan
C-u 1 M-v
Selanjutnya Anda perlu memberi nama makro.
Beri nama saat diminta seperti:
Kemudian gunakan saja yang berikut ini untuk mengikat urutan kunci ke nama perintah itu:
Dan saat diminta, gunakan sesuatu seperti:
M-(down arrow)
Kemudian ia akan menanyakan perintah mana yang ingin Anda ikat, dan Anda harus memberinya nama yang Anda temukan sebelumnya, misalnya, down-one-line.
Di sinilah saya mendapatkan informasi ini. Anda juga dapat menemukan petunjuk di bawah dan di tempat lain tentang menambahkan makro Anda ke file .emacs.
Di sini untuk penjelasan definisi makro
Berikut cara mengontrol pengguliran
sumber
Saya telah menggunakan ini di
.emacs
file saya sejak tahun 2000.(global-set-key (quote [M-down]) (quote View-scroll-line-forward)) (global-set-key (quote [M-up]) (quote View-scroll-line-backward))
Dengan cara ini, saya dapat mempertahankan perilaku default Emacs serta menggulir satu baris pada satu waktu, tergantung pada apa yang saya lakukan.
Ini bekerja sampai setidaknya GNU Emacs 22. Saya baru-baru ini meningkatkan ke Emacs 24 dan menemukannya
View-scroll-line-forward
danView-scroll-line-backward
tidak lagi tersedia. Setelah beberapa kali berburu, saya menemukan bahwa scroll-up-line dan scroll-down-line berfungsi. Jadi jika Anda menggunakan Emacs 24, Anda dapat menggunakan ini.(global-set-key (quote [M-down]) (quote scroll-up-line)) (global-set-key (quote [M-up]) (quote scroll-down-line))
Saya kebanyakan melewatkan Emacs 23, jadi jika itu adalah versi yang Anda gunakan, Anda dapat bereksperimen dengan keduanya.
Catatan:
scroll-up-line
sebenarnya menggulung satu baris ke bawah , karena buffer dipindahkan satu baris ke atas.sumber
Saya memasang kembali tombol panah saya untuk melakukan operasi pengguliran.
(global-set-key [up] (lambda () (interactive) (scroll-down 1))) (global-set-key [down] (lambda () (interactive) (scroll-up 1))) (global-set-key [left] (lambda () (interactive) (scroll-right tab-width t))) (global-set-key [right] (lambda () (interactive) (scroll-left tab-width t)))
sumber
Simples melakukan ini:
(global-set-key [M-up] (lambda () (interactive) (scroll-up 1))) (global-set-key [M-down] (lambda () (interactive) (scroll-down 1)))
lalu kursor meta ke atas bergerak ke atas dan kursor meta ke bawah bergerak ke bawah.
QED. Tidak yakin apa yang semua orang di atas sedang merokok!
sumber
Saya memiliki yang berikut ini di file .emacs saya untuk mengaktifkan perilaku gulir ctrl-up dan ctrl-bawah yang bagus. Saya juga menggunakan ini untuk roda mouse.
(defun scroll-down-in-place (n) (interactive "p") (previous-line n) (scroll-down n)) (defun scroll-up-in-place (n) (interactive "p") (next-line n) (scroll-up n)) (global-set-key [mouse-4] 'scroll-down-in-place) (global-set-key [mouse-5] 'scroll-up-in-place) (global-set-key [C-up] 'scroll-down-in-place) (global-set-key [C-down] 'scroll-up-in-place)
sumber
Untuk mendapatkan "vim" scrolling ini ke file .emacs Anda:
(defun next-line-and-recenter () (interactive) (next-line) (recenter)) (defun previous-line-and-recenter () (interactive) (previous-line) (recenter)) (global-set-key (kbd "C-n") 'next-line-and-recenter) (global-set-key (kbd "C-p") 'previous-line-and-recenter)
sumber
Karena dapat mengganggu untuk menggunakan M-up, M-downkarena mengganggu mode-org yang membebani perintah-perintah ini. Untuk menghindari masalah ini saya pribadi menggunakan perintah-perintah yang menggabungkan M-page-up M-page-down". Di sini saya mendefinisikan gulir ke atas dan ke bawah menjadi 1 baris.
;;;scroll by `number-of-lines' without the cursor attached to the screen (global-set-key [M-prior] (lambda () (interactive) (let ((number-of-lines 1)) (scroll-down number-of-lines) (forward-line (- number-of-lines))))) (global-set-key [M-next] (lambda () (interactive) (let ((number-of-lines 1)) (scroll-up number-of-lines) (forward-line number-of-lines)))) ;;;scroll by `number-of-lines' with the cursor attached to the screen (global-set-key [S-M-prior] (lambda () (interactive) (let ((number-of-lines 1)) (scroll-down number-of-lines)))) (global-set-key [S-M-next] (lambda () (interactive) (let ((number-of-lines 1)) (scroll-up number-of-lines))))
sumber
M-x customize-variable scroll-conservatively
Setel ke 1.
Anda tidak benar-benar ingin melakukan ini.
sumber
Jika Anda mencari cara cepat untuk membuat efek seperti gulir, masuk
C-n
danC-l
secara berurutan yang menggerakkan kursor ke bawah dan kemudian memusatkannya.sumber
Jika Anda memulai emacs di .xsession, dalam kasus saya, pengaturan scroll-konservatif ke 100+ tidak akan berfungsi, atau scroll-langkah 1. Tetapi jika Anda memulai emacs setelah X, itu berhasil.
sumber
Jika Anda tidak keberatan menggunakan mouse dan memiliki roda gulir, Anda dapat menyesuaikan jumlah gulir roda-mouse variabel dengan:
Ch v mouse-wheel-scroll-number (klik sesuaikan, ubah nilai menjadi "Specific # of lines" 1, ApplyAndSave.)
atau tambahkan ke .emacs baris: '(mouse-wheel-scroll-number' (1 ((shift). 1) ((meta)) ((control). text-scale)))
Ada banyak kemungkinan yang terdaftar di https://www.emacswiki.org/emacs/Scrolling
sumber