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:
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:
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.
:syntax on
Haben 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.Antworten:
Lauf
:setf sh
Möglicherweise möchten Sie dies oben in den Dateien platzieren (wenn Sie kein shebang möchten):
quelle
:setf bash
alle Farben aus dem Editor auf meinem System entfernt, während:setf sh
die 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 sh
ausschließlich für alle Shell-Skripte verwendet wird.# vim:ft=bash
bash
Dateityp. Der Dateityp sollte seinsh
. Wenn Sie die Hervorhebung für die Bash optimieren müssen, geben Sielet g:is_bash = 1
Ihre~/.vimrc
.filetype.vim
Selectsh
anstelle vonconf
Shebangless-Shell-Skriptdateien erstellen soll. Vielen Dank!:verbose set modeline?
zeigt Ihnen, was damit los ist. Entweder entfernen Sie dasset nomodeline
von/usr/share/vim/vim73/debian.vim
oder fügen Sieset modeline
es Ihrem eigenen vimrc hinzu. Dann funktioniert die obige Modeline.Stellen
in deinem
.vimrc
. Das setzt den Standard-Dateityp für unbekannte Shell-Skripte aufbash
. Die vollständige Erklärung finden Sie in : help ft-bash-syntaxFür die Neugierigen auf die Interna, zumindest auf meiner Vim 7.4-Installation,
g:is_bash
wird in einem Autocommand in getestet$VIM/vim74/filetype.vim
, was sich entsprechend einstelltb:is_bash
. Die Syntaxdatei$VIM/vim74/syntax/sh.vim
testet dann, umb:is_bash
zu entscheiden, wie die Datei hervorgehoben werden soll.quelle
/usr/share/vim/vim73/syntax/sh.vim
, aber auch dort keine Würfel./usr/share/vim/vim73/filetype.vim
gibt eine Funktion, dieSetFileTypeSH
in Zeile 1760 aufgerufen wird. Ich glaube, ich muss sie möglicherweise ändern, aber Vimscript bereitet mir Kopfschmerzen.