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

mabulog

このブログは、mabuの平凡な日常を淡々と描く物です。 過度な期待はしないでください。 あと、部屋は明るくして、 モニターから3メートルは離れて見やがってください。

Used ctags for Vim

Infomation

プロジェクト単位でtags管理の記事を追加しました。合わせてご確認下さい。

背景 Background

Vimに関わらず開発を進める上で、必要不可欠です。
NeoCompleteの前哨戦の位置づけです。

目標 Goal

  • 開いたファイルタイプを判断し、使用するtagsの切替可能である事
  • NeoBundle定義(vim-ruby 等専用プラグイン)でも同様のロジックが使える事

環境 Environment

手順 Operation

$ ctags --version
Exuberant Ctags 5.8, Copyright (C) 1996-2009 Darren Hiebert
  Compiled: Nov 11 2010, 03:54:52
  Addresses: <dhiebert@users.sourceforge.net>, http://ctags.sourceforge.net
  Optional compiled features: +wildcards, +regex
$ cd
$ vi .ctags
--append=yes
--recurse=yes
--langmap=PHP:+.ctp+.inc
--PHP-kinds=cfd

$ ctags --list-maps
....
PHP      *.php *.php3 *.phtml *.ctp+ *.inc
....
Ruby     *.rb *.ruby
....

$ ctags --list-kinds=PHP
c  classes 
i  interfaces  [off]
d  constant definitions 
f  functions 
v  variables  [off]
v  variables  [off]
j  javascript functions  [off]
j  javascript functions  [off]
j  javascript functions  [off]

$ ctags --list-kinds=Ruby
c  classes
f  methods
m  modules
F  singleton methods

$ mkdir -p .vim/tags
$ vi .vimrc
" vimproc
┼────────────────────────────────
" vim-tags
"{{{
NeoBundle 'szw/vim-tags'
let g:vim_tags_auto_generate = 1
au BufNewFile,BufRead *.php,*.ctp,*.inc let g:vim_tags_project_tags_command = "ctags --languages=PHP -f $HOME/.vim/tags/php.tags `pwd` 2>/dev/null &"
au BufNewFile,BufRead *.php,*.ctp,*.inc set tags+=$HOME/.vim/tags/php.tags
au BufNewFile,BufRead *.rb              let g:vim_tags_project_tags_command = "ctags --languages=Ruby -f $HOME/.vim/tags/rb.tags"
let g:vim_tags_gems_tags_command = "ctags -f $HOME/.vim/tags/.Gemfile.lock.tags `bundle show --paths` 2>/dev/null &"
au BufNewFile,BufRead *.rb  set tags+=$HOME/.vim/tags/rb.tags,$HOME/.vim/tags/.Gemfile.lock.tags
"}}}

今後 To be continue.

ベースは作成完了したので、不具合がないか、不足がないかはおいおい調査する。

参考サイト Reference