読者です 読者をやめる 読者になる 読者になる

snippetをautocomplpopで補完する

id:ns9tksさんが作られているautocomplpopのv2.11以降でsnipMateと連携したsnippet補完が実装されています。これはLifechagingですね。

インストール方法

autocomplpopの設定は以下の通り。

" ============================================
" autocomplpop.vim 
" ============================================
let g:acp_enableAtStartup = 1 
let g:acp_mappingDriven = 0 
let g:acp_ignorecaseOption = 1 
let g:acp_completeOption = '.,w,b,u,t,k'
let g:acp_completeoptPreview = 0 
let g:acp_behaviorUserDefinedPattern = '\k$'
let g:acp_behaviorKeywordCommand = "\<C-n>"
let g:acp_behaviorKeywordLength = 2 
let g:acp_behaviorFileLength = 0 
let g:acp_behaviorRubyOmniMethodLength = 1 
let g:acp_behaviorRubyOmniSymbolLength = 1 
let g:acp_behaviorPythonOmniLength = 1 
let g:acp_behaviorXmlOmniLength = 1 
let g:acp_behaviorHtmlOmniLength = 1 
let g:acp_behaviorCssOmniPropertyLength = 1 
let g:acp_behaviorCssOmniValueLength = 1 
let g:acp_behaviorSnipmateLength=1

snipMate.vimに以下を追加。

fun! GetSnipsInCurrentScope()
	let snips = {}
	for scope in [bufnr(&#39;%&#39;)] + split(&ft, &#39;\.&#39;) + [&#39;_&#39;]
		call extend(snips, get(s:snippets, scope, {}), &#39;keep&#39;)
		call extend(snips, get(s:multi_snips, scope, {}), &#39;keep&#39;)
	endfor
	return snips
endf

使い方

使い方は簡単で、「大文字」をいれるとsnippetが補完候補になるので、Tabでsnippet選択してEnter。後はTabでsnippetを展開していきます。

所感

snippet系の問題は、「snippet名を覚えられない」ので結局つかわなくなるということだったんですが、この問題が解決され、snipMateの補完が使えるようになりました。

snipMateでsnippetの書きやすさが改善され、autocomplpopsnipMateの連携でsnippet補完が実現でき、今まで不自由に思っていた事が殆ど改善されました。

cool!