Wenden Sie die vollständige Vim-Färbung für Bash-Skripte an, die keine Shebang-Linie haben

2

Daher gibt es in meinem Projekt viele Bash-Skriptdateien, die aus Quellen stammen, aber niemals direkt ausgeführt werden, sodass sie keine Shebang-Zeile und kein gesetztes Ausführungsbit erhalten. Vim färbt sie ein wenig, nutzt aber nicht die volle Färbung. Wie kann ich vim optimieren, um mir alle normalen Bash-Farben für diese Dateien zu geben?

BEARBEITEN:

Ohne shebang:

Ohne Scheiß

Mit shebang:

Mit Shebang

EDIT 2:

Es gibt unten eine Antwort, die für Datei-für-Datei-Änderungen funktioniert, und ich werde damit weitermachen, wenn das alles ist, was ich bekommen kann, aber ich möchte wirklich eine Konfigurationsdatei oder etwas anderes in meiner vim-Installation so ändern dass ich immer die vollen "mit shebang" farben bekomme, auch wenn es keinen shebang gibt. Irgendwo muss es eine Datei geben, die die unvollständige Einfärbung definiert, die ich einfach durch die Datei ersetzen kann, die die vollständige Einfärbung definiert.

EDIT 3:

Die vim globalen Variablen unterscheiden sich nicht wesentlich, wie in diesen Bildern (Ausgabe von :let g:) zu sehen ist:

Umgebungen

Diffed

Ich bin hier irgendwie ratlos.

EDIT 4:

Ich habe die gesamte Umgebung aus einem Fenster mit den richtigen Farben (links) und einem Fenster mit den falschen Farben (rechts) ausgegeben und sie dann auseinandergenommen. Dabei stellte ich Folgendes fest:

60 b:current_syntax       bash   |   61 b:current_syntax       conf

Aus irgendeinem Grund hält es meine shebangless-Quelldateien für conf-Dateien. Also muss ich herausfinden, wie ich sie mit Bash kombinieren kann.

ACK_stoverflow
quelle
:syntax onHaben Sie versucht, nur die Syntaxhervorhebung einzuschalten? Sie können dies zu Ihrem hinzufügen .vimrc, damit es jedes Mal ausgeführt wird, wenn Sie vi.
Matt Clark,
@MattClark Syntax-Hervorhebung ist aktiviert. Was passiert ist, wenn ich eine Bash-Datei öffne, in der sich oben keine Shebang-Linie befindet, bekomme ich eine unvollständige Einfärbung. In meiner Bearbeitung finden Sie Bilder, die das Problem zeigen.
ACK_stoverflow
Welche Plattform benutzt du? Sieht aus wie Fenster; Ist es einheimisch, Cygwin / Mintty oder etwas anderes? Vielen Dank!
cxw
Ich verwende Crunchbang, das für die meisten Zwecke Debian ist. Das vim ist 7.3 und meine Shell ist ein Terminator mit aktivierter 256-Farben-Unterstützung.
ACK_stoverflow

Antworten:

3

Lauf :setf sh

Möglicherweise möchten Sie dies oben in den Dateien platzieren (wenn Sie kein shebang möchten):

# vim:ft=sh
user530873
quelle
Interessanterweise werden :setf bashalle Farben aus dem Editor auf meinem System entfernt, während :setf shdie gewünschte Einfärbung erfolgt. Aber ich frage mich wirklich, ob es eine dauerhaftere Möglichkeit gibt, meine vim-Installation so zu ändern, dass sie :setf shausschließlich für alle Shell-Skripte verwendet wird.
ACK_stoverflow
2
Der Befehl "setf" kann nicht in einer Modeline stehen. Alles, was Modelines tun können, ist, Optionen festzulegen. Sie wollen:# vim:ft=bash
Heptite
1
Es gibt keinen bashDateityp. Der Dateityp sollte sein sh. Wenn Sie die Hervorhebung für die Bash optimieren müssen, geben Sie let g:is_bash = 1Ihre ~/.vimrc.
Garyjohn
Als Antwort markiert, da ich nicht herausfinden konnte, wie ich filetype.vimSelect shanstelle von confShebangless-Shell-Skriptdateien erstellen soll. Vielen Dank!
ACK_stoverflow
Also (natürlich) war es immer noch ein ziemlicher Kampf;) Debian deaktiviert Modeline standardmäßig - das Ausführen :verbose set modeline?zeigt Ihnen, was damit los ist. Entweder entfernen Sie das set nomodelinevon /usr/share/vim/vim73/debian.vimoder fügen Sie set modelinees Ihrem eigenen vimrc hinzu. Dann funktioniert die obige Modeline.
ACK_stoverflow
0

Stellen

let g:is_bash      = 1

in deinem .vimrc. Das setzt den Standard-Dateityp für unbekannte Shell-Skripte auf bash. Die vollständige Erklärung finden Sie in : help ft-bash-syntax

Für die Neugierigen auf die Interna, zumindest auf meiner Vim 7.4-Installation, g:is_bashwird in einem Autocommand in getestet $VIM/vim74/filetype.vim, was sich entsprechend einstellt b:is_bash. Die Syntaxdatei $VIM/vim74/syntax/sh.vimtestet dann, um b:is_bashzu entscheiden, wie die Datei hervorgehoben werden soll.

cxw
quelle
Hat nicht funktioniert Ich habe auch versucht, es hinzuzufügen /usr/share/vim/vim73/syntax/sh.vim, aber auch dort keine Würfel.
ACK_stoverflow
Es /usr/share/vim/vim73/filetype.vimgibt eine Funktion, die SetFileTypeSHin Zeile 1760 aufgerufen wird. Ich glaube, ich muss sie möglicherweise ändern, aber Vimscript bereitet mir Kopfschmerzen.
ACK_stoverflow
Wären Sie bereit, ein Upgrade auf Vim 7.4 (neueste Version) durchzuführen und zu prüfen, ob dies hilft? Ich habe keine 7.3-Installation mehr.
cxw
Nun, irgendwann in diesem Jahr muss ich das gesamte Betriebssystem aktualisieren, was keinen Spaß machen wird, da Crunchbang gestorben ist. Ich bedanke mich für Ihre Hilfe, aber ich würde lieber kein anderes vim nur dafür installieren.
ACK_stoverflow
Das ist fair. Für das, was es wert ist , stackoverflow.com/questions/11044378 schlägt andere haben Probleme gehabt. build.opensuse.org/package/view_file/openSUSE:Factory/vim/… ist ein Patch für sh.vim, der hilfreich sein könnte. Viel Glück!
cxw