首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ultisnips使会话设置保存功能发挥良好

使用ultisnips使会话设置保存功能发挥良好
EN

Stack Overflow用户
提问于 2016-06-23 06:59:24
回答 2查看 739关注 0票数 5

当我退出并启动走开,回来剧本时,我使用走开,回来剧本中的以下函数来保存和加载会话。它基本上将所有设置、缓冲区中的文件等保存在我打开vim的目录中的session.vim文件中。

代码语言:javascript
复制
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插件。

代码语言:javascript
复制
"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”287 L,9566C在处理/Users/sudobangbang/.vim/bundle/ultisnips/autoload/UltiSnips.vim:第15行时检测到的错误:回溯(最近一次调用): 在处理/Users/sudobangbang/.vim/bundle/ultisnips/autoload/UltiSnips.vim:时检测到的错误第15行:文件"",第1行,在按ENTER或键入命令继续处理/Users/sudobangbang/.vim/bundle/ultisnips/autoload/UltiSnips.vim:时检测到的错误第15行: ImportError:没有模块名为UltiSnips 在处理函数UltiSnips#FileTypeChanged时检测到错误:第1行:跟踪(最近一次调用):在处理函数UltiSnips#FileTypeChanged时检测到错误:第1行: NameError:名称“UltiSnips_Manager”未定义 在处理函数UltiSnips#TrackChange时检测到错误:第1行:跟踪(最近一次调用):

如果我删除加载会话的函数,它可以正常工作。这里也是所有的线在session.vim,其中有溃疡病。

代码语言:javascript
复制
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

代码语言:javascript
复制
vim --version

VIM - Vi IMproved 7.4 (2013年8月10日,汇编2016年6月4日11:48:12) MacOS X (unix)版本 包括补丁:1-1864年 由Homebrew编辑

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-06-24 07:14:50

我做了一个修复,但同时牺牲了一些功能。

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

代码语言:javascript
复制
au VimEnter * nested :call LoadSession()

,并进行了键映射以手动加载会话。

代码语言:javascript
复制
map <leader>l :call LoadSession()<CR>

@Sato Katsura的评论中的假设似乎是正确的。

现在,我正在研究是否可以使用这个自动部分,在加载所有插件时调用这个函数。

票数 3
EN

Stack Overflow用户

发布于 2017-07-20 01:03:42

我用蒂姆·波普的obsession.vim插件修复了这个问题,然后创建的Session.vim文件可以按照通常的方式加载,无论是通过-S Session.vim还是source Session.vim,UltiSnips都可以再次工作。

自述文件中,这一行可能解释了不同之处:

  • 保存会话时,不要捕获选项和映射。选项有时被肢解,地图只会干扰插件的更新。

这里有一个解释:

来自vim-会话插件自述

vim的:mksession命令与创建带有生成内容的缓冲区的插件并不完全兼容,正因为如此,vim会话插件包含了一些流行插件的特定解决方案:

我被这个更通用的因此,有关插件问题的讨论指向了vim会话插件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37984348

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档