Je nach meiner Aufgabe in Vim habe ich mehrere Registerkarten geöffnet.
Wie kann ich verschiedene Sitzungen zur späteren Verwendung speichern?
Je nach meiner Aufgabe in Vim habe ich mehrere Registerkarten geöffnet.
Wie kann ich verschiedene Sitzungen zur späteren Verwendung speichern?
Beachten Sie, dass :mksession die Änderungen an den Dateien, die Sie vorgenommen haben, nicht speichern wird. Ich machte den Fehler, vim nach dem Speichern der Sitzung zu schließen, in der Annahme, dass ich von dort aus weitermachen würde. Aber als ich die Sitzung das nächste Mal öffnete, waren die Änderungen, die ich an den Dateien vorgenommen hatte, weg.
Wenn Sie NERDTree als Datei-Explorer/Dash verwenden, würde ich empfehlen xolox/vim-session plugin anstelle des eingebauten Befehls :mksession. Aus irgendeinem Grund schlägt :mksession bei der Wiederherstellung von NERDTree-Puffern fehl. Das mag bei Ihnen anders sein, aber ich dachte, ich teile meine Erfahrung.
Wenn Sie den Prozess ohne die Verwendung von Plugins automatisieren möchten, können Sie Folgendes verwenden Geh weg und komm zurück de Vim Tipps Wiki .
Jedes Mal, wenn Sie Vim beenden, speichert er die aktuelle Sitzung unter ~/.vim/sessions
und laden Sie es wieder, sobald Vim geöffnet ist. Es basiert auch auf dem aktuellen Pfad, so dass Sie, wenn Sie Vim von verschiedenen Verzeichnissen aus öffnen, verschiedene Sitzungen haben werden, was ziemlich nützlich ist, wenn Sie an verschiedenen Projekten arbeiten.
Bearbeiten Sie einfach Ihre ~/.vimrc
Datei und fügen Sie Folgendes hinzu:
function! MakeSession()
let b:sessiondir = $HOME . "/.vim/sessions" . getcwd()
if (filewritable(b:sessiondir) != 2)
exe 'silent !mkdir -p ' b:sessiondir
redraw!
endif
let b:filename = b:sessiondir . '/session.vim'
exe "mksession! " . b:filename
endfunction
function! LoadSession()
let b:sessiondir = $HOME . "/.vim/sessions" . getcwd()
let b:sessionfile = b:sessiondir . "/session.vim"
if (filereadable(b:sessionfile))
exe 'source ' b:sessionfile
else
echo "No session loaded."
endif
endfunction
" Adding automatons for when entering or leaving Vim
au VimEnter * nested :call LoadSession()
au VimLeave * :call MakeSession()
Selbst für einen Anfänger ist dieses Skript etwas einfach zu verstehen und anzupassen.
Bitte beachten Sie dieses Skript funktioniert nur auf Unix-Systemen (MacOS/Linux), es muss für Windows angepasst werden.
UPDATE: Hinzufügen von 0xc0de können Sie die VimEnter
Zeile für diese, wenn Sie wollen, dass Vim die Sitzung lädt nur wenn keine Argumente angegeben werden :
if(argc() == 0)
au VimEnter * nested :call LoadSession()
endif
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.