Jak mogę uzyskać listę nazw typów plików, o których vim obecnie wie?
Chcę móc to zrobić, aby gdy vim nie wykryje automatycznie typu pliku, mógłbym wypróbować niektóre typy plików, które vim wie, że mogą być podobne i sprawdzić, czy zapewniają rozsądne wyróżnianie składni.
Wiem, że pliki vimscript zajmujące się typami plików są umieszczane w ftplugin
katalogu zgodnie z konwencją, ale nie muszą być (nie jestem pewien, ale nie sądzę, aby pliki vimscript w ftplugin
katalogu były wyjątkowe), więc chcę po prostu zapytaj vima, jakie typy plików zna, niezależnie od tego, jak się o nich dowiedział.
syntax-highlighting
Praxeolitic
źródło
źródło
:setfiletype
(np.Tab
Po spacji). Nie jestem pewien, czy jest to pełna lista, ani jak przechwycić ją do jakiegoś bufora / pliku.<c-d>
zamiast,<tab>
aby wyświetlić listę uzupełnień.Odpowiedzi:
Proste rozwiązanie
Wpisz
:setfiletype
(następnie spacją) , a następnie naciśnijCtrl-d
.Zobacz
:help cmdline-completion
więcej na temat autouzupełniania w wierszu poleceń vima.Skomplikowane rozwiązanie
To rozwiązanie wykorzystuje
'runtimepath'
opcję pobrania wszystkich dostępnych katalogów składni, a następnie pobiera listę plików vimscript w tych katalogach z usuniętymi rozszerzeniami. Może to nie być najbezpieczniejszy sposób, więc usprawnienia są mile widziane:Następnie możesz użyć tej funkcji w dowolny sposób, na przykład drukując wszystkie wartości z listy. Możesz to zrobić w następujący sposób:
Zauważ, że prawdopodobnie można to dość mocno spakować, podobnie jest z czytelnością. Nie wyjaśnię wszystkich używanych tu funkcji i poleceń, ale oto wszystkie strony pomocy dla nich:
:help 'runtimepath'
:help :let
:help :let-&
:help split()
:help :for
:help expr-.
:help :if
:help isdirectory()
:help glob()
:help fnamemodify()
:help add()
:help uniq()
:help sort()
źródło
set filetype<space><c d>
, pokazuje mi listę, ale HTML nie ma na liście. Java nie ma na liście. Jak wyświetlić nazwy typów plików w znaczeniu typów plików odpowiadających konfiguracjom formatowania składni?:setfiletype
nie ma typowej spacji między „set” a „typ pliku”. Możesz znaleźć więcej informacji za pomocą:help :setfiletype
i:help ftdetect
.:setfiletype ht<Ctrl+D>
do wyświetlenia typu pliku zaczynającego się od ht, który filtruje niepożądane wyniki. :)Jeśli twoja wersja vima jest wystarczająco aktualna (wersja 7.4.2011 +), możesz poprosić o znane typy plików za pomocą funkcji, której możemy teraz użyć do zdefiniowania ręcznego autouzupełniania:
getcompletion()
Jeśli chcesz ograniczyć listę do typów plików rozpoczynających się od
'c'
, zadzwoniszi tak dalej.
Uwaga: w przeciwieństwie do rozwiązań, które analizują nazwy plików i katalogów
$VIMRUNTIME/{syntax,filetype}/
, to rozwiązanie również analizuje'runtimepath'
. O ile rozumiem, nie widzi nowych typów plików zdefiniowanych / zarejestrowanych w locieset ft=foobar
ani po poleceniach automatycznych.źródło
Możesz także wydrukować wszystkie typy plików w terminalu, uruchamiając następujące 2 polecenia:
1.
2)
Pierwsze polecenie po prostu przechodzi do ścieżki środowiska wykonawczego vim (dla mnie było to / usr / share / vim / vim80 ).
Drugie polecenie wyświetla wszystkie nazwy typów plików w dwóch folderach, w których vim przechowuje definicje typów plików.
Aktualizacja
Sugerowane ulepszenia dwóch poleceń Muru, które oferują:
1.
2)
źródło
tr
do konwertowania nowych linii na zero, tylko w celu konwersji z powrotem następnego polecenia, zastępuj proces, gdy wystarczy proste grupowanie poleceń. Sugerowałbym coś takiego:find syntax ftplugin -iname '*.vim' -exec basename -s .vim {} + | sort -u
vim -Nesc '!echo $VIMRUNTIME' -c qa
, Myślę.printf
jest wbudowane)f=({ftplugin,syntax}/*.vim) && f=(${f[@]##*/}) && printf "%s\n" "${f[@]%%.*}" | sort -u
. Zobacz „Rozszerzanie parametrów” na stronie podręcznika użytkownika Bash, aby uzyskać wyjaśnienie hieroglifów.bash
co” nie jest prawdziwą wtyczką typu pliku… i uzyska efekt typu pliku „sh” ”