Vimでディレクトリを開こうとした時に、
開こうとした名前で始まるファイルがある場合は、
ディレクトリのかわりにそのファイルを開くスクリプトです。
set wildmode=longest:full
と設定していて、- 'tcvime/'と'tcvime.vim'がある状況で、
- 'tcvime.vim'を開こうとして、
:e tc<Tab>
と入力(補完) :e tcvime
まで補完される- ついそのままリターンキーを押すと'tcvime/'がnetrwで開かれる。
開きたい'tcvime.vim'が開けなくていらついたので、スクリプトを作りました。
個人的にはディレクトリを開きたい状況はほとんど無いですし。
なお、このスクリプトを入れると、上記状況に当てはまる場合に
ディレクトリがnetrwで開かれなくなりますが、netrwで開きたい場合は、:Explore directory
以下スクリプト。
netrwの一部autocmdを上書きする必要があるので、~/.vim/after/pluginに置いています。
~/.vim/after/plugin/closediropenfile.vim
augroup CloseDirOpenFile
au!
autocmd BufEnter * calls:CloseDirOpenFile(expand("<amatch>"))
augroup END
" netrwのLocalBrowserではなくCloseDirOpenFileが動くように、削除if exists('#FileExplorer')
autocmd! FileExplorer BufEnter *
endiffunctions:CloseDirOpenFile(name)if!isdirectory(a:name)returnendifletfiles= glob(a:name . '*',1,1)call filter(files,'!isdirectory(v:val)')if len(files)<1sil!call netrw#LocalBrowseCheck(a:name)returnendif"let nr = bufnr('')let nr = expand('<abuf>')
execute 'e'files[0]
" :eより先にbwipeoutすると:sp時に期待通りに動かないので
execute nr . 'bwipeout!'" (BufAddにして:bw無しにするとnetrwのせいで(?)[RO]になる)endfunction