2009-08-08 13 views
9

ho familiarità con e utilizzare molto spesso il C-l (recenter-top-bottom) perComando per centrare lo schermo in senso orizzontale attorno al cursore su emacs?

Sposta riga corrente al centro della finestra, alto e basso, successivamente.

Mi piacerebbe avere un comando equivalente per spostare la colonna corrente al centro della finestra, a sinistra ea destra delle frontiere, in successione. Uno strumento integrato o uno snippet di Elisp.

+0

'Ch f recenter' (la mia versione (GNU 22.3) non ha recenter-top -bottom, quale versione stai usando?) dice che questa funzione è implementata nel c-core di emacs, quindi potrebbe non essere banale ottenere il comportamento orizzontale in elisp. Prendi in considerazione l'applicazione delle patch alla fonte? – dmckee

+1

Sto eseguendo GNU 23.0.91.1 dal pacchetto ubuntu emacs-snapshot versione 1: 20090320-1ubuntu1. L'unica differenza tra 'recenter' e' recenter-top-bottom' è che, in quest'ultimo, si ripetono i cicli di comando tra mettere il cursore al centro, in alto e in basso. Lo scorrimento orizzontale esiste già con 'Cx C- <' e 'Cx C->' e con normale 'Cf' quando ci si avvicina al bordo destro, quindi non penso che dovremmo andare fino in fondo al nucleo di emacs. – hsribei

+0

M-x toggle-truncate-lines –

risposta

11

Qui si va:

(defun my-horizontal-recenter() 
    "make the point horizontally centered in the window" 
    (interactive) 
    (let ((mid (/ (window-width) 2)) 
     (line-len (save-excursion (end-of-line) (current-column))) 
     (cur (current-column))) 
    (if (< mid cur) 
     (set-window-hscroll (selected-window) 
          (- cur mid))))) 

E l'ovvio legame (da obvio171) è:

(global-set-key (kbd "C-S-l") 'my-horizontal-recenter) 
+0

Questo è perfetto! Legato a C-S-l, funziona come un incantesimo! Molte grazie! :) – hsribei

+0

Bello! Ho aggiunto questa funzione per integrare la tua nell'associazione 'Cl', solo se sei in modalità linee troncate: (defun my-recenter() " centro verticalmente e orizzontalmente in modalità linee troncate " (interattivo) (if (uguale truncate-lines t) (my-horizontal-recenter)) (recenter-top-bottom)) (global-set-key "\ Cl" 'my-recenter) – fredz

3

Se si passa a una colonna scelta e si preme C-x C-n, i comandi C-n e C-p andranno a quella colonna finché non si preme C-u C-x C-n per disattivare il comportamento.

Una sorta di versione da uomo povero di ciò che stai cercando.

+0

Limita solo la colonna a cui può essere posizionato il cursore, ma non sposta il testo orizzontalmente. Quello che voglio è che la colonna su cui si trova il cursore sia "trascinata" al centro dello schermo, facendo una scroll orizzontale. – hsribei

+0

Quindi la qualifica della "versione povera". – Pinochle

Problemi correlati