Ich habe kürzlich die Verwendung von globalen Marken in Vim gefunden. Sie scheinen ein ziemlich mächtiges Feature zu sein, jedoch werden sie gelöscht, wenn vim geschlossen wird. Gibt es eine Möglichkeit, vim globale Markierungen beim Start von vim zu definieren (z. B. indem Sie sie in der .vimrc-Datei definieren)?Persistent vim globale Marken
Antwort
Normalerweise sind globale Marken in der viminfo Datei beim Beenden gespeichert. Es wird von der Option viminfo
geregelt. Sie können ihren Wert wie folgt überprüfen:
:set viminfo?
Wenn es leer ist, können Sie einen gemeinsamen Wert in Ihrem
.vimrc
gesetzt:set viminfo='100,<50,s10,h
Dann globale Marken auf Beenden gespeichert werden sollen.
- Wenn es nicht leer ist, muss der Parameter
f0
entfernt werden (weil das Speichern globaler Marken deaktiviert wird).
Automatische Speicherung scheint die beste Lösung in der Regel, aber wenn Sie möchten, können Sie auch eine globale Marke in Ihrem vimrc gesetzt:
function! SetGMark(mark, filename, line_nr)
let l:mybuf = bufnr(a:filename, 1)
call setpos("'".a:mark, [l:mybuf, a:line_nr, 1, 0])
endf
call SetGMark('A', '~/file.txt', 10)
Sie müssen schauen Sie in viminfo
:help viminfo
finden Sie allgemeine Informationen geben, und :help 'viminfo'
werden Sie über die Optionen sagen, welche Einstellung benötigen. (Die Anführungszeichen sind wichtig in diesem Zusammenhang)
If you exit Vim and later start it again, you would normally lose a lot of
information. The viminfo file can be used to remember that information, which
enables you to continue where you left off.
This is introduced in section 21.3 of the user manual.
The viminfo file is used to store:
- The command line history.
- The search string history.
- The input-line history.
- Contents of non-empty registers.
- Marks for several files.
- File marks, pointing to locations in files.
- Last search/substitute pattern (for 'n' and '&').
- The buffer list.
- Global variables.
essentialy, stellen Sie sicher, viminfo nicht f0
enthält, die Marken über mehrere Sitzungen Datei speichern deaktiviert.
Meine viminfo Einstellung enthält
:set viminfo='100,<50,s10,h,%
der Tat. Ich hatte die viminfo-Variable in meiner .vimrc-Datei vermasselt – bergercookie