Al trabajar con Python en Emacs si quiero agregar un try / except a un bloque de código, a menudo encuentro que tengo que sangrar todo el bloque, línea por línea. En Emacs, ¿cómo sangra todo el bloque a la vez?
No soy un usuario experimentado de Emacs, pero creo que es la mejor herramienta para trabajar a través de ssh. Estoy usando Emacs en la línea de comando (Ubuntu), no como una interfaz gráfica de usuario, si eso hace alguna diferencia.
C-c >
por derecho.C-c <
para izquierdaRespuestas:
Si está programando Python usando Emacs, entonces probablemente debería estar usando el modo python. Con el modo python, después de marcar el bloque de código,
C-c >
oC-c C-l
desplaza la región 4 espacios a la derechaC-c <
oC-c C-r
desplaza la región 4 espacios a la izquierdaSi necesita cambiar el código por dos niveles de sangría, o alguna cantidad arbitraria, puede anteponer el comando con un argumento:
C-u 8 C-c >
desplaza la región 8 espacios a la derechaC-u 8 C-c <
desplaza la región 8 espacios a la izquierdaOtra alternativa es usar lo
M-x indent-rigidly
que está obligado aC-x TAB
:C-u 8 C-x TAB
desplaza la región 8 espacios a la derechaC-u -8 C-x TAB
desplaza la región 8 espacios a la izquierdaTambién son útiles los comandos de rectángulo que operan en rectángulos de texto en lugar de líneas de texto.
Por ejemplo, después de marcar una región rectangular,
C-x r o
inserta espacio en blanco para llenar la región rectangular (efectivamente desplazando el código a la derecha)C-x r k
mata la región rectangular (efectivamente desplazando el código a la izquierda)C-x r t
solicita una cadena para reemplazar el rectángulo con. Al ingresarC-u 8 <space>
, se ingresarán 8 espacios.PD. Con Ubuntu, para hacer que el modo python sea el modo predeterminado para todos los archivos .py, simplemente instale el
python-mode
paquete.fuente
C-c >
se define en python-mode.el, por lo que creo que debe haber instalado elpython-mode
paquete en algún lugar del camino. Me alegra que funcione para ti.C-c C-l
yC-c C-r
deben ser enlaces personalizados que haya configurado usted mismo. Si ejecutaemacs -q
(para ejecutar emacs sin cargar un archivo init) verá que no hay enlace paraC-c C-l
oC-c C-r
en modo Python.Además de
indent-region
, que está asignadoC-M-\
por defecto, los comandos de edición de rectángulo son muy útiles para Python. Marque una región como normal, luego:C-x r t
(string-rectangle
): le solicitará los caracteres que desea insertar en cada línea; ideal para insertar un cierto número de espaciosC-x r k
(kill-rectangle
): elimina una región rectangular; ideal para eliminar sangríaTambién puede
C-x r y
(yank-rectangle
), pero eso rara vez es útil.fuente
indent-region
mapeado aC-M-\
debería hacer el truco.fuente
He estado usando esta función para manejar mi sangría y sangría:
Y luego lo asigno a un atajo de teclado:
fuente
Soy un newb de Emacs, por lo que esta respuesta probablemente raya en inútil.
Ninguna de las respuestas mencionadas hasta ahora cubren la sangría de literales como
dict
olist
. Por ejemplo,M-x indent-region
oM-x python-indent-shift-right
y la compañía no van a ayudar si ha cortado y pegado el siguiente literal y necesita que se vuelva a sangrar con sensatez:Parece que
M-x indent-region
debería hacer algo con sensatezpython-mode
, pero ese no es (todavía) el caso.Para el caso específico donde sus literales están entre corchetes, usar TAB en las líneas en cuestión obtiene lo que desea (porque el espacio en blanco no juega un papel).
Así que lo que he estado haciendo en estos casos es la grabación rápidamente una macro de teclado al igual que
<f3> C-n TAB <f4>
como en F3, Ctrl-N (o flecha hacia abajo), TAB, F4, y luego usando F4 varias veces para aplicar la macro puede ahorrar un par de pulsaciones de teclas. O puedes hacerloC-u 10 C-x e
para aplicarlo 10 veces.(Sé que no parece mucho, pero intente volver a sangrar 100 líneas de basura literal sin perder la flecha hacia abajo, y luego tener que subir 5 líneas y repetir cosas;)).
fuente
Yo uso el siguiente fragmento. En la pestaña cuando la selección está inactiva, sangra la línea actual (como lo hace normalmente); cuando la selección está inactiva, sangra toda la región a la derecha.
fuente
Hacer sangría de forma interactiva.
Copiado de mi publicación en: sangrar varias líneas en Emacs
fuente
Hago algo como esto universalmente
fuente