vim-users.jp

Hack #96: あらゆる言語に対してキーワードの補完を有効にする

Posted at 2009/11/01
このエントリーをはてなブックマークに追加

問題

Vim 7からはユーザー独自の入力補完 (:help new-omni-completion) を定義できるようになりました。 これを利用した各種言語用の高度な入力補完が利用可能になっており、 標準では以下の言語用の補完が用意されています。

  • C
  • CSS
  • HTML
  • JavaScript
  • PHP
  • Python
  • Ruby
  • SQL
  • XML

例えばHTMLの場合は下図のように文脈による高度な補完が可能です。

Vim標準添付のHTML用補完の実行例

しかし他の言語についてはこのような入力補完は用意されていません。 HTMLのような高度なものでなくとも、 せめて予約語程度くらいは補完できてほしいものです。

解決方法

Vimは標準で500種類以上の言語に対するシンタックスハイライトが可能です。 シンタックスハイライト用の定義の中には 予約語のようなキーワードに関する情報が含まれていますので、 それを利用した入力補完が考えられます。

これには以下の内容をvimrcに追加します。

" 注意: この内容は:filetype onよりも後に記述すること。
autocmd FileType *
\   if &l:omnifunc == ''
\ |   setlocal omnifunc=syntaxcomplete#Complete
\ | endif

これにより、特に入力補完が用意されていないあらゆる言語に対して 各種キーワードの補完ができるようになります。

例えばScheme用の入力補完は標準で用意されていませんが、 上記の設定を行なうことで以下のように補完を行なうことができます。

Scheme編集中のキーワード補完の様子

参考資料

kana

もどる
blog comments powered by Disqus