Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

Vim script ファイル検索

$
0
0

概要

findやdirを記述したsh,batファイルを置くだけで下位ディレクトリのファイルを簡単に検索できるようにしてみた
EditorConfigのようにディレクトリを遡って特定のファイルを探す発想


/Eccube/Controller/Admin/default/TemplateController.phpがカレントバッファの時に検索を実行すると下記のファイルを順番に探す

/Eccube/Controller/Admin/default/.lsfile
/Eccube/Controller/Admin/.lsfile
/Eccube/Controller/.lsfile
/Eccube/.lsfile
/.lsfile

見つけた.lsfileから検索ワードに一致するファイルパスをgrepやfindstrで抜き出してQuickFixに表示する
.lsfileが見つからずにmake_lsfile.(sh|bat)が見つかった場合は実行してlsfileを作成するか問い合わせをする

動作確認

OSAPP◯✗
CentOS7.5Neovim 0.2.2
macOS High SierraMacVim 8.0
Windows10KaoriYa Vim 8.0

イメージ

検索結果をQuickFixに読み込み

osx kekka.png

sh,batの実行

ファイル検索時に.lsfileが見つかない時にmake_lsfile.shかmake_lsfile.batがカレントディレクトリとルートの間にある場合に問い合わせをする

#linux
execute? [!cd "/Eccube/"; /bin/bash '/Eccube/make_lsfile.sh']

#Windows
execute? [!D: & cd "D:\Eccube\" & "D:\Eccube\make_lsfile.bat"]

win.png

検索、再作成

検索

:FS `検索文字列`

もしくは

:QFSFileSearch
   >Enter filename:`検索文字列`

.lsfile作成、再作成

make_lsfile.(sh|bat)を親ディレクトリを遡って探して実行問い合わせ

:QFSMakeList

検索文字列に関して

IDEのファイル検索に近いフィーリングで検索できるよう置換している

if has('win32')letl:grep_cmd ='!findstr'elseletl:grep_cmd ='!\grep -G -i -s -e'endifletl:searchword = substitute(a:searchword,'\([^\.]\)\*','\1.\*','g')letl:searchword = substitute(l:searchword,' ','.*','g')

sh,batサンプル

sh .git以外

\find `pwd`-type d -name lib -prune-o-not-iwholename'*/.git/*'-type f -print> .lsfile

sh 拡張子で

\find `pwd`-type d -name lib -prune-o-type f \(-name\*.php -o-name\*.js -o-name\*.css \)-print> .lsfile

bat .git以外

dir /s /b /a-d * | findstr /i /v "\\\.git\\" > .lsfile

bat 拡張子で

dir /s /b /a-d *.php *.twig *.js *.css  > .lsfile

**入れておいた方が安心かも

sh

cd$(dirname$(readlink-f$0))

bat

cd %~dp0..\

.vimrc

letg:qsf_lsfile='.lsfile'letg:qsf_maxline=200letg:qsf_focus_quickfix=1letg:qsf_mkfile='make_lsfile.bat'letg:qsf_mkfile='make_lsfile.sh'"noremap <C-F12> :<C-u>QFSFileSearch<CR>

GitHub

https://github.com/naoyuki1019/vim-quickfilesearch2

ほぼ同じ作りでctagの実行と:set tagsを楽にするやつ
https://github.com/naoyuki1019/vim-autosettags


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>