Machen Sie vim yankings global über eine gemeinsam genutzte Textdatei

719
gggg

Kurz gesagt, ich möchte Folgendes:

  • y (ank) schreibt den gerippten Text tatsächlich in eine Zeile in einer Textdatei, möglicherweise in Ihr .vim-Verzeichnis
  • diese Leitung wird mit dem Namen des Registers vorangestellt, so "qyyAusbeutenq>my line of text
  • p (ut) erhält das erwartete Ergebnis aus dieser Datei

Der Grund ist, mehr "systemweiten" Vim-Puffer zu erhalten, um dieses Problem zu lösen:
Sharing Vim Yank Register

4

2 Antworten auf die Frage

1
max

Ich hatte die gleiche Frage. Ich habe folgende einfache Lösung gefunden:

Bearbeiten Sie Ihre .vimrc-Datei. Fügen Sie die Zeilen hinzu

map <C-y> <Esc>:'<,'>! cat \| tee ~/tmp/.myvimbuf<CR>  map <C-p> o<Esc>:.!cat ~/tmp/.myvimbuf<CR>  map <C-P> O<Esc>:.!cat ~/tmp/.myvimbuf<CR> 

und stellen Sie sicher, dass das Verzeichnis ~ / tmp vorhanden ist.

Öffnen Sie zwei Instanzen von vim. Wenn Sie nun einen Teil des Textes in einer Instanz markieren und STRG + y und dann STRG + p oder STRG + UMSCHALT + p in der anderen Instanz drücken, sollten Sie das bekommen, was Sie möchten.

Natürlich können die Tastenkombinationen beliebig verändert werden.

Dies braucht catund tee; es sollte auf jedem Mac / Linux-Rechner funktionieren.

Ah, sehr nett. Dies würde auch das Einfügen im Einfügemodus ermöglichen. gggg vor 12 Jahren 1
0
Keith

Alles was Sie wirklich brauchen, ist die Viminfo-Funktion. Fügen Sie etwas in Ihre ~ / .vimrc-Datei ein.

set viminfo='20,\"90,h,% 

Dann bleiben Butter, Markierungen und mehr automatisch zwischen den Sitzungen erhalten. Siehe :help viminfofür weitere Informationen.