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
wildignorefilters out unwanted directories from:findresults- Tab completion with
wildmenumakes:findinteractive and fast :findrespectssuffixesadd::set suffixesadd=.js,.tslets you type:find utilsto findutils.js- For large projects,
:findwith**can be slow — considerfzf.vimfor instant results - This is Vim's built-in fuzzy file opener — no plugin required
- Documented under
:help :findand:help 'path'