16 Stimmen

Code-Faltung wird nicht in meiner vimrc gespeichert

Ich habe den folgenden Code zu meiner .vimrc hinzugefügt:

" save and restore folds when a file is closed and re-opened
autocmd BufWinLeave *.* mkview
autocmd BufWinEnter *.* silent loadview 

HTML- und CSS-Dokumente speichern und stellen ihre Faltungen wieder her, aber die Code-Faltung wird nicht in meinem .vimrc

Irgendwelche Vorschläge?

EDIT:

Der folgende Code löst das Problem:

au BufWinLeave ?* mkview
au BufWinEnter ?* silent loadview

aber wenn ich es schreibe, verschwinden die MRU-Dateien aus meiner Liste (und ich muss MRU zweimal öffnen, um meine Liste der letzten Dateien zu sehen, warum?)

15voto

Rich Punkte 6718

Das Problem ist, dass Ihr Original autocmd Zeilen werden so eingestellt, dass sie dem Muster *.* , d.h. jeder Dateiname, der einige Zeichen enthält, gefolgt von einem Punkt, gefolgt von einigen weiteren Zeichen.

Also die Datei test.html ou anothertest.css übereinstimmen, und Ihr Befehl wird ausgeführt, aber .vimrc die vor dem Punkt nichts enthält, wird nicht abgeglichen.

Die Lösung besteht darin, ein Autocmd einzurichten, das se Spiel .vimrc . Ihre Vermutung über ?* stimmt damit überein (weil es nach einem beliebigen Zeichen, gefolgt von einer beliebigen Anzahl anderer Zeichen, sucht), aber Sie sagen, dass es irgendwie MRUs beeinflusst. Ich weiß nicht, welches Plugin Sie für Ihre MRUs verwenden, aber ich vermute, es ist eines, das die MRU-Liste in einem temporären Fenster mit einem Namen öffnet, der dem ?*-Muster entspricht, und das anschließende Laden der Ansicht bringt Ihre MRUs irgendwie durcheinander.

Daher besteht die Lösung darin, etwas spezifischeres zu verwenden, um .vimrc anzupassen:

autocmd BufWinLeave .vimrc mkview
autocmd BufWinEnter .vimrc silent loadview 

Es ist möglich, dass dies auch funktioniert, und ist allgemeiner:

autocmd BufWinLeave .* mkview
autocmd BufWinEnter .* silent loadview

9voto

user381689 Punkte 101

Laut Jays Kommentaren ist dies die eleganteste Lösung, ich habe eine Menge Plugins und lasse sie auf mehreren Betriebssystemen laufen und habe sie gerade getestet.

autocmd BufWrite * mkview
autocmd BufRead * silent loadview

Es bricht nicht die MRU und führt nicht dazu, dass Sie die MRU doppelt abfragen müssen. Es gibt keinen Fehler, wenn Sie :new in einen leeren Puffer eingeben Es erfordert auch nicht, dass Sie FileType-Patern für jeden Dateityp erstellen, den Sie möglicherweise verwenden.

HINWEIS: mit "loadview" auf "BufNewFile" apears zu sein, was verwirrt MRU, eher sinnlos versuchen, Falten auf einem leeren Puffer ich gedacht haben würde?

2voto

fin Punkte 242

Ich hatte ein ähnliches Problem. Vielleicht müssen Sie das Verzeichnis erstellen, in dem die Daten gespeichert sind.

mkdir -p ~/.vim/view
chmod 0750 ~/.vim ~/.vim/view

2voto

Victoria Stuart Punkte 3912

Mit Neovim in Arch Linux bekam ich Fehlermeldungen, bis ich ein ! nach silent (silent!) angehängt habe. Hier ist mein ~/.vimrc Eintrag,

autocmd BufWrite * mkview
autocmd BufRead * silent! loadview

Details hier:

https://github.com/neovim/neovim/issues/7442#issuecomment-339752054

1voto

Fügen Sie dies oben in Ihre vimrc ein, um sicherzustellen, dass das viewdir vorhanden ist

let &viewdir=expand("$HOME") . "/.bk/.vim/viewdir"
if !isdirectory(expand(&viewdir))|call mkdir(expand(&viewdir), "p", 451)|endif

Dann dies in Ihrem Autocmds-Abschnitt:

autocmd BufWrite * mkview
autocmd BufNewFile,BufRead * silent loadview

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X