Existe alguma maneira de os editores Linux saberem a linguagem de programação sem a extensão do arquivo?

1

Estou editando alguns scripts no Linux sem as extensões de arquivo de idiomas, e parece que os editores, ou seja, vi , nano e gedit não estão aplicando realce de sintaxe porque os nomes de arquivos não usam as extensões de idioma.

Existe algum parâmetro a ser passado ou alguma configuração que possa permitir que eles reconheçam o idioma?

Atualização:

Depois de algumas pesquisas, percebo que o bash tem essa capacidade, pelo menos para fazer alguma análise ou verificar a shebang no topo, determinar o idioma. Por padrão, o Ubuntu não instala o pacote completo vim , portanto, após instalá-lo, os arquivos do shell são reconhecidos. Eu não sei sobre nano ou gedit , mas vi e sua contraparte gráfica serve.

    
por vfclists 03.10.2012 / 18:11

2 respostas

2

Esta questão não pode ser respondida de forma geral, de forma que se aplique a todos os editores de texto.

O Vim reconhece arquivos por sufixo. Isso é orientado por sua scriptologia de inicialização padrão e você pode hackear comportamentos personalizados em .vimrc .

Por exemplo, escrevi para mim um programa em C chamado autotab , que examina o conteúdo de um arquivo e determina as configurações shiftwidth e tabstop e expandtab do Vim com base em como esse arquivo parece estar formatado .

Quando eu carrego ou recarrego um arquivo no Vim, este programa analisará o conteúdo e, em seguida, emitirá os parâmetros do Vim acima, que são interpolados em um comando set e executados. Por exemplo, se o arquivo estiver usando um recuo de dois espaços, mas evidentemente com uma mistura de espaços e tabulações de oito espaços, o programa produzirá tabstop=8 shiftwidth=2 noexpandtab .

Exatamente a mesma abordagem pode ser usada para escolher o realce de sintaxe. Escreva um script que examine algumas linhas de um arquivo, adivinhe o tipo e, em seguida, gere um comando :set syntax ... .

O utilitário file pode ser usado como base do script. O banco de dados "mágico" do programa contém heurísticas para detectar algumas linguagens de programação. Tente executar file em vários arquivos seus e veja a saída. Você pode se surpreender com o quão bem ele identifica o conteúdo. Portanto, a estratégia pode ser: executar file no arquivo, capturar a saída, analisá-la em vários casos e gerar os encantamentos Vim corretos. Em seguida, conecte isso em .vimrc .

GIT repo de autotab : link

    
por 03.10.2012 / 18:21
0

Antes de mais nada, o tipo de arquivo pode ser reconhecido em sistemas Linux / Unix pelo "Número Mágico" e este identificador de tipo de arquivo pode ser verificado com um editor com funções de edição hexadecimais ou diretamente com o Editor Hexadecimal. Infelizmente, arquivos de texto simples não podem ser reconhecidos dessa maneira.

Mais informações sobre este tópico: Definição do número mágico

A solução possível para o arquivo de texto simples é usar um editor capaz de reconhecer qual linguagem de programação é usada.

Pode ser Geany ou SciTe . Eles suportam diferentes tipos de arquivos, mas não posso dizer se eles podem reconhecê-lo se o arquivo foi criado por outro editor, por exemplo ...

    
por 03.10.2012 / 19:10