回答:
ここに私のセットアップの関連する部分があります:
ワイルドメニューを有効にし、
set wildmenu
filename-completionがこれらのファイルとディレクトリをスキップするようにします。
set wildignore+=*.swp,*.bak
set wildignore+=*.pyc,*.class,*.sln,*.Master,*.csproj,*.csproj.user,*.cache,*.dll,*.pdb,*.min.*
set wildignore+=*/.git/**/*,*/.hg/**/*,*/.svn/**/*
set wildignore+=*/min/*
set wildignore+=tags,cscope.*
set wildignore+=*.tar.*
大文字と小文字を区別せず、
set wildignorecase
ファイルを一覧表示し、ユーザーにワイルドメニューで選択させる
set wildmode=list:full
現在のファイルのディレクトリと作業ディレクトリの下のすべてのディレクトリをVimに追加しますpath
。
set path=.,**
警告!パスオプションは非常に便利です。上記の値— .,**
—は機能しますが、使用する言語には標準ライブラリがありません。適切な値はに完全に依存し、あなたのニーズ。
:find
マッピングの束、大文字のバリアントは現在のファイルのディレクトリから検索を開始し、パフォーマンスを向上させます。
nnoremap ,f :find *
nnoremap ,F :find <C-R>=expand('%:p:h').'/**/*'<CR>
nnoremap ,s :sfind *
nnoremap ,S :sfind <C-R>=expand('%:p:h').'/**/*'<CR>
nnoremap ,v :vert sfind *
nnoremap ,V :vert sfind <C-R>=expand('%:p:h').'/**/*'<CR>
そして、これはどのように見えるかです:
見る :h :command-completion-custom
最後の例を適応させて、gitによってリストされたファイルのみを完成させることができます。
command! -nargs=1 -bang -complete=customlist,GitFindComplete
\ GitFind edit<bang> <args>
function! GitFindComplete(ArgLead, CmdLine, CursorPos)
let search_pattern = "*" . a:ArgLead . "*"
let shell_cmd = "git ls-files " . shellescape(search_pattern)
return split(system(shell_cmd), "\n")
endfunction
これで、オートコンプリートを使用して、gitでリストされたファイルを開くことができます。
:GitFind ome_f<Tab>
カスタム補完関数では、補完できるファイルを一覧表示する以上のことを行う必要があることに注意してください。また、現在のコマンドライン引数に関連してリストをフィルタリングする必要がありますArgLead
。この例ではgit
、*
ワイルドカードで囲んだ引数を渡すことにより、フィルタリングを実行するように求めています。