No he logrado que Emacs cambie de 8 pestañas espaciales a 4 pestañas espaciales al presionar las TABmemorias intermedias en el modo principal text-mode
. He agregado lo siguiente a mi .emacs
:
(setq-default indent-tabs-mode nil)
(setq-default tab-width 4)
;;; And I have tried
(setq indent-tabs-mode nil)
(setq tab-width 4)
No importa cómo cambie mi .emacs
archivo (o las variables locales de mi búfer), el TABbotón siempre hace lo mismo.
- Si no hay texto arriba, sangra 8 espacios
- Si hay texto en la línea anterior, sangra al principio de la segunda palabra
Por mucho que ame a Emacs, esto se está volviendo molesto. ¿Hay alguna manera de hacer que Emacs al menos sangra 4 espacios cuando no hay texto en la línea anterior?
emacs
indentation
Cristian
fuente
fuente
(setq-default tab-width 4)
NO es lo mismo que(setq tab-width 4)
asegurarse de no perderse el "-default"!Respuestas:
o agregue la entrada tab-stop-list a las variables de conjunto personalizado en el archivo .emacs :
fuente
'(tab-stop-list (quote (4 8 12 16 20 24 28 32 36 40 44 48 52 56 60 64 68 72 76 80 84 88 92 96 100 104 108 112 116 120)))
? Bueno, mientras funcione, supongo ...: P'(tab-stop-list (quote (4)))
.quote
necesitan dos números para continuar la secuencia hasta el infinito. Ver: stackoverflow.com/a/42148697/2662028Respuesta corta:
El punto clave es decirle a emacs que inserte lo que quiera al sangrar, esto se hace cambiando la función de línea de sangría. Es más fácil cambiarlo para insertar una pestaña y luego cambiar las pestañas en 4 espacios que cambiarlo para insertar 4 espacios. La siguiente configuración resolverá su problema:
Explicación:
Desde la sangría controlada por el modo principal @ manual de emacs :
Del manual indent-relative @ emacs:
Simplemente cambie el valor de indent-line-function a la función insert-tab y configure la inserción de tabulación como 4 espacios.
fuente
Actualización: desde Emacs 24.4:
lo que significa que ya no es necesario configurarlo
tab-stop-list
de la manera que se muestra a continuación, ya que puede mantenerlo configurado ennil
.La respuesta original sigue ...
Siempre me duele un poco ver cosas como
(setq tab-stop-list 4 8 12 ................)
cuando lanumber-sequence
función está allí esperando a ser utilizada.o
fuente
tab-stop-list
ahora se extiende implícitamente al infinito. Su valor predeterminado se cambia a cero, lo que significa que una tabulación detiene todas lastab-width
columnas". - De hecho, puede usar el valor predeterminado denil
.Puede que le resulte más fácil configurar sus pestañas de la siguiente manera:
En el
Customize group:
indicador ingreseindent
.Verá una pantalla donde puede configurar todas sus opciones de sangría y configurarlas para la sesión actual o guardarlas para todas las sesiones futuras.
Si lo hace de esta manera, querrá configurar un archivo de personalización .
fuente
fuente
fuente
26.3
esto funciona para el código C ++ y el comentario dentro también
fuente
Este problema no se debe a la falta de tabulaciones; es que emacs tiene un método de tabulación (¿nuevo?) llamado relativo a sangría que parece diseñado para alinear datos tabulares. La tecla TAB se asigna al método indent-for-tab-command, que llama a cualquier método en el que se establezca la variable indent-line-function, que es un método relativo a la sangría para el modo de texto. No he descubierto una buena forma de anular la variable de función de línea de sangría (el enlace de modo de texto no funciona, por lo que tal vez se está restableciendo después de la ejecución de los ganchos de modo), pero una forma simple de deshacerse de esto el comportamiento es simplemente arrojar el método de intento de comando de tabulación configurando TAB al método más simple tab-to-tab-stop:
(define-key text-mode-map (kbd "TAB") 'tab-to-tab-stop)
fuente
Prueba esto:
Eso hará que TAB siempre inserte un carácter TAB literal con tabulaciones cada 4 caracteres (pero solo en modo Texto). Si eso no es lo que está pidiendo, describa el comportamiento que le gustaría ver.
fuente
Puede agregar estas líneas de código a su archivo .emacs. Agrega un gancho para el modo de texto para usar la pestaña de inserción en lugar de la sangría relativa.
Espero que ayude.
fuente
Solo cambiar el estilo con c-set-style fue suficiente para mí.
fuente
Agregue esto a su archivo .emacs:
Esto establecerá el ancho que se muestra una pestaña a 2 caracteres (cambie el número 2 a lo que desee)
Para asegurarse de que emacs esté usando pestañas en lugar de espacios:
Por otro lado, el valor predeterminado para emacs cuando retrocede sobre una pestaña es convertirlo en espacios y luego eliminar un espacio. Esto puede ser molesto. Si desea que simplemente elimine la pestaña, puede hacer esto:
¡Disfrutar!
fuente
Esta es la única solución que evita que una pestaña se inserte para mí, sin una secuencia o conversión de pestañas a espacios. Ambos parecían adecuados, pero derrochadores:
Tenga en cuenta que
quote
necesita dos números para funcionar (¡pero no más!).Además, en la mayoría de los modos principales (
Python
por ejemplo), la sangría es automática en Emacs. Si necesita sangrar fuera de la sangría automática, use:M-i
fuente
Las personalizaciones pueden sombrearse,
(setq tab width 4)
así que usesetq-default
o deje que Customize sepa lo que está haciendo. También tuve problemas similares al OP y lo solucioné solo con esto, no necesitaba ajustartab-stop-list
ni ningunainsert
función:Me pareció útil agregar esto inmediatamente después (un consejo de emacsWiki):
fuente
Las mejores respuestas no funcionaron hasta que escribí esto en el archivo .emacs:
fuente
Has probado
fuente
fuente
Por cierto, para el modo C , agrego
(setq-default c-basic-offset 4)
a .emacs. Ver http://www.emacswiki.org/emacs/IndentingC para más detalles.fuente
Desde mi archivo init, diferente porque quería espacios en lugar de pestañas:
fuente
Modificó esta respuesta sin ningún gancho:
fuente