vimtricks.wiki Concise Vim tricks, one at a time.

How do I find and open a file by name without knowing its full path?

Answer

:find filename

Explanation

The :find command searches for a file by name across all directories in your path setting and opens it. Combined with recursive path wildcards, this turns Vim into a built-in file finder — no plugins needed.

Setup

Add recursive search to your path:

:set path+=**    " Search all subdirectories recursively

Usage

:find main.go           " Find and open main.go anywhere in the project
:find handler<Tab>      " Tab-complete matching filenames
:sfind main.go          " Find and open in a horizontal split
:vert sfind main.go     " Find and open in a vertical split
:tabfind main.go        " Find and open in a new tab

Example

With path+=**, your project has:

src/handlers/user.go
src/handlers/auth.go
src/models/user.go
:find user<Tab>    " Cycles: src/handlers/user.go → src/models/user.go
:find auth.go      " Opens src/handlers/auth.go directly

Configuring the path

" Search current directory and all subdirectories
:set path=.,**

" Add specific directories
:set path+=src/**,tests/**,config/**

" Exclude directories (e.g., node_modules)
:set wildignore+=**/node_modules/**,**/.git/**,**/dist/**

Tips

  • wildignore filters out unwanted directories from :find results
  • Tab completion with wildmenu makes :find interactive and fast
  • :find respects suffixesadd: :set suffixesadd=.js,.ts lets you type :find utils to find utils.js
  • For large projects, :find with ** can be slow — consider fzf.vim for instant results
  • This is Vim's built-in fuzzy file opener — no plugin required
  • Documented under :help :find and :help 'path'

Next

How do I run the same command across all windows, buffers, or tabs?