Wie aktiviere ich die Syntaxhervorhebung für .bash_aliases in vim?

19

Ich arbeite daran, meine zu reorganisieren .bashrc. Ich habe meine Aliase nach .bash_aliases( verschoben, das von stammt .bashrc, aber ich kann nicht herausfinden, wie die Syntaxhervorhebung für diese Datei aktiviert wird. Ich kann vimanscheinend nicht herausfinden, in welcher Sprache die Datei vorliegt. Es funktioniert .bashrc. Irgendwelche Ideen?

Matthew
quelle

Antworten:

12

Gehe zu vim und renne:

:echo $VIMRUNTIME

Normalerweise ist der Wert
ungefähr so: / usr / share / vim / vim72
Dann editiere (mit root) die Datei /usr/share/vim/vim72/filetype.vim
Suche nach bashrc.
Sie finden eine Zeile, die so aussieht:

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


Bearbeiten Sie die Zeile und fügen Sie den Dateinamen (.bash_aliases) hinzu.

Das wars, jetzt sollte es klappen.

Iftach Bar
quelle
Perfekt! Das hat mein Problem gelöst.
Matthew
5
Sie sollten die vim-Distribution nicht bearbeiten (Dateien in / usr / share / vim). Ihre Änderungen werden möglicherweise überschrieben, wenn Sie vim aktualisieren. Stattdessen sollten Sie Ihr eigenes Skript erstellen, das dasselbe tut (oder das Hinzufügen dieser Zeile zu Ihrem vimrc würde dies tun).
Idbrii
11

Die Antwort lautet wie folgt : vimdoc - setf aber um Ihnen einen Stein zu werfen, wenn Sie nur möchten, dass die Syntax- und Syntaxhervorhebung funktioniert, können Sie Folgendes tun:

  :setf bash

Eine andere Möglichkeit, die ich gerade bei der Beantwortung einer anderen VIM-Frage erkannt habe, war, dass Sie diesen Abschnitt auch zu Ihrer .vimrc- Datei hinzufügen können. Dadurch wird die Syntaxhervorhebung für die .bash_aliases- Datei automatisch aktiviert, wenn Sie sie bearbeiten, ohne dass Sie eine Modeline benötigen oder manuell vorgehen müssen geben Sie in : setf bash jedes Mal , wenn Sie die Datei öffnen.

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

Drittens, wie Mugen Kenichi weiter unten in den Kommentaren ausführt, können Sie der .bash_alias- Datei auch eine Modeline als solche hinzufügen :

# vim: set filetype=bash: 
Pharaun
quelle
und / oder füge eine Modeline zu deiner Bash-Datei hinzu vimdoc.sourceforge.net/htmldoc/options.html#modeline
matthias krull
@ Mugen Kenichi - Oh guten Fang da! Ich benutze nie Modeline, habe es aber schon in Dateien gesehen.
Pharaun
3
Das hat mir sehr geholfen, danke Jungs. Eines , was ich tun musste, war ich die Datei des Typen zu sh setzen hatte statt bash, aber ich soll wohl nur eine gute bash vim - Datei statt finden, wie das wäre mein Problem zu lösen , wie gut: p
icco
Mein VIM 7.3 von cygwin kennt auch "filetype = bash" nicht. Wenn Sie filetype.vim durchlesen, wird "sh" als Dateityp für alle anderen Bash-Muster verwendet.
Bogdan Calmac
Trotz der Tatsache, dass ich die .vimrcBearbeitung für zuverlässiger halte, sind VIM-Modelines einfach fantastisch! Vielen Dank.
4wk_
1

Fügen Sie die folgende Zeile zu ~ / .vimrc hinzu (erstellen Sie sie, wenn sie nicht vorhanden ist).

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

Verfolgen Sie die Antwort von @ Pharaun für Vim 8 und mehrere Alias-Dateien. Um die Hervorhebung korrekt zu machen, musste ich zwei Einstellungen vornehmen. Zuerst in der neuen .bash_aliases-Datei:

# vim: set filetype=bash

Sowie der Check in meiner .vimrc

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

Beachten Sie, dass der Dateityp sh und der Platzhalter * für mehrere Dateinamen ist.

Nicht sicher, warum diese beiden Einstellungen benötigt werden. Ich habe versucht, nur eine Einstellung zu verwenden, aber beide Kombinationen waren erforderlich, damit die Hervorhebung korrekt war.

Shadoath
quelle
Ich benutze vim 8, aber ich brauche kein Modeline (# vim ...). Setzen Sie einfach den Dateityp auf sh, damit mein vimrc den Trick macht. Irgendwie sollte der Dateityp bashaber eben nicht sh.
Jinghao Shi