Wie, um eine Liste aller Variablen in Vim?
Wenn Vim gestartet wird, packt viele der Umgebungsvariablen vom Betriebssystem (wie PATH
) und es setzt auch eigene Umgebungsvariablen (wie MYVIMRC
).
Wie kann ich Liste oder sehen Sie sich alle environment-Variablen, die Vim versteht und Ihre jeweiligen Werte aus Vim?
- vim.wikia.com/wiki/Displaying_the_current_Vim_environment behilflich sein könnte
- So sind Sie auf der Suche nach einer kompletten Liste von env vars vim erbt, oder sind Sie auf der Suche für alle env-vars Vim erstellt, auf seinen eigenen (durch sich selbst)?
- Soweit ich weiß, ist es nicht möglich, dass durch Vim-nur bedeutet. Allerdings wird in Unix-artigen Systemen kann man nur verwenden
:!env
. - Tarek Fadel: Wie bereits in meiner Frage, ich interessiere mich für beide. Vim auch, bezieht sich auf sowohl, als environment-Variablen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
In Vim-script, es ist nicht entworfen, um die Liste der derzeit
definierten environment-Variablen. Es ist jedoch möglich auszunutzen Vim
Befehlszeilen-Vervollständigung.
Mögliche Abschlüsse für die folgenden unvollendeten Befehl.
Es ist nicht schwer zu sehen, dass, nach Vim-Skript-syntax, alle
Abschlüsse sind die Namen der Umgebungsvariablen. Drücken
wildchar
Schlüssel(Tab, standardmäßig) oder Strg+D wird die Anzeige alle
von Ihnen.
Um diese Liste von Fertigstellungen von einem Skript aus, wir müssen
überwindung seiner interaktiven Natur. Ein möglicher trick, dass wir überlegen, hier zu tun
das beruht auf der Kombination von Merkmalen. Erste von Ihnen ist die
Strg+A - Befehl. Im Command-line-Modus diese Verknüpfung
Trigger einfügen alle verfügbaren Abschluss vor dem cursor.
Diese Abschlüsse sind in alphabetischer Reihenfolge aufgeführt und durch Leerzeichen getrennt.
Wenn wir Vim drucken diese Ergänzungen eingefügt, in der Befehlszeile
wir könnten leicht zu erfassen, Sie durch umleiten der Ausgabe des Befehls mit der
:redir
Befehl. Aber alles, was wir brauchen, um zu erreichen, dass die side-Effekt ist, zitieren den text
eingefügt mit Strg+A: Zitieren macht den rest unseres
:echo
Befehl ein string-literal wird nur ausgedruckt!Editieren einer Befehlszeile diese Weise kann ein Benutzer die Art
:ec
(ein alias für:echo
)dann
$
drücken Sie Strg+A, Typ'
Sie, springen Sie an den Anfangder Befehl mit Strg+B, bewegen Sie den cursor über die
dollar-Zeichen durch drücken von ⇾ (Pfeil rechts) zweimal, löschen Sie die
$
und legen Sie
'
statt. Die gleiche Abfolge der Tastendrücke, reproduziert werden kannnicht-interaktiv mit Hilfe der
:normal
Befehl.Putting all diese Puzzleteile zusammen, so erhalten wir die folgende Funktion.
Damit dieser Ansatz funktioniert, Vim kompiliert werden soll mit der
+cmdline_compl
Funktion.
echo
zureturn
: das funktioniert für mich:execute "fu! Test()\nexe'silent normal!:return $\<C-a>'')\<C-b>\<C-right>\<Right>\<Del>split('''.\"\\n\"\nendfu"
.Liste aller Umgebungsvariablen verwenden
Dann können Sie mit der Eingabe beginnen den Namen der Variablen von Interesse, die automatische Vervollständigung mit Tab, schließlich drücken Sie die Taste Enter, um zu zeigen, seinen Wert.
Ihnen nicht sagen, ob Sie dies benötigen, interaktiv oder in einem Skript. Für letztere ist es leider nicht möglich zu erfassen, die Ausgabe über
:redir
.:redir
. Es erfordert eine nicht-triviale trick, aber. Wenn Sie interessiert sind, finden Sie unter meine Antwort.Blick auf die anderen anwers, Sie können es tun, ohne ein Skript.
Geben Sie den Einfüge-Modus, und drücken Sie dann
Wobei Strg+R erlaubt das einfügen von Registern zur Verfügung (siehe :help i_Ctrl-R). Aber vor allem werden Sie mit dem expression-register = hier zu bewerten, ein string (siehe :Hilfe @=).
So, jetzt können Sie den Ausdruck eingeführt ib.'s Antwort. Geben Sie diese:
Nun sollten Sie den normalen Modus zurück und der Ausdruck sollte evaluiert einen string um und platziert Sie im Puffer. Weiter können Sie es sauber mit einem Ersatz-Befehl:
Sollte Ort jede Umgebungsvariable, die auf einer anderen Linie.
Basiert auf der Idee von ib und die Kommentare von ZyX, hier ist die Funktion, dass ich am Ende mit: