vim ultisnips 如何配置,安装后发现不能正常补全。
Plugin 'SirVer/ultisnips'
Plugin 'honza/vim-snippets'
下面是我的配置
let g:UltiSnipsExpandTrigger = "<c-j>"
let g:UltiSnipsJumpForwardTrigger = "<c-b>"
let g:UltiSnipsJumpBackwardTrigger="<c-z>"
但是使用时却不能根据文件自动补全
.vim 目录结构为
├── bundle
│ ├── Emmet.vim
│ ├── Vundle.vim
│ ├── ultisnips
│ │ ├── COPYING.txt
│ │ ├── ChangeLog
│ │ ├── README.md
│ │ ├── UltiSnips
│ │ ├── ...
│ │ ├── syntax
│ │ └── utils
│ └── vim-snippets
│ ├── LICENSE
│ ├── ...
│ ├── UltiSnips
│ └── snippets
谢谢
snippet python vim youcompleteme
Answers
这个插件很简单,给你看我的设置好了:
NeoBundle 'SirVer/ultisnips'
let g:UltiSnipsSnippetDirectories=['UltiSnips']
let g:UltiSnipsSnippetsDir = '~/.vim/UltiSnips'
let g:UltiSnipsExpandTrigger = '<Tab>'
let g:UltiSnipsListSnippets = '<C-Tab>'
let g:UltiSnipsJumpForwardTrigger = '<Tab>'
let g:UltiSnipsJumpBackwardTrigger = '<S-Tab>'
哦,对了,我想起来一件事情。
g:UltiSnipsSnippetDirectories
选项的值必须是文件夹名称(可以是多个),并且这个(些)文件夹必须存在于
runtimepath
中的某一项之下。比如说
~/.vim
就是
runtimepath
中的一项。默认的文件夹
UltiSnips
会自动创建,如果你换了,那你必须保证这个文件夹是存在的。我看你换成了
snippets
,如果你事先安装过 SnipMate,那么
snippets
才会存在,否则你得自行创建。
g:UltiSnipsSnippetDirectories
选项的作用是指定 UltiSnips 的搜索路径,你找不到 snippets 的原因大概就是这样。
解释为什么错了真的很累,换个角度告诉你,如果你做对了是什么样子的:
-
let g:UltiSnipsSnippetsDir = '~/.vim/UltiSnips'
这个设置会确保 snippets 都在指定的文件夹内(你自己编辑的也会保存在这里,如果你用了第三方的并且还要进一步编辑,你得确保都复制到了这里)
-
let g:UltiSnipsSnippetDirectories = ['UltiSnips']
这个设置会告诉 UltiSnips 去哪儿找 snippets,可以是多个地方,所以如果你用第三方的 snippets,和上一个设置不在一起的话,你得把它们的路径放这里。要注意的是,这个数组里的每一项都必须在runtimepath
其中的一项之下,所以不确定的话,先看看runtimepath
的值。
-
若上述两点都做对了,那么在任意类型文件打开的前提下输入
:UltiSnipsEdit
都会打开对应类型的 snippets,能不能用,哪些能用,一看便知。