Go Fuzzy
Open files in Vim directly (inside Vim terminal)
$ go install github.com/mattn/gof@latest
- Faster and startup
- Working on windows
- Glob files and edit the selected file with vim.
$ vim `gof`- Read from stdin
$ find /tmp | gof| Key | Description |
|---|---|
| CTRL-K,CTRL-P,ARROW-UP | Move-up line |
| CTRL-J,CTRL-N,ARROW-DOWN | Move-down line |
| CTRL-A,HOME | Go to head of prompt |
| CTRL-E,END | Go to trail of prompt |
| ARROW-LEFT | Move-left cursor |
| ARROW-RIGHT | Move-right cursor |
| CTRL-I | Toggle view header/trailing of lines |
| CTRL-L | Redraw |
| CTRL-U | Clear prompt |
| CTRL-W | Remove backward word |
| BS | Remove backward character |
| DEL | Delete character on the cursor |
| CTRL-Z | Toggle selection |
| CTRL-R | Toggle fuzzy option |
| Enter | Decide |
| CTRL-D,CTRL-C,ESC | Cancel |
| Option | Description |
|---|---|
| -f | Fuzzy match |
| -x | Exit code for cancel (default: 1) |
| -d [path] | Specify root directory |
| -a | Register action keys |
| -t | Open via Vim's Terminal API |
| -tf [funcname] | Terminal API's function name |
-
gof -torgof -tf [prefix]opens selected files in Vim using Terminal API. -
If you want to add
-toption automatically whether you are inside Vim terminal or not, you can define alias like this
gof() {
if [ "$VIM_TERMINAL" ]; then
command gof -t "$@"
else
command gof "$@"
fi
}- If you are familiar with Vim script, you may want to send
["call", "[funcname]", "[file information]"]instead of["drop", "[filename]"]. You can usegof -tf [funcname]to sendcallcommand
[file information] = {
"filename": [relative filename path (string)],
"fullpath": [absolute filename path (string)],
"root_dir": [root directory (string)],
"action_key": [action key of -a (string)]
}
- You can define utility Vim command
:Gof. Quickly callsgof -tcommand and opens selected files in Vim buffer
if executable('gof')
command! -nargs=* Gof term ++close gof -t
endif- Please try vargs if you want to communicate easily with Vim terminal API from shell
MIT
Yasuhiro Matsumoto (a.k.a mattn)