Não altere a posição do cursor ao rolar no Emacs

Não altere a posição do cursor ao rolar no Emacs

Existe uma maneira de impedir Emacsa movimentação automática da posição do cursor de texto (também conhecido como ponto) enquanto estou rolando? Continuo perdendo minha localização e marcas com esse comportamento irritante.

Testei a seguinte sugestão, sem sucesso:

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

(Estou executando Emacso 24.2 no Ubuntu e no OS X.)

Responder1

Eu acho que você deseja que o comportamento do cursor (ponto) e da área visível seja como em notepadoutros gediteditores modernos: capacidade de alterar a área visível independentemente da posição do ponto e retornar imediatamente a área visível à posição do ponto após mover o ponto. Mas emacstem outra concepção: a área visível sempre segue a posição do ponto e vice-versa.

Veja tambémhttps://stackoverflow.com/questions/9616623/ctrl-up-down-style-scrolling-in-emacs

A resposta anterior mostra um idioma especial: se você deseja mover a área visível (com o ponto junto) para longe da posição atual e depois retornar o ponto exatamente na posição anterior, você deve ter o hábito de usar mark-ring. Sempre há um caminho mark ringpara a posição de trabalho atual: muitos comandos, como isearch-forward, beginning-of-buffer, ace-jump-modesalvam automaticamente a posição anterior mark ringe você não deve usá-los C-<SPC> C-<SPC>antes, mas apenas C-u C-<SPC>para voltar. Comandos de rolagem, como scroll-upou mwheel-scroll, não salvam automaticamente a posição anterior por padrão porque podem produzir muitas marcas excessivas.

Você pode usar comandos clone-indirect-bufferou view-buffer-other-windowpara trabalho independente com buffer em alguns lugares. E use o comando recenter-top-bottom( C-l) para manter continuamente o ponto no centro da área visível.

Responder2

Não sei se existe uma maneira de impedir que o emacs mova seu ponto durante a rolagem. Mas se quiser salvar sua localização para retornar a ela mais tarde, você pode usar oanel de marca.

Ou seja, digite C-<SPC> C-<SPC>para inserir o local do ponto atual no anel de marcação e, posteriormente, digite C-u C-<SPC>para definir o ponto para o local anterior no anel de marcação.

Responder3

Eu uso isso:

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

Responder4

O seguinte funciona para mim:

(custom-set-variables
 '(scroll-conservatively 1000)
 '(scroll-margin 3)
 )

informação relacionada