Tengo una región de código python seleccionada en emacs. ¿Cuáles son las formas más eficientes de sangrar y desangrar cada línea en 4 espacios?
Idealmente, me gustaría algo que no sea sensible al contexto (por ejemplo, me permitirá sangrar pasajes dentro de cadenas de documentos donde la sangría no se relaciona con la sintaxis de Python).
Mi línea de modo muestra (Python)
. Al buscar en la web, encontré muchas discusiones sobre el uso en python-mode
lugar de python
, pero solo comencé a usar emacs hace unos días, así que tengo cuidado de cambiar los valores predeterminados antes de tener la oportunidad de entenderlos. Si cambiar a python-mode
es la mejor opción, estoy feliz de aceptar eso como respuesta.
Lo que he probado (del manual):
<TAB>
sin efectoC-M-\
sin efectoC-x <TAB>
(sangría-rígidamente) sangra cada línea por una columna (y deselecciona la región)M-i
sangra una primera línea por una pestaña (longitud de 8 espacios)C-M-q
- "CMq no está definido"
La única forma en que he encontrado es usando regex-replace, pero esa es una cantidad horrible de pulsaciones de teclas para una tarea tan simple.
fuente
python-indent-shift-left
.indent-rigidly
toma un argumento de prefijo que indica cuánto sangrar por, de modo queC-u 42 C-x TAB
sangra por 42 columnas, y dado que el argumento de prefijo predeterminado es 4,C-u C-x TAB
sangra por 4 columnas.Si desea seleccionar la región nuevamente, hágalo
C-x C-x
después.fuente
Use el comando sangría rígidamente con un prefijo numérico.
C-u 4 M-x indent-rigidly
para sangrar la región por cuatro espacios,C-u -4 M-x indent-rigidly
para eliminar cuatro espacios.fuente
Cx Cx marca el código y luego Mx indent-for-tab-mode
Ese es el guardar si ha presionado tabulador para cada línea.
fuente
También puedes usar el modo columna.
Seleccione las líneas en modo columna, luego agregue cuatro espacios a todas a la vez:
C-<space>
establecer marcaC-x r t
para ingresar al modo de columna (oC-<RET>
si tiene el modo CUA)<space><space><space><space><RET>
Puede hacer una maniobra similar para eliminar cuatro espacios: simplemente incluya 4 columnas en su región marcada (pasos 2-3) y presione
<DEL>
fuente
Actualizando la solución de Chen anterior, actualmente (probado en Emacs 24.4.1) los comandos han sido renombrados. Entonces, suponiendo que desea sangrar de acuerdo con la variable python-indent, los comandos son python-indent-shift-left y python-indent-shift-right. Usted puede:
emitirlos escribiendo
M-x python-indent-shift-right
oM-x python-indent-shift-left
usar los atajos predeterminados en modo python
C-c >
yC-c <
volver a unirlos. Por ejemplo, en un teclado con un botón de Windows uso:
fuente
Composability es el rey con Emacs, solo combínelo
M-i
con https://github.com/magnars/multiple-cursors.el y tendrá su comando de bloqueo de sangría. Eso es lo que haces:M->
N veces (donde N es el número de líneas en el bloque)M-i
fuente
Ambos
S-<LEFT>
yS-<RIGHT>
funcionan bien enPython
modo mayor. Es especialmente conveniente en el modo Cua donde el comportamientoC-c
yC-x
los cambios se copian / cortan cuando se selecciona una región.fuente