Vim Ctagsを実行し自動でセットするプラグインを書いた
暇つぶし....いえ、Vim scriptの勉強のために思いついた事を書いてみた
IDEのコード解析力には全然及ばないがないよりはマシ
概要
Command | operation |
---|---|
:AST | ディレクトリを遡って.tagsファイルを探して:set tagsをする |
:ASTMakeTags | ディレクトリを遡って.tags.(sh or bat)を探し実行する |
動作確認
OS | APP | res |
---|---|---|
CentOS7.5 | Neovim 0.2.2 | ◯ |
macOS High Sierra | MacVim 8.0 | ◯ |
macOS High Sierra | Neovim 0.2.2 | ◯ |
Windows10 | KaoriYa Vim 8.0 | ◯ |
挙動
- :AST
/Eccube/Controller/Admin/default/TemplateController.phpがカレントバッファの時に実行すると下記のファイルを順番に探す
- :ASTMakeTags
.shのみを探す
/Eccube/Controller/Admin/default/.tags /Eccube/Controller/Admin/default/.tags.sh /Eccube/Controller/Admin/.tags /Eccube/Controller/Admin/.tags.sh /Eccube/Controller/.tags /Eccube/Controller/.tags.sh /Eccube/.tags /Eccube/.tags.sh /.tags /.tags.sh
.shの実行
タグを作成するスクリプトを実行する場合は問い合わせをする親切さがある
無言で本当に実行されたかどうかわからないような作りは嫌い
# linux Execute? [!cd "/Eccube/"; /bin/bash '/Eccube/.tags.sh'] # windows Execute? [!D: & cd "D:\Eccube\" & "D:\Eccube\.tags.bat"]
設定
let g:ast_tagsfile = '.tags' " タグファイル名 let g:ast_autoset = 1 " 1 OnBuffRead時にタグを探すか let g:ast_append = 1 " 1 default [set tags+=]とする let g:ast_setmsg = 1 " 1 default set tagsした事echoで通知 " タグ作成バッチのデフォルト設定(プラグイン内の記述 if '' == ('g','ast_mkfile','') if has("win32") || has("win95") || has("win64") || has("win16") let g:ast_mkfile = '.tags.bat' else let g:ast_mkfile = '.tags.sh' endif endif
タグ作成サンプル
\ctags -R --exclude=.git --exclude=logs --languages=PHP --langmap=PHP:+.inc,PHP:+.tpl --php-kinds=-j -f .tags .