Sto cercando un modo per determinare il tipo di file di un file in vim e impostare l'evidenziazione della sintassi in base al tipo di file. L'unico problema è che non posso usare l'estensione del file per determinare il tipo di file.Rileva il tipo di file in vim senza estensione file valida
Questo è il mio scenario: io uso vimdiff
o gvimdiff
come il mio P4DIFF
strumento, che mostra le modifiche tra i file nella mia copia locale e quelli dal server per forza. Perforce sembra portare nelle file dal server per forza nella directory/tmp e utilizza il PID
dare un nome al file, ad esempio:
/tmp/tmp.24673.23
Questo è stato per un file sorgente C++.
I tipi di file più frequenti che ho incontrato nel repository perforce sono sorgenti C/C++ e file header, Makefile, script python, script perl, script ruby e script tcl.
ho guardato in utilizzando
modeline
, ma la maggior parte delle fonti in nostro albero non ho queste informazioni incorporate nel file.This post menzioni su un possibile approccio per cercare e identificare un modello magico. Non sono riuscito a trovare alcun modello magico coerente con cui avrei potuto ottenere un alto tasso di successo.
Provato usando il binario
file
sulla mia macchina Linux per vedere quali risultati ottengo. Sembra di identificare ben fonti C/C++, ma non riesce per Makefiles e anche gli script Python (che non hanno la hashbang)
Una cosa buona è che, tra i 2 file che vengono confrontati, il file a destra proviene dalla mia copia locale e quindi ha il nome file corretto con estensione, pertanto l'evidenziazione della sintassi è abilitata correttamente per il file sulla destra.
C'è un modo in cui potrei sfruttare questo per impostare la stessa evidenziazione della sintassi per il file visualizzato a sinistra?
Sono inoltre benvenute eventuali soluzioni alternative a questo problema.
Molto bello. Adoro il trucco '2/winnr()' !! –
Fantastico! Funziona davvero bene ... Ho appena spostato l'if-end in una funzione e ho sostituito il comando con una chiamata alla funzione. :) – Tuxdude