2011-02-28 22 views
24

Por varias razones prefiero configurar mi editor para insertar espacios cuando se presiona TAB.Emacs: pestaña Insertar en lugar de espacios

Pero recientemente descubrí que las pestañas deben permanecer como pestañas en los archivos make.

¿Cómo inserto la pestaña (\t, no " ") sin reconfigurar los editores cada vez que necesito escribir archivos make?

utilizo los siguientes editores: Emacs, Kate, gedit, y el editor de Visual Studio.

Respuesta

8

El modo Makefile de Emacs se ocupa de dónde insertar pestañas y espacios, siempre y cuando presione las teclas correctas en los lugares correctos. O eso, o me perdí algunos detalles en la pregunta.

+3

Sí, por emacs la inserción de pestaña en lugar del espacio debe ser automática si se encuentra en modo de archivo MAKE-(o BSDmakefile-mode). Si de alguna manera necesita insertar una pestaña cuando no puede hacerlo debido a las configuraciones dañadas, use "C-q tab". –

55

Para insertar manualmente una pestaña en Emacs, use ctrl-Q TAB. control-Q hace que la siguiente clave se inserte en lugar de interpretarse como un posible comando.

+1

que funcionó también. Gracias. – pic11

+3

¿Cómo es que esta no es la respuesta aceptada? – Nikhil

+0

Gracias, eso me ha estado molestando por un tiempo. – Vincent

0

La sección Smart inference of indentation style de la página NoTabs en EmacsWiki fue muy útil. Le muestra cómo configurar espacios para la mayoría de los proyectos, pero cambie a pestañas si el archivo que está editando tiene más líneas que comiencen con tabulación que líneas que comiencen con espacio.

Aquí está el código:

(defun infer-indentation-style() 
    ;; if our source file uses tabs, we use tabs, if spaces spaces, and if   
    ;; neither, we use the current indent-tabs-mode        
    (let ((space-count (how-many "^ " (point-min) (point-max))) 
     (tab-count (how-many "^\t" (point-min) (point-max)))) 
    (if (> space-count tab-count) (setq indent-tabs-mode nil)) 
    (if (> tab-count space-count) (setq indent-tabs-mode t)))) 

[en mi gancho c-mode, o cualquier otro modo yo quiero tener sangría inteligente]

(setq indent-tabs-mode nil) 
(infer-indentation-style) 

Esto podría todavía ser una Problema al editar archivos nuevos que siempre deberían tener pestañas como makefiles. Para ellos, su gancho de modo simplemente lo configurará en pestañas. Por ejemplo:

(add-hook 'makefile-mode-hook 
    '(lambda() 
    (setq indent-tabs-mode t) 
    ) 
) 
Cuestiones relacionadas