¿Cuál es el carácter utilizado para sangrar la receta de la regla Crear archivo?

¿Cuál es el carácter utilizado para sangrar la receta de la regla Crear archivo?

Estoy usando gnu make y en un Makefile que tengo, veo la siguiente regla. Quiero agregar una regla similar con una receta, pero cuando agrego una regla y su receta en la siguiente línea al darle una pestaña o espacio para la receta, aparece un error.

dummy :
    @echo $(OBJS)

Cuando encendí el comando vim: set list, veo:

dummy :$
^I@echo $(OBJS)$

¿Cuáles son exactamente los caracteres antes de la línea de la receta (segunda línea) que la sangran desde el inicio de la línea?

¿Cómo los ingreso usando el teclado (sin tener que copiar, pegar la regla existente y luego modificarla?

¿Dónde puedo encontrar información sobre varios espacios/sangrías que se utilizarán al crear un Makefile desde el principio, a mano (no es un archivo MAKE creado automáticamente u otra herramienta)?

Respuesta1

Recetas en un makefiledebeestar precedido por un único tabcarácter estándar, nada más.

^Ies la representación del carácter de tabulación (consulte la tabla en WikipediaASCIIpágina), y por lo tanto esto debería ser correcto.

Entonces deberías poder ingresarlo usando Tabo Ctrl+ I.
(suponiendo que el software no los reasigne)


Editar

Si investigamos más a fondo, parece que ustedpodercambie el carácter requerido para preceder a todas las líneas de receta de una pestaña configurando el.RECIPEPREFIX variable especial.

Si este valor se ha definido en su archivo MAKE, todas las recetasdespuésla definición debe usar ese carácter en lugar de una tabulación.

Respuesta2

Después de seleccionar algunos consejos de la respuesta dada por DMA57361 arriba, y un poco más de manipulación, noté que hace mucho tiempo en mi .vimrc tenía este comando set expandtab(expande las pestañas en espacios) y uso vim.

Esto estaba estropeando el carácter Tab que estaba ingresando en mis reglas de Makefile. Comentar esa línea en .vimrc me ayudó y está funcionando para mí.

Respuesta3

A la luz de la respuesta aceptada: las recetas deben ir precedidas de un tabcarácter, que se reemplaza automáticamente si set expandtabestá habilitado en su archivo .vimrc. No se recomienda sobrescribir el suyo .RECIPEPREFIX, ya que esto rompe los archivos MAKE en las bases de código que descargó. El enfoque ingenuo es simplemente eliminar set expandtabde su configuración, pero puede solucionar esto agregando la línea

autocmd FileType make set tabstop=8 shiftwidth=8 softtabstop=0 noexpandtab.

Esto se desactiva expandtabsólo cuando estás editando un archivo MAKE.

información relacionada