Vimrc und Einstellungen wenn ein Plugin da ist

Hallo,

ich baue momentan meine .vimrc auf. Das ist auch soweit kein Problem wenn man tatsächlich sich damit befasst.

Ich verteile meine Config über Github und möchte diese auch recht Flexibel halten. Der Vorteil mit Github ist dass ich eine Versionierung habe, die Config mit allen teilen kann und ich diese auch noch auf anderen Systemen verteilen kann (z.B. mit einem wget auf die Raw Dateien.)

Die Sache ist nur die dass ich nicht überall Git habe, ich aber in meiner Config in der Statuszeile die Branch anzeigen lasse. Das doofe ist dass ich unschöne Fehler bekomme wenn kein Git auf dem System installiert ist. (Auf einem Webserver oder aber Datenbankserver brauch man eher selten Git) daher dachte ich mir dass es vielleicht eine Möglichkeit gibt dieses in der Vim config nur einblenden zu lassen wenn denn Git auch vorhanden ist.

Habt ihr eine Idee?

Hallo Dennis,

ich baue momentan meine .vimrc auf. …
Ich verteile meine Config über Github und möchte diese auch
recht Flexibel halten.

zu Git kann ich Dir nichts sagen, da ich das nicht kenne.

Was es aber - möglicherweise - genau so gut machen würde:

cvs (ist ein Versions-Verwaltungs-Programm)

Gibt es m.W. auf allen Plattformen. Es ist für reine Textdateien hervorragend geeignet. Man ‚checkt eine Version‘ aus, was eine Kopie der Datei vom (Linux-)Server auf den lokalen Rechner bringt. Das kann - automatisch - beim Rechnerstart erfolgen, noch bevor sich ein Benutzer anmeldet.

Die Sache ist nur die dass ich nicht überall Git habe, ich
aber in meiner Config in der Statuszeile die Branch anzeigen
lasse.

in cvs kann man spezielle Variable setzen, welche auch immer wieder aktualisiert werden. Im Folgenden ein Auszug meiner Control-Datei für Shell-Scripte, die ich per ‚:r Name‘ in neu geschriebene Scripte einfüge:

*** last changed by $Author: guenter $

*** Version in CVS: $Revision: 1.0 $

*** From $Date: 2010/06/08 12:00:00 $

Wie Du welche Variable in der Statuszeile anzeigen kannst, weißt Du wohl besser

Das doofe ist dass ich unschöne Fehler bekomme wenn
kein Git auf dem System installiert ist.

Da die o.g. Zeilen permanent in Deiner .vimrc stehen, ist zur Anzeige kein besonderes Programm erforderlich, nur zum Aktualisieren.

cvs verbindet sich (empfehlenswert) per ssh mit dem CVS-Server, was man ja von der Funktionsfähigkeit des Netzwerkes abhängig machen kann.

Bevor ich hier zu sehr ins Detail gehe: sprich mich an, wenn Du Interesse hast. Sowohl die Eingabe eines Passwortes aus auch den automatischen Start kann ich Dir beschreiben. Das Passsword liegt (verschlüsselt) im Verzeichnis ~/.ssh/ und ist an den Rechner gebunden, auf dem es erzeugt wurde … ein Diebstahl ist somit sinnlos!

Wie gesagt: ein ‚cvs get .vimrc‘ holt Dir die aktuelle Version und cvs gibt es auch für Windows … obwohl ich denke, daß dies für Dich keine Rolle spielt.

Wer die (Schreib-)Rechte am CVS-Server hat, kann Änderungen auch - wirksam für alle - hinterlegen. Wer das wann gemacht hat, wird protokolliert.

Vor Jahren war das die Methode, wie Quell-Programme (nicht nur unter) unter Linux weltweit verwaltet wurden.
Auch noch heute gibt es etliche CVS-Repositories.

Günter

dieses in der Vim config nur einblenden zu lassen wenn denn Git auch vorhanden ist.

Hallo Dennis,

ich habe mit Vim und Git leider keine Erfahrung. Ich habe zu den beiden Themen mal kurz recherchiert. Mein Tipp ist daher eher geraten:
In der .vimrc sind bedingte Abfragen (if has - else - endif) möglich. Vielleicht lässt es sich darüber steuern: Erst abfragen ob Git vorhanden ist und nur dann die Funktion „Einblenden Branch in Statuszeile“ ausführen.
Wenn .vimrc dann vom Vim bearbeitet wird, könnte es so ablaufen:

  1. Vim startet
  2. Vim findet in .vimrc den bedingten Aufruf zur Git-Statusanzeige
  3. Vim die .vimrc mit/ohne Git-Statusanzeige editieren

Vielleicht hilft das ja weiter…

Grüße

Raimund

Hallo

da kann ich leider nicht helfen

Michael

Sorry Dennis,

ich bin von der emacs Fraktion. :wink:

… aber git sollte man sowieso überall haben. Ich manage damit mein gesamtes /etc.

Grüße,

  • lars.

Sorry, da kann ich nicht weiterhelfen.

Sorry, da ich selbst nicht mit vim/git arbeite, kann ich da leider nicht weiterhelfen.

Hallo,

ich hoffe, Du hast inzwischen eine Antwort gefunden… leider bin ich der exakten Konfiguration von vim in diesem speziellen Fall und Situation überfragt :wink:

Viele Grüße,
Michael

Hallo,

danke an alle die versucht haben mir weiterzuhelfen.
Für alle interessierten: Man findet meine Vim RC unter: https://github.com/denniswisnia/Bash-Scripts

Die Lösung war denktbar einfach und ich werde Sie mal hier offenbaren:
Kurze Erklärung, bevor der Code kommt:
Ich habe ein Funktion die nach einem Programm sucht. Dieses Programm gebe ich dann in der if schleife an um dann eine andere Status Line einzublenden. Klingt einfach? Ist es auch!

Hier der Code:

fun! SearchInPath(prog)
let components = split($PATH, „:“)
for c in components
if executable(c . „/“ . a:stuck_out_tongue:rog)
return 1
endif
endfor
return 0
endfun

if SearchInPath(„git“)
set statusline=%{GitBranch()}\ %{HasPaste()}%F%m%r%h\ %w\ \ CWD:\ %r%{CurDir()}%h\ \ \ Line:\ %l/%L:%c
else
set statusline=%{HasPaste()}%F%m%r%h\ %w\ \ CWD:\ %r%{CurDir()}%h\ \ \ Line:\ %l/%L:%c
endif

function! CurDir()
let curdir = substitute(getcwd(), „/home/dennis“, „~/“, „g“)
return curdir
endfunction

function! HasPaste()
if &paste
return 'PASTE MODE ’
else
return ‚‘
endif
endfunction

Danke für die Info.