本文介绍了使会话设置保存功能与ultisnips配合使用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在从使用以下函数,请返回并返回脚本以保存并加载我退出并启动 vim 时的会话.它基本上将我的所有设置,文件保存在缓冲区等中的打开了vim的目录中的 session.vim 文件中.

I'm using the following function from go away and come back script to save and load sessions when I quit and start vim. It basically saves all my settings, files in buffers etc in session.vim file in the directory where I opened vim.

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 插件.

Recently I added ultisnips plugin.

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

现在,当创建 session.vim 并在之后打开vim时,我得到了此错误跟踪.当我也尝试编辑时,这会在插入模式下发生.

Now when session.vim is created and I open vim after that, I get this error trace. This happens in insert mode when I try to edit also.

在处理/Users/sudobangbang/.vim/bundle/ultisnips/autoload/UltiSnips.vim时检测到错误:第15行:文件",第1行,在按ENTER或键入命令以继续处理/Users/sudobangbang/.vim/bundle/ultisnips/autoload/UltiSnips.vim时检测到错误:第15行:ImportError:没有名为UltiSnips的模块

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

处理函数UltiSnips#FileTypeChanged时检测到错误:第1行:追溯(最近一次通话):处理函数UltiSnips#FileTypeChanged时检测到错误:第1行:NameError:未定义名称UltiSnips_Manager"

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

处理函数UltiSnips#TrackChange时检测到错误:第1行:追溯(最近一次通话结束):

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

如果我删除了用于加载会话的功能,则可以正常工作.另外,这是 session.vim 中的所有行,其中都包含了结尾.

If I remove functions for loading sessions, It works fine. Also here are all the lines in session.vim which has ultisnips in it.

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 ?

How can I change my session function so that vim loads ultisnips correctly?

vim --version

推荐答案

我进行了修复,但牺牲了一些功能.

I made a fix but while sacrificing some functionality.

我从会话加载中删除了这一行

I removed this line from session loading

au VimEnter * nested :call LoadSession()

并进行了密钥映射以手动加载会话

and made a key mapping to manually load the session

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

@Sato Katsura的评论中的假设似乎是有效的.
现在,我正在研究是否可以将其自动化,从而在加载所有插件时调用此函数.

Hypothesis in @Sato Katsura's comment seem to be valid.
Now I'm researching if I can go to automated part with this getting this function called when all plugins are loaded.

这篇关于使会话设置保存功能与ultisnips配合使用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-30 07:21