Kann ich den Vim-Befehlsverlauf in Echtzeit instanzübergreifend freigeben?
Damit meine ich, was die Leute auf diese Weise tun:
export PROMPT_COMMAND="history -a; history -c; history -r; $PROMPT_COMMAND"
Das heißt, wenn ich einen Befehl echo test1
in einer Shell ausführe und dann Upeine andere drücke , sehe ich echo test1
. (Um genau zu sein, muss man Entervorher drücken, Updamit es funktioniert.)
Ist das mit Vim möglich? Zuerst dachte ich, dass die Verwendung der +clientserver
Option funktionieren würde. Aber das scheint etwas anderes zu sein.
command-history
x-yuri
quelle
quelle
Antworten:
Der Befehlsverlauf wird in der viminfo- Datei (
:help viminfo
) gespeichert . Normalerweise wird dies beim Start gelesen und beim Beenden geschrieben, aber Sie können Vim-Instanzen explizit mit einer Kombination aus:wviminfo
und beibehalten und synchronisieren:rviminfo
. Beachten Sie, dass dadurch die gesamten Informationen synchronisiert werden. dh auch Inhalte, Marken, Pufferlisten usw. registrieren.quelle
In Vim ist der nächste, den Sie bekommen können (wie Ingos Antwort und Christians Kommentar erwähnt):
Es ist wichtig zu wissen, dass die
Focus*
automatischen Befehle nicht immer ausgeführt werden, wenn Sie Vim von einem Terminal aus verwenden, insbesondere nicht, wenn Sie tmux oder screen verwenden. Sie sollten dies zuerst mit testen:au FocusLost :echoerr "Focus lost!"
.Soweit ich weiß, gibt es keine gute Lösung, wenn diese Autobefehle für Sie nicht funktionieren. Die Verwendung anderer Ereignisse (z. B.
CursorHold
) erscheint mir aufgrund von Zeitproblemen, die mit ziemlicher Sicherheit auftreten werden, problematisch.Neovim wird mit "ShaDa" geliefert, einem Ersatz für das Viminfo-System von Vim. Ein Aspekt, bei dem es besser ist, Dateien aus verschiedenen Instanzen zusammenzuführen, und obwohl die Synchronisierung zwischen mehreren Instanzen ( noch ) nicht direkt unterstützt wird , scheint dies für mindestens einen Neovim-Entwickler gut zu funktionieren :
Weitere
:help shada-merging
Informationen zum Zusammenführungsprozess finden Sie unter.quelle
:h viminfo-timestamp