Question Comment définir un schéma de couleurs différent pour chaque type de fichier dans Vim?


Dans Vim, Je veux utiliser un schéma de couleurs différent pour chaque type de fichier.

par exemple. je veux utiliser desert256 couleurscheme pour Python Et JavaScript fichiers et utilisation jellybeans couleurscheme pour HTML Et CSS des dossiers.


J'ai essayé de mettre le code suivant dans mon .vimrc, mais le changement de couleurs se produit seulement lors du changement de tampons pour la première fois.

c'est à dire. Si j'ouvre un nouveau Python fichier, PythonLe coloris de la couleur est utilisé, et quand j'ouvre un nouveau CSS * buffer *, en effet les couleurs changent à CSSles couleurs de Cependant, revenir à Pythonle tampon ne change pas le jeu de couleurs.

J'ai utilisé autocmd WinEnter pour essayer de faire en sorte que cette règle se produise lors du changement de fenêtres (et de tampons), mais cela n’aide pas:

autocmd WinEnter,FileType python,javascript colorscheme desert256
autocmd WinEnter,FileType *,html,css        colorscheme jellybeans  " This includes default filetype colorscheme.

Comment puis-je réparer cela? En outre, un avantage serait de ne pas changer le schéma de couleurs lorsque cela n’est pas nécessaire - c'est à dire. Changer d'un Python à un JavaScript Le tampon ne changera pas le programme de couleurs en "lui-même".


MODIFIER:

Si quelqu'un est intéressé, Voici mon .vimrc repo dans github.com. Je vais le mettre à jour avec la solution que je trouve ici une fois donnée.


34
2018-03-02 17:32


origine


Réponses:


J'ai cherché la même chose. Cela à l'intérieur de votre .vimrc fonctionne raisonnablement bien mais pas parfait.

autocmd BufEnter * colorscheme default
autocmd BufEnter *.php colorscheme Tomorrow-Night
autocmd BufEnter *.py colorscheme Tomorrow

(Notez si vous cherchez un bon thème de couleur sombre Demain soir semble très bien. Très similaire au thème utilisé sur Code Academy.)


24
2018-05-04 00:43



Ce que vous voulez, ce sont les plugins de type filet, plutôt que les autocmds. Courir help: ftplugin en vim pour plus d'informations.

De la page d'aide de vim:

Un plug-in de type de fichier est comme un plug-in global, sauf qu'il définit les options et   définit les mappages pour le tampon actuel uniquement.

Pour utiliser les plugins de type de fichier, placez d'abord la ligne filetype plugin on dans votre vimrc. Ensuite, créez le dossier ftplugin dans votre dossier vim (sur unix il est ~/.vim/, Je ne suis pas familier avec les fenêtres). Créez ensuite un fichier de script pour chaque type de fichier à personnaliser. Ces fichiers doivent être nommés d'une manière spécifique. De la page d'aide de vim:

Les noms génériques pour les plugins de type de fichier sont:
  ftplugin / filetype.vim
  ftplugin / nom_fichier_nom.vim
  ftplugin / filetype / name.vim

Donc, par exemple, si je voulais créer un script pour un fichier python, j'aurais trois options:

  1. Créez un fichier nommé python.vim dans ftplugin
  2. Créez un fichier nommé python_whatever.vim dans ftplugin
  3. Créez un fichier nommé any.vim dans ftplugin / python

Ce script sera ensuite chargé à chaque fois que j'ouvre un fichier que vim reconnaît comme un fichier python.

Donc, pour accomplir ce que vous voulez:

  • Créez un fichier nommé filetype.vim dans le répertoire ftplugin pour chaque type de fichier souhaité.
  • Dans chacun de ces fichiers, ajoutez la ligne colorscheme name_of_colorscheme
  • Ajouter filetype plugin on à votre vimrc.
  • Pour définir un schéma de couleurs par défaut, il suffit de le définir dans votre fichier vimrc. Si je me souviens bien, les plugins de type de fichier sont chargés après votre vimrc.

Modifier: L'OP a indiqué qu'il avait de bonnes raisons d'éviter d'utiliser le répertoire ftplugin. Après un peu plus de diggin, j'ai trouvé ce script  Il peut être placé dans le vimrc global et semble destiné à résoudre le même problème que le PO.


18
2018-03-02 18:12



J'ai un hack que vous pourriez aimer. Il est loin d'être parfait et il n'utilise pas de fichier .vimrc, mais cela fonctionne pour moi. Vous devez taper une commande différente pour modifier différents fichiers. Cela fonctionne en utilisant le paramètre -c quand vous appelez gvim. Cet argument vous permet d'exécuter des commandes vim après le chargement du fichier. Ajoutez ceci à votre ~ / .bashrc (je suppose que vous utilisez bash):

alias gpy="gvim -c 'colorscheme desert'"
alias gcs="gvim -c 'colorscheme jellybeans'"

J'espère que cela t'aides


4
2018-05-10 11:55



Utilisation BufWinEnter au lieu de WinEnter, comme ça:

autocmd BufWinEnter,FileType javascript colorscheme jellybeans

1
2018-03-02 19:03