2016-04-24 20 views
3

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

4

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) 
+0

der Tat. Ich hatte die viminfo-Variable in meiner .vimrc-Datei vermasselt – bergercookie

3

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,%