Walk してファイル検索表示! (denops.vim)
またまた denops.vim ネタ。
ファイルを walk
して表示、 filter
するやつ。
Denops Walk -> dps-walk
インストール
インストールは dein.vim だとこんな感じ。
- dein.toml
[[plugins]]
repo = 'vim-denops/denops.vim'
[[plugins]]
repo = 'yukimemi/dps-walk'
hook_add = '''
let g:walk_debug = v:false
" let g:walk_bufsize = 500
" let g:walk_skips = ["\\.git", "\\.svn", "\\.hg", "\\.o$", "\\.obj$", "\\.a$", "\\.exe~?$", "tags$"]
nnoremap <space>wa <cmd>DenopsWalk<cr>
nnoremap <space>ws <cmd>DenopsWalk --path=~/src<cr>
nnoremap <space>wD <cmd>DenopsWalk --path=~/.dotfiles<cr>
nnoremap <space>wc <cmd>DenopsWalk --path=~/.cache<cr>
nnoremap <space>wm <cmd>DenopsWalk --path=~/.memolist<cr>
nnoremap <space>wd <cmd>DenopsWalkBufferDir<cr>
'''
依存として、 denops.vim が必要。(もちろん Deno も。)
設定は特に不要だが、上記コメントアウトしているように追加設定は可能。
g:walk_debug
デバッグログ出力有無。デフォルト: v:false
調査で必要な時 v:true
にすると、ログが echomsg
される。
g:walk_bufsize
walk
して見つかったファイルを描画する単位。デフォルト 500 ファイルずつ溜め込んで表示する。
フィルターに文字打ち込むと、その時点の見つかったファイルで即時表示される。
g:walk_skips
スキップする正規表現のリスト。
デフォルトは上記記載の通り。変更したい場合は設定する。
deno.land/std@0.92.0/fs/walk.ts - deno doc の引数 skip
に指定される。
DenopsWalk
カレントディレクトリ配下のファイルを一覧表示する。
--path
で walk
始めるルートパスを指定できる。指定しない場合はカレントディレクトリとなる。
また、引数に文字列を指定することで予め検索対象を絞ることができる。
指定しなかった場合は Search for pattern:
というプロンプトが出るのでそこで入力する。
全部対象にしたい場合は何も入力せずにそのまま Enter。
~/src
配下で vim
がファイル名につくものを検索する例。
:DenopsWalk --path=~/src vim
DenopsWalkBufferDir
バッファのディレクトリ配下のファイルを一覧表示する。
不具合について
なぜか Vim
では、 startinsert!
が効かず、フィルターに入っても初期状態はノーマルモードのままとなってしまう・・・。
手動で i
or a
してインサートモードに入る必要あり・・・。
また、他にも、リストを毎回 deletebufline
して、 setbufline
しているからチカチカする・・・。
うまく非同期に update する方法はないだろうか・・・。
Discussion