2011-05-27 19 views
10

¿Cuál sería la forma más sencilla de cambiar la caja de un rectángulo?emacs: Cambiar la caja de un rectángulo

Ninguno de los atajos mencionados en manual hablan de esto. ¿Tengo que agregar un enlace personalizado para hacer eso? Y mientras estamos en eso, ¿cómo busco solo dentro de un rectángulo?

Respuesta

5

Es fácil con el uso de cua-mode 's apoyo rectángulo de selección:

(setq cua-enable-cua-keys nil) ; enable only CUA's rectangle selections 
(cua-mode t) 

Entonces puede seleccionar rectángulos pulsando C -RET y mover el cursor. Para restaurar esa región, simplemente use el comando usual upcase-region, vinculado a M-U de manera predeterminada.

+3

Sí y no. No porque 'upcase-region' no funciona en rectángulos, y' M-u' es 'upcase-word' por defecto (' upcase-region' está vinculada a 'C-x C-u'). Sí, porque cuando se selecciona un rectángulo, CUA vincula 'M-u' a' cua-upcase-rectangle' que, como es lógico, funciona bien. También puede usar '(cua-selection-mode t)' en lugar del código proporcionado. – phils

+0

Gracias por la aclaración, Phil, y la pista sobre 'cua-selection-mode'! – sanityinc

+1

Gracias por el comentario y la aclaración. Pero me resulta un poco confuso (?!) que algo útil no esté disponible de manera inmediata con los otros comandos rect. – calvinkrishy

9

Aquí hay una implementación de upcase-rectangle, que cambia el estuche a mayúsculas. Basta con sustituir el upcase con la transformación caso downcase o capitalize o lo que sea personalizado que desea:

(defun upcase-rectangle (b e) 
    "change chars in rectangle to uppercase" 
    (interactive "r") 
    (apply-on-rectangle 'upcase-rectangle-line b e)) 

(defun upcase-rectangle-line (startcol endcol) 
    (when (= (move-to-column startcol) startcol) 
    (upcase-region (point) 
        (progn (move-to-column endcol 'coerce) 
          (point))))) 
Cuestiones relacionadas