Szukam sposobu na określenie typu pliku w vimie i ustawienie podświetlania składni na podstawie typu pliku. Jedynym haczykiem jest to, że nie mogę użyć rozszerzenia pliku do określenia typu pliku.Wykryj typ pliku w vim bez poprawnego rozszerzenia pliku
Oto mój scenariusz: Używam vimdiff
lub gvimdiff
jako narzędzia P4DIFF
, które pokazuje zmiany między plikami w mojej lokalnej kopii i tymi z serwera perforacji. Siłą rzeczy wydaje się przynieść w plikach z serwera Perforce do katalogu/tmp i używa PID
na nazwę pliku, na przykład:
/tmp/tmp.24673.23
To był dla C++ pliku źródłowego.
Najczęstszymi typami plików, które napotykam w repozytorium perforce są źródła C/C++ i pliki nagłówkowe, pliki Makefile, skrypty Pythona, skrypty perla, skrypty ruby i skrypty tcl.
Przyjrzeliśmy się używając
modeline
, ale większość z tych źródeł w naszym drzewie nie ma tej informacji osadzonych w pliku.This publikowanie wzmianek o możliwym podejściu do wyszukiwania i identyfikacja magicznego wzorca. Nie mogłem znaleźć żadnego spójnego magicznego wzoru, z którym mógłbym osiągnąć wysoki wskaźnik sukcesu.
Próbowałem użyć binarny
file
na moim komputerze linux, aby zobaczyć, jakie wyniki otrzymam. Wydaje się zidentyfikować źródła C/C++ dobrze, ale nie Makefile a nawet skrypty python (które nie mają hashbang)
Jeden dobrą rzeczą jest to, że wśród 2 pliki, które są porównywane pliku po prawej jest z mojej lokalnej kopii, a więc ma poprawną nazwę pliku z rozszerzeniem, dzięki czemu podświetlanie składni jest poprawnie włączone dla pliku po prawej stronie.
Czy istnieje sposób, w jaki mogę wykorzystać to, aby ustawić takie samo podświetlanie składni dla pliku wyświetlanego po lewej stronie?
Wszelkie alternatywne rozwiązania tego problemu są również mile widziane.
Bardzo ładne. Uwielbiam sztuczkę '2/winnr()' !! –
Super! To działa naprawdę ładnie ... Po prostu przenieś if-endif do funkcji i zastąpił polecenie wywołaniem funkcji. :) – Tuxdude