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

ディレクトリのかわりにその名前で始まるファイルを開くVim script

$
0
0

Vimでディレクトリを開こうとした時に、
開こうとした名前で始まるファイルがある場合は、
ディレクトリのかわりにそのファイルを開くスクリプトです。

  1. set wildmode=longest:fullと設定していて、
  2. 'tcvime/'と'tcvime.vim'がある状況で、
  3. 'tcvime.vim'を開こうとして、:e tc<Tab>と入力(補完)
  4. :e tcvimeまで補完される
  5. ついそのままリターンキーを押すと'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

Viewing all articles
Browse latest Browse all 5608

Trending Articles



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