回答
你想要的東西像
:mksession ~/mysession.vim
後來的後來,你可以來源,VIM文件,你就會有你的舊會話回:
:source ~/mysession.vim
或打開VIM和-S選項:
$ vim -S ~/mysession.vim
您可能希望在vimrc中設置這些會話選項。尤其是當你保存了會話後你改變了你的vimrc時,選項很煩人。
set ssop-=options " do not store global and local values in a session
set ssop-=folds " do not store folds
太棒了!昨天我遇到了這個問題。非常感謝! – Jogusa 2009-10-31 16:56:18
請注意:mksession不會保存對所做文件的更改。假設我會從這裏開始,保存會話後,我犯了關閉vim的這個錯誤。但是,下次我打開會話時,我對文件所做的更改就消失了。
這應該帶有與':mksession'有關的任何答案。 – 2014-02-25 18:31:13
是的,你可能想要按照':wqa' – 2015-03-11 16:36:42
或者只是':xa'少一個按鍵。好極了! – robin 2015-07-09 05:20:19
如果您使用NERDTree作爲文件資源管理器/短劃線,我建議使用xolox/vim-session plugin而不是內置的mksession命令。出於某種原因,:mksession無法恢復NERDTree緩衝區。你的里程可能會有所不同,但我想我會分享我的經驗。
對於macvim,我需要確保:'let g:nerdtree_tabs_open_on_gui_startup = 0'和'let g:nerdtree_tabs_open_on_new_tab = 0'來使xolox/vim-session正常工作。 – Nianliang 2014-09-01 06:40:05
有這個任務vim-startify它處理像最近打開的文件等許多其他的東西非常有用的插件,它有一個非常簡單的界面了。
我使用它,因爲幾天,直到現在它的工作完美。希望它可以幫助你。
有這樣好的插件調用vim-session。它非常強大。要安裝它:
cd ~/.vim/bundle
git clone https://github.com/xolox/vim-session.git
我在.vimrc
文件映射到它的功能是這樣的:
nnoremap <leader>so :OpenSession
nnoremap <leader>ss :SaveSession
nnoremap <leader>sd :DeleteSession<CR>
nnoremap <leader>sc :CloseSession<CR>
現在只需鍵入<leader>ss
,你會看到這樣的命令
:SaveSession
現在添加會話的名稱
:SaveSession namesession
就是這樣。
當您關閉的Vim並重新打開它只是做
:OpenSession
,你會看到你的會議開幕。
有很多其他的配置在您.vimrc
文件中添加例如參見文檔:
let g:session_directory = "~/.vim/tmp/session" // the directory must be created before the sessions will be saved there
let g:session_autoload = "no" // automatic reload sessions
let g:session_autosave = "no" // autosave
let g:session_command_aliases = 1
有在YouTube上的好tutorial。
如果您希望在不使用任何插件的情況下自動執行此過程,則可以使用Vim Tips Wiki中的Go away and come back。
每次退出Vim時,它都會將當前會話保存在~/.vim/sessions
之下,並在Vim打開後重新加載它。它也是基於你當前的路徑,所以如果你從不同的目錄打開Vim,你將有不同的會話,這對於處理不同的項目非常有用。
只需編輯~/.vimrc
文件,並添加以下內容:
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()
這個腳本是有些容易理解和定製。
請注意這個腳本只適用於Unix系統(MacOS/Linux),它需要適應在Windows上工作。
UPDATE:添加0xc0de的建議,你可以,如果你想Vim載入會議更換VimEnter
行這些的只有提供沒有參數:
if(argc() == 0)
au VimEnter * nested :call LoadSession()
endif
你可以存儲任何你想要的會話。
例:
:mksession! D:/session.ses
此存儲在d驅動器會話。
這可以通過在任何VIM文件的輸入
:so D:/session.ses
打開。
下面是唯一的conf。這真的對我有用。我把它從here中拿出來,在那裏你也可以採取更完整/複雜的版本。
set viewoptions+=cursor,folds,slash,unix
set viewoptions-=options
augroup vimrc
autocmd BufWritePost *
\ if expand('%') != '' && &buftype !~ 'nofile'
\| mkview
\| endif
autocmd BufRead *
\ if expand('%') != '' && &buftype !~ 'nofile'
\| silent loadview
\| endif
augroup END
由於@mathielo 按照實施例從@mathielo,我添加了以下行。vimrc裏保存活動會話(如果有的話):
au VimLeave * if this_session != "" | exe "mksession! ".this_session
如果你想要把更多的線,你需要使用ENDIF:
au VimLeave * if v:this_session != ""
au VimLeave * exe "mksession! ".this_session
au VimLeave * endif
你只需要在vim保存一個新的會話
:mks [Session filename]
,並開始與後
$ vim -S [Session filename]
vim將啓動會話,並且您不必擔心在每次關閉vim時保存會話。
如果您沒有活動會話,.vimrc將不會執行任何操作。像之前一樣。
這就是我一直在尋找的!再次感謝@mathielo!
這也是我一直在尋找的東西。太好了!我不記得有多少次我失去了我的會議做':q'而不是':bd' ...謝謝! – 2016-09-20 17:40:37
個人而言,我只是包裹在蒂姆教皇Obsession插件,以便確定一個sessiondir
,避免鍵入路徑:如果您打算爲這個項目只有1個會議
let g:sessiondir = $HOME . ".vim/sessions"
command! -nargs=1 MkSession call MkSession(<f-args>)
function! MkSession(sessionfile)
if !isdirectory(g:sessiondir)
call mkdir(g:sessiondir, "p")
endif
exe 'Obsession' g:sessiondir . '/' . a:sessionfile
endfunction
command! -nargs=1 LoadSession call LoadSession(<f-args>)
function! LoadSession(sessionfile)
let a:sessionpath = g:sessiondir . a:sessionfile
if (filereadable(a:sessionpath))
exe 'source ' a:sessionpath
else
echo "No session loaded."
endif
endfunction
只是做
:mks
這將在當前目錄中創建Session.vim
文件,然後打開會話(來自同一目錄):
vim -S
如果更改了會議,並希望將其保存:
:mks!
這節省了會議,而不是文件本身!
如果計劃有多個會話,我更喜歡將它們保存在隱藏文件在項目目錄:
:mks .session-name.vim
要打開它(從同一目錄):
vim -S .session-name.vim
保存會話:
:mks! .session-name.vim
由於會話保存在隱藏文件,以查看他們不要忘了-a
ls -a
管理多個會話(在每個目錄/回購的基礎上),我最近從VIM會話切換插件到vim-workspace。它的會話管理相對簡單,工作得很好。
由於這是我在Google上爲我(也可能是其他人)的第一次關於如何在Vim中處理會話的命中,我決定在@ mathielo的答案中增加一點關於如何自動完成此操作的答案。
我喜歡他的代碼,但添加「只有沒有參數」解決方案似乎有點缺乏。這是我的修改版本:
function! MakeSession(overwrite)
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'
if a:overwrite == 0 && !empty(glob(b:filename))
return
endif
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
if(argc() == 0)
au VimEnter * nested :call LoadSession()
au VimLeave * :call MakeSession(1)
else
au VimLeave * :call MakeSession(0)
endif
這裏值得注意的變化是可選的覆蓋。如果您打開Vim而沒有選項,它將打開任何現有會話並覆蓋您離開時所做的更改。如果用選項打開Vim,只會創建一個新的會話(如果不存在),這意味着您可以在不覆蓋會話的目錄中打開單個文件。然後,您可以打開Vim,而無需選擇運行會話。如果不存在會話,則會創建一個新會話。
- 1. Vim的 - sessionman.vim恢復會話
- 2. 保存和恢復UIWebView瀏覽會話
- 3. 保存的會話值恢復爲空
- 4. vim保存和恢復windows歷史
- 5. 如何在python中保存和恢復多個變量?
- 6. 如何保存和恢復服務器中的所有用戶會話
- 7. 保存和恢復的Watir會議
- 8. 如何恢復PHP會話?
- 9. 如何恢復會話 - ejabberd
- 10. 保存並恢復vim狀態
- 11. 如何保存和恢復ON_ERROR_STOP的值?
- 12. 如何保存和恢復特定IntelliJ項目的終端會話?
- 13. 如何在NHibernate會話中保存兩個相同的對象?
- 14. Vim,NERDtree在會話還原中沒有恢復
- 15. 保存和恢復的HTML
- 16. 如何保存和恢復PyBrain培訓?
- 17. 如何保存和恢復ResourceBase?
- 18. 如何保存和恢復表單?
- 19. 如何保存和恢復Webview狀態?
- 20. 在vim中恢復未保存的更改
- 21. 保存/恢復緩衝區不工作在vim
- 22. 如何在pyqt中正確保存和恢復複選框
- 23. 在rails中保存和恢復關聯
- 24. 恢復vim會話不開放[沒有名字]緩衝區
- 25. 如何在會話變量中保存多個值
- 26. 將框架高度保存在cookie中並恢復下一個會話
- 27. 如何保存和恢復可可/石英中的多個上下文?
- 28. ARKit恢復會話
- 29. 恢復會話EJB
- 30. 會話未恢復
@ldigas我認爲在這裏找到問題比使用舊的學校論壇或終端文檔或天堂禁止更容易在這裏找到問題(與大字體,很棒的格式...),「人」頁 – puk 2012-01-10 00:19:00
@ puk - 也沒有太多的格式。你可以在Vim中更改字體:) – Rook 2012-01-10 20:44:45
@ldigas我個人一直都很害怕他們沒有足夠愚蠢的東西。就像linux中的其他所有東西一樣,它有一個陡峭的學習曲線。 – puk 2012-01-10 22:35:40