Comment activer la mise en évidence de la syntaxe pour .bash_aliases dans vim?

19

Je travaille à réorganiser mon .bashrc. J'ai déplacé mes alias vers .bash_aliases(qui provient de .bashrc, mais je n'arrive pas à comprendre comment activer la mise en évidence de la syntaxe pour ce fichier. vimSemble incapable de comprendre dans quelle langue le fichier est. Il fonctionne très bien .bashrc. Des idées?

Matthieu
la source

Réponses:

12

Allez dans vim et lancez:

:echo $VIMRUNTIME

Habituellement, la valeur sera quelque chose comme:
/ usr / share / vim / vim72
Puis éditez (en utilisant root) le fichier /usr/share/vim/vim72/filetype.vim
Recherchez bashrc.
Vous trouverez une ligne qui ressemble à ceci:

au BufNewFile,BufRead .bashrc*,bashrc,bash.bashrc,.bash_profile*,.bash_logout*,*.bash,*.ebuild call SetFileTypeSH("bash")


Modifiez la ligne et ajoutez-y votre nom de fichier (.bash_aliases).

Ça y est, maintenant ça devrait marcher.

Iftach Bar
la source
Parfait! Cela a résolu mon problème.
Matthew
5
Vous ne devez pas modifier la distribution vim (fichiers dans / usr / share / vim). Vos modifications peuvent être écrasées lorsque vous mettez à jour vim. Au lieu de cela, vous devez créer votre propre script qui fait la même chose (ou ajouter cette ligne à votre vimrc le ferait).
idbrii
11

La réponse est dans ceci: vimdoc - setf mais pour vous jeter un os, si vous voulez juste que la syntaxe et la coloration syntaxique fonctionnent, vous pouvez faire:

  :setf bash

Une autre possibilité que je viens de réaliser lorsque je répondais à une autre question VIM était que vous pouviez également ajouter cette section à votre fichier .vimrc et qu'elle activerait automatiquement la mise en évidence de la syntaxe pour le fichier .bash_aliases chaque fois que vous le modifiez sans avoir besoin d'une modélisation ou avoir à manuellement tapez : setf bash chaque fois que vous ouvrez le fichier.

if has("autocmd")
  augroup bashalias
    autocmd BufRead,BufNewFile .bash_aliases set filetype=bash
  augroup END
endif

Troisièmement, comme Mugen Kenichi ci-dessous le fait remarquer dans les commentaires, vous pouvez également ajouter une modélisation au fichier .bash_alias également en tant que telle:

# vim: set filetype=bash: 
Pharaun
la source
et / ou ajoutez une modélisation à votre fichier bash vimdoc.sourceforge.net/htmldoc/options.html#modeline
matthias krull
@ Mugen Kenichi - Oh bonne capture là-bas! Je n'utilise jamais de modeline mais je l'ai déjà vu dans des fichiers.
Pharaun
3
Cela m'a vraiment beaucoup aidé, merci les gars. Une chose que je devais faire était de définir le type de fichier sur sh au lieu de bash, mais je devrais probablement trouver un bon fichier bash vim à la place, car cela résoudrait également mon problème: p
icco
Mon VIM 7.3 de cygwin ne connaît pas non plus "filetype = bash". Si vous lisez via filetype.vim, "sh" est utilisé comme type de fichier pour tous les autres modèles bash.
Bogdan Calmac,
Malgré le fait que je pense que l' .vimrcédition est plus fiable, les modélisations VIM sont tout simplement géniales! Merci.
semaines_
1

Ajoutez la ligne suivante à ~ / .vimrc (créez-la si elle n'existe pas).

au BufNewFile,BufRead .bash_aliases call SetFileTypeSH("bash")
Rudger
la source
0

Suivez la réponse de @ Pharaun pour vim 8 et plusieurs fichiers d'alias. Afin d'obtenir la mise en évidence correcte, je devais faire deux réglages. Tout d'abord dans le nouveau fichier .bash_aliases:

# vim: set filetype=bash

Ainsi que le chèque dans mon .vimrc

if has("autocmd")
  augroup bashalias
    autocmd BufRead,BufNewFile *_aliases set filetype=sh
  augroup END
endif

Notez que le type de fichier est sh ainsi que le caractère générique * pour plusieurs noms de fichiers.

Je ne sais pas pourquoi ces deux paramètres sont nécessaires. J'ai essayé d'utiliser un seul paramètre mais les deux combos étaient nécessaires pour que la mise en évidence soit correcte.

Shadoath
la source
J'utilise vim 8 mais je n'ai pas besoin de la modeline (# vim ...). Il suffit de définir le type de fichier sur sh dans mon vimrc fait l'affaire. D'une manière ou d'une autre, le type de fichier ne devrait pas bashmais juste sh.
Jinghao Shi