2016-06-23 31 views
5

go away and come back scriptから次の関数を使用して、終了してvimを開始してセッションを保存して読み込みます。これは基本的にすべての私の設定、バッファなどのファイルをsession.vimのファイルをvimに開いたディレクトリに保存します。セッション設定を保存する関数をultisnipsで素敵に再生する

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 
au VimEnter * nested :call LoadSession() 
au VimLeave * :call MakeSession() 

最近、私はultisnipsプラグインを追加しました。

"Snippet engine 
Plugin 'SirVer/ultisnips' 
"Snippets are separated from the engine. Add this if you want them: 
Plugin 'honza/vim-snippets' 

session.vimが作成され、その後にvimを開くと、このエラートレースが表示されます。これは編集しようとするとinsertモードで発生します。

".vim/vimrc" 287L, 9566C Error detected while processing /Users/sudobangbang/.vim/bundle/ultisnips/autoload/UltiSnips.vim: line 15: Traceback (most recent call last):

Error detected while processing /Users/sudobangbang/.vim/bundle/ultisnips/autoload/UltiSnips.vim: line 15: File "", line 1, in Press ENTER or type command to continue Error detected while processing /Users/sudobangbang/.vim/bundle/ultisnips/autoload/UltiSnips.vim: line 15: ImportError: No module named UltiSnips

Error detected while processing function UltiSnips#FileTypeChanged: line 1: Traceback (most recent call last): Error detected while processing function UltiSnips#FileTypeChanged: line 1: NameError: name 'UltiSnips_Manager' is not defined

Error detected while processing function UltiSnips#TrackChange: line 1: Traceback (most recent call last):

セッションを読み込むための関数を削除してもうまくいきます。また、ここには、その中に極端なことがあるsession.vimのすべての行があります。

inoremap <silent> <C-Tab> ^V^R=UltiSnips#ListSnippets()^V^M 
xnoremap <silent> ^V :call UltiSnips#SaveLastVisualSelection()^V^Mgvs 
snoremap <silent> ^V ^V^[:call UltiSnips#ExpandSnippet()^V^M 
snoremap <silent> <C-Tab> ^V^[:call UltiSnips#ListSnippets()^V^M 


set runtimepath=~/.vim,~/.vim/bundle/Vundle.vim,~/.vim/bundle/syntastic,~/.vim/bundle/nerdtree,~/.vim/bundle/vim-colorschemes,~/.vim/bundle/YouCompleteMe,~/.vim/bundle/supertab,~/.vim/bundle/ultisnips ,~/.vim/bundle/vim-snippets,~/.vim/bundle/ctrlp.vim,~/.vim/bundle/vim-go,~/.vim/bundle/vim-commentary,~/.vim/bundle/vim-surround,~/.vim/bundle/vim-fugitive,~/.vim/bundle/vim-unimpaired,~/.vim/bundle/v im-repeat,~/.vim/bundle/vim-airline,~/.vim/bundle/vim-airline-themes,~/.vim/bundle/gundo.vim,~/.vim/bundle/emmet-vim,~/.vim/bundle/html5.vim,~/.vim/bundle/vim-css-color,~/.vim/bundle/python-mode,~/.vi m/bundle/vim-flake8,~/.vim/bundle/vim-ruby,~/.vim/bundle/vim-endwise,~/.vim/bundle/vim-rails,~/.vim/bundle/vim-bundler,~/.vim/bundle/vim-rake,~/.vim/bundle/vim-ruby-refactoring,~/.vim/bundle/apidock.v im,~/.vim/bundle/blockle.vim,~/.vim/bundle/vim-rspec,~/.vim/bundle/javascript-libraries-syntax.vim,~/.vim/bundle/tern_for_vim,~/.vim/bundle/vim-javascript,/usr/local/share/vim/vimfiles,/usr/local/shar e/vim/vim74,/usr/local/share/vim/vimfil 

vimが正しくultisnipsをロードするようにセッション機能を変更するにはどうすればよいですか?

vim --version 

VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Jun 4 2016 11:48:12)
MacOS X (unix) version
Included patches: 1-1864
Compiled by Homebrew

+1

わからない、これは十分だろうが、しかし、プラグインが初期化された後でセッションをロードしようとします。あなたのプラグインマネージャーによっては、これを行うことは簡単です(単に 'LoadSession()'の呼び出しをvimrcの最後にするように)、難しく、不可能です。 :) –

+0

良い考え私はそれを試してみましょう –

+0

Windows GVimで 'gvim -S 'コマンドラインでセッションを読み込んでも同様のエラーが出ます – icc97

答えて

3

私は修正をしたが、一部の機能を犠牲にして。

私はセッションロード

au VimEnter * nested :call LoadSession() 

からこの行を削除し、手動で@Sato桂さんのコメントにセッションに

map <leader>l :call LoadSession()<CR> 

仮説をロードするためにキーマッピングを行ったが、有効であると思われます。
これで、すべてのプラグインがロードされたときにこの関数が呼び出される自動化部分に行くことができるかどうかを調べています。

0

答えはどれくらいあるのか分かりませんが、おそらく説明の多少です。 vim-session plugin README

Vim's :mksession command isn't really compatible with plug-ins that create buffers with generated content and because of this the vim-session plug-in includes specific workarounds for a couple of popular plug-ins:

から

は、私は、このより一般的なSO question on plugin issues with sessionsでのvim-セッションプラグインで指摘されました。

私は今、私はあなたがティム教皇のobsession.vimプラグインを使用する場合は、作成されるSession.vimファイルは通常の方法のいずれかで-S Session.vimsource Session.vimによってロードすることができ、UltiSnipsが再び動作する、修正を持っていることを、実際にはかなり確信しています。 readme

が違い(それはここでは少し文脈の外だとして、私は角括弧内のビットを追加しました)説明するかもしれない、この1行、次のとおりです。

  • [When saving the session] Don't capture options and maps. Options are sometimes mutilated and maps just interfere with updating plugins.
関連する問題