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

18

Existe uma maneira de parar Emacsde mover automaticamente minha posição do cursor de texto (aka, 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 o Emacs24.2 no Ubuntu e no OS X.)

NVaughan
fonte

Respostas:

11

Eu acho que você quer o comportamento de cursor (ponto) e área visível deve ser como em notepad, gedit, outros editores modernos: capacidade de alterar a área visível independentemente da posição do ponto e imediatamente retornar área visível para a posição de ponto após o ponto em movimento. Mas emacstem outra concepção: a área visível sempre segue a posição do ponto e vice-versa.

Consulte também /programming/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, em seguida, para retornar o ponto exatamente à posição anterior, deve ter o hábito de usar mark-ring. Há sempre um caminho através mark ringde atual posição de trabalho: muitos comandos, como isearch-forward, beginning-of-buffer, ace-jump-modeautomaticamente salvar posição anterior mark ringe você não deve usar C-<SPC> C-<SPC>antes, mas apenas C-u C-<SPC>para saltar para trás. Os comandos de rolagem, como scroll-upou mwheel-scroll, não salvam automaticamente a posição anterior por padrão, pois 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 o ponto continuamente no centro da área visível.

artscan
fonte
2
Obrigado. Resposta interessante. Parece haver um problema com o meu Emacs (no Mac e no Ubuntu): C-u C-<SPC>não parece estar funcionando. Não sei se é um problema cua-modeou algo assim. Tentei rodar o Emacs com a -qopção, mas nada mudou. Alguma ideia?
NVaughan
Que pena ... Acho isso super chato, porque eu uso highlight-symbol-mode. Defino o cursor em uma variável e destaca todas as ocorrências. Quando começo a rolagem, o cursor deixa a variável e todos os destaques são perdidos. O Emacs seria muito melhor se, pelo menos, se comportasse como outros editores contemporâneos em relação à rolagem.
Julio
7

Não sei se existe uma maneira de impedir que o emacs mova seu ponto ao rolar. Mas se você quiser salvar seu local para retornar mais tarde, use o anel de marcação .

Ou seja, digite C-<SPC> C-<SPC>para empurrar o local do ponto atual no anel da marca e depois digite C-u C-<SPC>para definir o ponto no local anterior no anel da marca.

Kirill
fonte
3

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")
Sergey
fonte
0

O seguinte funciona para mim:

(custom-set-variables
 '(scroll-conservatively 1000)
 '(scroll-margin 3)
 )
um dos usuários japoneses do Emacs
fonte