2008-12-05 17 views
5

Quiero eliminar el esquema de tabulación predeterminado mal en emacs por lo que funcionará como la mayoría de otros editores (eclipse, Notepad ++). Quiero configurarlo para que, independientemente del modo, la pestaña inserte una pestaña, y presionar Enter me mantendrá en mi profundidad de pestaña actual.mejorada pestaña en Emacs

yo probamos este, pero no hace nada:

(global-set-key (kbd "TAB") 'tab-to-tab-stop) 
(setq default-tab-width 4) ;; 8 is way too many 
+0

Algunos modos principales pueden anular esto. ¿Puedes decir más sobre tu entorno? – dmckee

+2

Realmente estoy intentando obtenerlo para todos los entornos. Realmente me molesta cuando decide que sabe mejor que yo, y se niega a permitirme sangrar a mi gusto. p.ej. en apache config me permite 1, 8 pestaña de caracteres, y no más. el modo elisp es sensato, pero inconsistente con el habitual. – AlexH

+0

Si solo permite una pestaña de 8 caracteres, la solución es cambiar * que *, cambiar lo que detiene su pestaña. (O cambie la función de sangría.) – ShreevatsaR

Respuesta

9

Para hacer que la tecla Intro le llevará a la siguiente línea y sangrar de forma automática, puede poner

(global-set-key (kbd "RET") 'newline-and-indent) 

en su .emacs. [O usted puede golpear C-j en lugar de Enter.] Una vez que tenga eso, nunca tendrá que insertar manualmente las pestañas, porque Emacs sangra automáticamente una nueva línea de profundidad adicional después de una llave de apertura, etc. Si desea cambiar el indentación, puede presionar TAB hasta que lo lleve a la sangría correcta, luego comience a escribir desde allí. [Y cuando escribe un corchete de cierre, Emacs es lo suficientemente inteligente como para tomar ese corchete un nivel de sangría hacia atrás.]

Debe eliminar el (global-set-key (kbd "TAB") 'tab-to-tab-stop) para que funcione.

1

C-j hace el salto de línea + funcionalidad de guión que desea salir de pulsar Intro.

7

Muchos modos principales anulan el enlace TAB, por ejemplo, cc-mode enlaza TAB a 'c-indent-to-column.

El 'global-set-key que se sugiere no hace nada ya que casi todos los modos principales han anulado el TAB.

Un truco que podría funcionar para usted es copiar el enfoque que usa 'pabbrev y definir un modo menor global que tenga el límite TAB. Usted podría hacer que de este modo:

(defvar just-tab-keymap (make-sparse-keymap) "Keymap for just-tab-mode") 
(define-minor-mode just-tab-mode 
    "Just want the TAB key to be a TAB" 
    :global t :lighter " TAB" :init-value 0 :keymap just-tab-keymap 
    (define-key just-tab-keymap (kbd "TAB") 'indent-for-tab-command)) 

Sin embargo, esto desactiva todos TAB finalización. Probablemente obtendrá los mejores resultados anulando uno por uno los modos principales (para evitar completar TAB finalización).

2

Esto me molestó, también, cuando empecé a usar Emacs. Aunque me ha llegado a encantar. Si quiero sangrar apropiadamente, llegué a <tab>; si quiero insertar una tabulación literal, me golpeó M-i (Meta y 'i' o - en algunos parlances) que está unido a tab-to-tab-stop.

3

Creo que la respuesta de trey jackson es probablemente lo que usted desea, excepto posiblemente use 'self-insert-command en lugar de 'indent-for-tab-command. Personalmente prefiero el comportamiento predeterminado de emacs, pero self-insert-command hace lo que dice en lugar de intentar hacer algo elegante como asegurarse de que el código esté bien formateado.

Las pocas veces que de hecho quiero para insertar una pestaña (no sangría) Presiono M-i.

+0

'M-i' !!!! Señor, me ha salvado personalmente del túnel carpiano ... 'Control-q ' estaba empezando a afectar mi mano izquierda. –

+0

'M-i' es' tab-to-tab-stop' que solo inserta un carácter de tabulación si 'indent-tabs-mode' es verdadero. Sin embargo, es posible que encuentre 'C-q C-i' más fácil de escribir que' C-q TAB' (especialmente si tiene la tecla Bloq Mayús configurada como tecla Ctrl). – phils

2

usted puede estar interesado en este modo menor que creé en http://github.com/vohrta/regtab.

Se hace de forma que cuando se pulsa la tecla de tabulación o bien un carácter de tabulación (si-tabulaciones de sangría-mod no es nulo) o espacios por tabuladores anchura se coloca en el punto.El modo también es capaz de manejar lo que puede considerar un comportamiento regular en una región del texto seleccionado y desplazar tabulaciones para eliminar pestañas al principio de la línea (o conjunto de líneas).

Puede habilitarlo o deshabilitarlo en cualquier momento presionando M-x regtab-mode.

+2

Su enlace ya no funciona. – user857990

Cuestiones relacionadas