Writing Appropriately

職務経歴

Vim Ctagsを実行し自動でセットするプラグインを書いた

暇つぶし....いえ、Vim scriptの勉強のために思いついた事を書いてみた

IDEのコード解析力には全然及ばないがないよりはマシ

開発はIntelliJ使ってます Vim は趣味です

概要

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 .

GitHub

github.com