Detectar o idioma de novos arquivos no vim (destaque da sintaxe de atualização)


2

Sempre que você abre um arquivo, o vim executa uma série de verificações para determinar o idioma do arquivo e aplica o realce de sintaxe relevante; primeiro, verificando a extensão do arquivo e, em seguida, olhando dentro do próprio arquivo. Nada de novo aqui.

Quando você cria um novo arquivo, incluindo a extensão, por exemplo, o test.sqlvim destaca automaticamente a sintaxe SQL para qualquer coisa que você digitar - novamente, nada de novo aqui.

No entanto, quando você cria um novo arquivo sem uma extensão de arquivo mas contendo um shebang, por exemplo, #!/usr/bin/env pythonparece ser necessário salvar o arquivo e abri-lo novamente para o vim aplicar as verificações e decidir que esse é um script python.

Minha pergunta é se existe um comando vim que aciona essas verificações, permitindo uma atualização do destaque em novos arquivos (sem extensão), evitando a necessidade de reabrir o arquivo.

Observando a documentação do vim para carregamento de sintaxe, achei que encontraria algo útil em relação à minha consulta - infelizmente não encontrei.


2
Eu suspeito: set ft = python funcionará para você neste caso.
Josh English

Respostas:


4

Aqui estão três maneiras diferentes de fazer isso:

  • :set ft=python. O lado negativo dessa abordagem é que você não pode adicioná-lo a um atalho de teclado, pois ele funcionará apenas com um tipo de arquivo (python neste exemplo)
  • :w+ :eO lado negativo disso é que você tem que salvar o arquivo antes de executar o comando, uma vez que recarrega o arquivo.
  • :filetype detect É mais longo para digitar.

Você pode adicionar a segunda ou terceira opção como um atalho com map <C-r> :filetype detect<CR>a sua .vimrcpara permitir atualizar o arquivo com ctrl+r


:filetype detecté exatamente o que eu estava procurando - não me importo de digitar - muito obrigado!
Javier Arias
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.