Qual é o caractere usado para recuar a receita da regra Criar arquivo?

Qual é o caractere usado para recuar a receita da regra Criar arquivo?

Estou usando o gnu make e em um Makefile que tenho, vejo a regra abaixo. Quero adicionar uma regra semelhante a uma receita, mas quando adiciono uma regra e sua receita na próxima linha, dando uma aba ou espaço para a receita, recebo um erro.

dummy :
    @echo $(OBJS)

Quando liguei o comando vim :set list , vejo:

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

Quais são exatamente os caracteres antes da linha da receita (segunda linha) que a recuam desde o início da linha?

Como faço para inseri-los usando o teclado (sem precisar copiar e colar a regra existente e depois modificá-la?

Onde eu encontraria informações sobre vários espaços/recuos a serem usados ​​na criação de um Makefile desde o início, manualmente (não é um makefile automático/ou outra ferramenta criada)?

Responder1

Receitas em um makefiledeveser precedido por um único tabcaractere padrão e nada mais.

^Ié a representação do caractere de tabulação (veja a tabela na WikipédiaASCIIpágina) e, portanto, isso deve estar correto.

Portanto, você poderá inseri-lo usando Tabou Ctrl+ I.
(assumindo que estes não sejam remapeados pelo software)


Editar

Numa investigação mais aprofundada, parece que vocêpodealtere o caractere necessário para preceder todas as linhas de receita de uma guia, definindo o.RECIPEPREFIX variável especial.

Se este valor foi definido no seu makefile todas as receitasdepoisa definição deve usar esse caractere em vez de uma tabulação.

Responder2

Depois de escolher algumas dicas da resposta dada por DMA57361 acima, e mais alguns ajustes, percebi que há muito tempo no meu .vimrc eu tinha esse comando set expandtab(ele expande abas em espaços) e uso o vim.

Isso estava estragando o caractere Tab que eu estava inserindo nas regras do Makefile. Comentar essa linha em .vimrc ajudou e está funcionando para mim.

Responder3

À luz da resposta aceita: as receitas devem ser precedidas de um tabcaractere, que é substituído automaticamente se set expandtabestiver habilitado em seu .vimrc. Substituir o seu .RECIPEPREFIXnão é recomendado, pois isso quebra os makefiles nas bases de código que você baixou. A abordagem ingênua é simplesmente remover set expandtabda sua configuração, mas você pode contornar isso adicionando a linha

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

Isso é desativado expandtabapenas quando você está editando um makefile.

informação relacionada