Mówiąc prościej, próbuję przewijać w emacsie, takim jak w vimie i większości innych edytorów; kiedy jestem na przykład dwie linie od dołu / góry i pędzę górę / w dół ( Ctrl- p, n, ↑, ↓) to idzie tylko jeden wiersz w górę lub w dół, a nie pół ekranu.
87
z.
w vimie, aby uzyskać wrażenie Emacsa ;-) Może to być niezwykłe, ale w rzeczywistości jest bardziej przydatne niż przewijanie linia po linii IMHO.Odpowiedzi:
Zobacz niektóre sugestie dotyczące EmacsWIki:
źródło
scroll-conservatively
. Ostrzeżenia przed tym są trochę dziwne - jeśli powoduje to problem, łatwo jest usunąć linię z twojego init.el!Jeśli chcesz dokładnie ustawić ekran, możesz użyć Ctrl-L.
Domyślnie umieszcza bieżącą linię na środku ekranu.
ESC 0 Ctrl-L umieszcza bieżącą linię na górze.
źródło
Trochę spóźniłem się na imprezę, ale jeśli nie masz nic przeciwko zainstalowaniu pakietu, to płynne przewijanie ( github , również dostępny w MELPIE ) może być tym, czego szukasz - na pewno działa dla mnie.
Po zainstalowaniu możesz umieścić następujące elementy w swoim init.el:
(require 'smooth-scrolling) (smooth-scrolling-mode 1) (setq smooth-scroll-margin 5)
Ostatnia linia jest opcjonalna; zaczyna się przewijać w pobliżu krawędzi ekranu, a nie przy nim, więc zawsze masz mały kontekst wokół tego punktu. Dostosuj do smaku.
źródło
Moim rozwiązaniem nie jest zmiana domyślnego przewijania Emaca, ale raczej utworzenie polecenia sekwencji klawiszy z makra. W ten sposób masz wygodny sposób przewijania jednej linii na raz, kiedy chcesz. Nie jest to idealne, ale bardzo łatwe. Tak się składa, że M- (↓) i M- (↑) są dostępne, więc właśnie tego użyłem.
Tak to zrobiłem. Najpierw musisz zarejestrować makro dla przewijania jednej linii, w górę iw dół.
Rozpocznij makro
Przewiń jeden w dół
C-u 1 C-v
Zatrzymaj makro
Aby przewinąć w górę, użyj
C-u 1 M-v
Następnie musisz nazwać makro.
Nadaj mu nazwę po wyświetleniu monitu, na przykład:
Następnie użyj następującego polecenia, aby powiązać sekwencję klawiszy z nazwą polecenia:
Po wyświetleniu monitu użyj czegoś takiego:
M-(down arrow)
Następnie zapyta cię, które polecenie chcesz powiązać i powinieneś nadać mu nazwę, którą wymyśliłeś wcześniej, np. W dół.
Tutaj mam te informacje. Poniżej i w innych miejscach można znaleźć instrukcje dotyczące dodawania makra do pliku .emacs.
Tutaj wyjaśnienie definicji makr
Tutaj, jak kontrolować przewijanie
źródło
Używam ich w moim
.emacs
pliku od 2000 roku.(global-set-key (quote [M-down]) (quote View-scroll-line-forward)) (global-set-key (quote [M-up]) (quote View-scroll-line-backward))
W ten sposób mogę zachować domyślne zachowanie Emacsa, a także przewijać jedną linię na raz, w zależności od tego, co robię.
To działało aż przynajmniej GNU Emacs 22. Niedawno przeniesieni do Emacs 24 i odkrył, że
View-scroll-line-forward
iView-scroll-line-backward
nie są już dostępne. Po pewnym polowaniu odkryłem, że działa przewijanie w górę iw dół. Więc jeśli używasz Emacsa 24, możesz tego użyć.(global-set-key (quote [M-down]) (quote scroll-up-line)) (global-set-key (quote [M-up]) (quote scroll-down-line))
Przeważnie pomijałem Emacsa 23, więc jeśli jest to wersja, której używasz, możesz eksperymentować z obydwoma powyższymi.
Uwaga:
scroll-up-line
faktycznie przewija jeden wiersz w dół , ponieważ bufor jest przenoszony o jeden wiersz w górę.źródło
Ponownie przypisuję klawisze strzałek, aby wykonywać operacje przewijania.
(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)))
źródło
Upraszczają to:
(global-set-key [M-up] (lambda () (interactive) (scroll-up 1))) (global-set-key [M-down] (lambda () (interactive) (scroll-down 1)))
następnie kursor meta w górę przesuwa się w górę, a kursor meta w dół przesuwa się w dół.
CO BYŁO DO OKAZANIA. Nie jestem pewien, co palili wszyscy powyżsi ludzie!
źródło
Mam następujące elementy w moim pliku .emacs, aby włączyć ładne zachowanie przewijania ctrl-up, ctrl-down. Używam tego również do kółka myszy.
(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)
źródło
Aby przewijać "vim", umieść to w swoim pliku .emacs:
(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)
źródło
Ponieważ używanie polecenia może być denerwujące M-up, M-downponieważ koliduje z trybem org, który przeciąża te polecenia. Aby uniknąć tego problemu, osobiście używam tych poleceń, które łączą się M-page-up M-page-down. ”Tutaj zdefiniowałem przewijanie w górę iw dół do 1 linii.
;;;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))))
źródło
M-x customize-variable scroll-conservatively
Ustaw go na 1.
Jednak naprawdę nie chcesz tego robić.
źródło
Jeśli szukasz szybkiego sposobu na stworzenie efektu podobnego do przewijania, wprowadź
C-n
iC-l
sekwencyjnie przesuwaj kursor w dół, a następnie wyśrodkuj go.źródło
Jeśli uruchomisz emacsa w .xsession, w moim przypadku ustawienie scroll-konserwatywne na 100+ nie zadziała, ani scroll-step 1. Ale jeśli uruchomisz emacsa po X, zadziała.
źródło
Jeśli nie masz nic przeciwko używaniu myszy i masz kółko przewijania, możesz dostosować zmienną wielkość przewijania kółkiem myszy, wykonując jedną z poniższych czynności:
Ch v ilość przewijania kółkiem myszy (kliknij dostosuj, zmień wartość na „Określona liczba wierszy” 1, Zastosuj i zapisz).
lub dodaj do .emacs wiersz: '(mouse-wheel-scroll-amount' (1 ((shift). 1) ((meta)) ((control). text-scale)))
Istnieje wiele możliwości wymienionych na https://www.emacswiki.org/emacs/Scrolling
źródło