Para simplificar, estou tentando fazer a rolagem no emacs como no vim e na maioria dos outros editores; quando estou por exemplo, duas linhas a partir da parte inferior / superior, e eu pressionar para cima / baixo ( Ctrl- p, n, ↑, ↓) ele vai apenas uma linha para cima ou para baixo, não a metade da tela.
87
z.
vim com mais frequência para ter a sensação do Emacs ;-) Pode ser incomum, mas na verdade é mais útil do que rolar linha por linha IMHO.Respostas:
Veja algumas das sugestões no EmacsWIki:
fonte
scroll-conservatively
. Os avisos contra isso são um pouco estranhos - se causar problemas, é fácil remover a linha de seu init.el!Se você deseja posicionar a tela exatamente, você pode usar Ctrl-L.
Por padrão, ele posiciona a linha atual no meio da tela.
ESC 0 Ctrl-L posiciona a linha atual no topo.
fonte
Estou um pouco atrasado para a festa, mas se você não se importa em instalar um pacote, então o smooth-scrolling ( github , também disponível na MELPA ) pode ser o que você está procurando - certamente funciona para mim.
Depois de instalado, você pode inserir o seguinte em seu init.el:
(require 'smooth-scrolling) (smooth-scrolling-mode 1) (setq smooth-scroll-margin 5)
A última linha é opcional; ele começa a rolar próximo à borda da tela, em vez de nela, então você sempre tem um pouco de contexto em torno do ponto. Ajuste a gosto.
fonte
Minha solução não é mudar a rolagem padrão do Emac, mas sim criar um comando de sequência de teclas a partir de uma macro. Desta forma, você tem uma maneira conveniente de rolar uma linha por vez quando quiser. Não é o ideal, mas é super fácil. Acontece que M- (↓) e M- (↑) estão disponíveis, então foi o que usei.
É assim que eu fiz. Primeiro, você precisa gravar uma macro para rolagens de uma linha, para cima e para baixo.
Começar macro
Role para baixo um
C-u 1 C-v
Macro de parada
Para rolar para cima, use
C-u 1 M-v
Em seguida, você precisa nomear a macro.
Dê a ele um nome quando solicitado como:
Em seguida, use o seguinte para vincular uma sequência de teclas a esse nome de comando:
E ao solicitar, use algo como:
M-(down arrow)
Em seguida, ele perguntará qual comando você deseja vincular, e você deve dar a ele o nome que inventou anteriormente, por exemplo, down-one-line.
Aqui é onde obtive essas informações. Você também pode encontrar instruções abaixo e em outros lugares sobre como adicionar sua macro ao arquivo .emacs.
Aqui para uma explicação de definição de macro
Aqui, como controlar a rolagem
fonte
Tenho usado isso em meu
.emacs
arquivo desde 2000.(global-set-key (quote [M-down]) (quote View-scroll-line-forward)) (global-set-key (quote [M-up]) (quote View-scroll-line-backward))
Dessa forma, posso manter o comportamento padrão do Emacs, bem como rolar uma linha por vez, dependendo do que estou fazendo.
Isso funcionou até pelo menos GNU Emacs 22. Eu recentemente atualizado para Emacs 24 e descobriu que
View-scroll-line-forward
eView-scroll-line-backward
não estão mais disponíveis. Depois de alguma caça, descobri que a linha de rolagem para cima e a linha de rolagem para baixo funcionam. Então, se você estiver usando o Emacs 24, você pode usar isso.(global-set-key (quote [M-down]) (quote scroll-up-line)) (global-set-key (quote [M-up]) (quote scroll-down-line))
Eu geralmente pulei o Emacs 23, então se essa é a versão que você está usando, você pode experimentar os dois acima.
Nota:
scroll-up-line
na verdade rola uma linha para baixo , porque o buffer está sendo movido uma linha para cima.fonte
Eu religo minhas teclas de seta para realizar operações de rolagem.
(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)))
fonte
Simplesmente faça isso:
(global-set-key [M-up] (lambda () (interactive) (scroll-up 1))) (global-set-key [M-down] (lambda () (interactive) (scroll-down 1)))
em seguida, o meta cursor para cima move para cima e o meta cursor para baixo move para baixo.
QED. Não tenho certeza do que todas as pessoas acima estavam fumando!
fonte
Eu tenho o seguinte em meu arquivo .emacs para permitir um bom comportamento de rolagem ctrl-up e ctrl-down. Eu também uso isso para a roda do 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)
fonte
Para que a rolagem "vim" coloque isso em seu arquivo .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)
fonte
Uma vez que pode ser irritante usar o M-up, M-downporque interfere com o modo org que sobrecarrega esses comandos. Para evitar esse problema, eu pessoalmente uso aqueles comandos que combinam M-page-up M-page-down". Aqui eu defini a rolagem para cima e para baixo em 1 linha.
;;;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))))
fonte
M-x customize-variable scroll-conservatively
Defina-o como 1.
Você realmente não quer fazer isso, no entanto.
fonte
Se você está procurando uma maneira rápida de criar um efeito de rolagem, entre em
C-n
eC-l
sequencialmente que move o cursor para baixo e depois o centraliza.fonte
Se você iniciar o emacs em .xsession, no meu caso definir scroll-conservively para 100+ não funcionará, nem scroll-step 1. Mas se você iniciar o emacs após X, ele funcionará.
fonte
Se você não se importa em usar o mouse e possui uma roda de rolagem, pode personalizar a variável mouse-wheel-scroll-amount:
Ch v mouse-wheel-scroll-amount (clique em personalizar, altere o valor para "Número específico de linhas" 1, ApplyAndSave.)
ou adicione a .emacs a linha: '(mouse-wheel-scroll-amount' (1 ((shift). 1) ((meta)) ((controle). escala de texto)))
Existem muitas possibilidades listadas em https://www.emacswiki.org/emacs/Scrolling
fonte