Rileva la lingua dei nuovi file in vim (evidenzia l'evidenziazione della sintassi)


1

Ogni volta che apri un file, vim esegue una serie di controlli per determinare la lingua del file e applica l'evidenziazione della sintassi pertinente; prima controllando l'estensione del file, quindi guardando all'interno del file stesso. Niente di nuovo qui.

Quando crei un nuovo file che include l'estensione del file, ad es. test.sql, vim evidenzia automaticamente la sintassi SQL per tutto ciò che scrivi - di nuovo, niente di nuovo qui.

Tuttavia, quando si crea un nuovo file senza un'estensione di file ma contenente uno shebang, ad es. #!/usr/bin/env python, sembra necessario salvare il file e aprirlo nuovamente affinché Vim applichi i controlli e decida che si tratta di uno script python.

La mia domanda è se esiste un comando vim che attiva questi controlli, consentendo un aggiornamento dell'evidenziazione in nuovi file (senza estensione), evitando la necessità di riaprire il file.

Dai un'occhiata alla documentazione di vim per sintassi-loading Pensavo di trovare qualcosa di utile riguardo alla mia domanda, sfortunatamente non l'ho fatto.


1
Sospetto: imposta ft = python funzionerà per te in questo caso.
Josh English

Risposte:


3

Qui ci sono 3 modi diversi per farlo:

  • :set ft=python. Il lato negativo di questo approccio è che non è possibile aggiungerlo a una scorciatoia da tastiera poiché funzionerà solo con un tipo di file (python in questo esempio)
  • :w + :e Il lato negativo di questo è che devi salvare il file prima di eseguire il comando poiché ricarica il file.
  • :filetype detect Questo è più lungo da scrivere però.

Puoi aggiungere la seconda o la terza opzione come scorciatoia con map <C-r> :filetype detect<CR> alla tua .vimrc per abilitare l'aggiornamento del file con ctrl + r


:filetype detect è esattamente quello che stavo cercando - non mi interessa digitare - molte grazie!
Javier Arias
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.