2012-01-24 11 views
16

Es posible desplazar toda la porción visible del búfer en Emacs, pero dejar el punto donde está. Ejemplo: el punto está hacia la parte inferior de la ventana y quiero ver un texto que se desplazó desde la parte superior de la ventana sin mover el punto.Emacs: buffer de desplazamiento no es el punto

Editar: Supongo C-lC-l tipo de hace lo que yo quería.

Respuesta

9

prueba estos. Cambiar M-n y M-p asociaciones de teclas de acuerdo a su gusto

;;; scrollers 
(global-set-key "\M-n" "\C-u1\C-v") 
(global-set-key "\M-p" "\C-u1\M-v") 
+3

1 utilizo algo similar: '(globalización set-key "\ Mn" (lambda() (interactivo) (scroll-up 4))) 'y' (global-set-key "\ Mp" (lambda() (interactivo) (scroll-down 4))) '. – Ben

+0

@kindahero: Gracias - esto es exactamente lo que quería :) – SabreWolfy

+8

Lamentablemente, el punto seguirá moviéndose después de que llegue a la parte superior o inferior de la ventana. Me pregunto si esto es posible de evitar (sin una nueva configuración de Emacs) ... – celwell

5

Esto podría ser útil. De acuerdo con la página EmacsWiki en Desplazamiento;

La variable scroll-preserve-screen-position puede ser útil para algunos. Cuando se desplaza hacia abajo y hacia arriba nuevamente, el punto debe terminar en la misma posición con la que comenzó. El valor puede ser cambiado por el incorporado en el modo M-x scroll-lock-mode.

6
;;;_*====================================================================== 
;;;_* define a function to scroll with the cursor in place, moving the 
;;;_* page instead 
;; Navigation Functions 
(defun scroll-down-in-place (n) 
    (interactive "p") 
    (previous-line n) 
    (unless (eq (window-start) (point-min)) 
    (scroll-down n))) 

(defun scroll-up-in-place (n) 
    (interactive "p") 
    (next-line n) 
    (unless (eq (window-end) (point-max)) 
    (scroll-up n))) 

(global-set-key "\M-n" 'scroll-up-in-place) 
(global-set-key "\M-p" 'scroll-down-in-place) 
+1

Esta debería ser la respuesta correcta, se desplaza en su lugar, relativa al cursor/puntero. ¡¡Gracias!! – cevaris

+1

Para evitar las advertencias del compilador, reemplacé '(línea anterior n)' con '(forward-line (* -1 n))' y '(next-line n)' con '(forward-line n)' – garyp

+0

This en realidad funciona, pero solo si cambio la 'línea anterior' y' la próxima línea', porque de lo contrario salta por dos líneas –

1

Creo que esto es mejor:

(defun gcm-scroll-down() 
     (interactive) 
     (scroll-up 1)) 
    (defun gcm-scroll-up() 
     (interactive) 
     (scroll-down 1)) 
    (global-set-key [(control down)] 'gcm-scroll-down) 
    (global-set-key [(control up)] 'gcm-scroll-up) 

referencia: emacs wiki

Cuestiones relacionadas