Comment puis-je obtenir une liste des noms de types de fichiers connus de vim?
Je veux pouvoir le faire de sorte que lorsque vim ne détecte pas automatiquement un type de fichier, je puisse essayer certains des types de fichiers que vim sait déjà similaires et voir s'ils fournissent une coloration syntaxique raisonnable.
Je sais que les fichiers vimscript traitant des types de fichiers sont placés dans le ftplugin
répertoire par convention, mais ils n'ont pas besoin de l'être (je ne suis pas sûr, mais je ne pense pas que les fichiers vimscript du ftplugin
répertoire sont spéciaux), alors je veux simplement demandez à vim quels types de fichiers il connaît, quelle que soit la façon dont il les a appris.
syntax-highlighting
Praxéolitique
la source
la source
:setfiletype
(c'est-à-direTab
après un espace). Vous ne savez pas si c'est la liste complète, ou comment la capturer dans un tampon / fichier.<c-d>
au lieu de<tab>
pour lister les complétions.Réponses:
Solution simple
Tapez
:setfiletype
(avec un espace après) , puis appuyez surCtrl-d
.Voir
:help cmdline-completion
pour plus d'informations sur l'auto-complétion dans la ligne de commande de vim.Solution compliquée
Cette solution utilise l'
'runtimepath'
option permettant d'obtenir tous les répertoires de syntaxe disponibles, puis extrait une liste des fichiers vimscript de ces répertoires avec leurs extensions supprimées. Ce n'est peut-être pas le moyen le plus sûr de le faire, donc les améliorations sont les bienvenues:Vous pouvez ensuite utiliser cette fonction comme vous le souhaitez, par exemple pour imprimer toutes les valeurs de la liste. Vous pouvez accomplir cela comme suit:
Notez que ceci peut probablement être un peu compacté, il en va de même pour la lisibilité. Je ne vous expliquerai pas toutes les fonctions et commandes utilisées ici, mais voici toutes les pages d'aide correspondantes:
: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()
la source
set filetype<space><c d>
, il me montre une liste, mais HTML n'est pas dans la liste. Java n'est pas dans la liste. Comment afficher les noms de type de fichier au sens de types de fichier correspondant aux configurations de formatage de la syntaxe?:setfiletype
sans l'espace typique entre "set" et "filetype". Vous pouvez trouver plus d'informations avec:help :setfiletype
et:help ftdetect
.:setfiletype ht<Ctrl+D>
pour lister le type de fichier commençant par ht, qui filtre les résultats indésirables. :)Si votre version de vim est suffisamment récente (v7.4.2011 +), vous pouvez demander des types de fichiers connus avec la fonction que nous pouvons maintenant utiliser pour vous aider à définir l'auto-complétion manuelle:
getcompletion()
Si vous souhaitez restreindre la liste aux types de fichiers commençant par un
'c'
, vous pouvez appeleretc.
Remarque: contrairement aux solutions qui analysent les noms de fichier et les noms de répertoire
$VIMRUNTIME/{syntax,filetype}/
, cette solution est également analysée'runtimepath'
. Autant que je sache, de nouveaux types de fichiers ne sont pas définis / enregistrés à la volée avecset ft=foobar
, ni après les autocommandes.la source
Vous pouvez également imprimer tous les types de fichiers du terminal en exécutant les 2 commandes suivantes:
1.
2
La première commande navigue simplement vers votre chemin d’exécution vim (pour moi c’était / usr / share / vim / vim80 ).
La deuxième commande répertorie tous les noms de type de fichier dans les deux dossiers où vim stocke les définitions de type de fichier.
Mise à jour
Améliorations suggérées aux deux commandes de muru qui offrent:
1.
2
la source
tr
pour convertir les nouvelles lignes en null uniquement pour la reconvertir à la commande suivante, effectuez une substitution lorsque le regroupement de commandes simple suffirait. Je suggère quelque chose comme:find syntax ftplugin -iname '*.vim' -exec basename -s .vim {} + | sort -u
vim -Nesc '!echo $VIMRUNTIME' -c qa
, Je pense.printf
est une commande interne):f=({ftplugin,syntax}/*.vim) && f=(${f[@]##*/}) && printf "%s\n" "${f[@]%%.*}" | sort -u
. Voir "Extension de paramètres" dans la page de manuel Bash pour une explication des hiéroglyphes.bash
, ce qui n'est pas un vrai plugin de type de fichier ... et donne l'effet du type de fichier "sh"Essayez de voir dans $ VIMRUNTIME / syntax. Utilisez: echo $ VIMRUNTIME pour connaître sa valeur. Sur mon ordinateur, $ VIMRUNTIME / syntax était / usr / share / vim / vim81 / syntax. Il a tous les fichiers de syntaxe.
Si vous avez un vim avec interface graphique, vous pouvez également utiliser le menu Syntaxe pour obtenir tous les types de fichiers pris en charge.
la source