/gof

Primary LanguageGo

gof

Go Fuzzy

Open files in Vim directly (inside Vim terminal)

Installation

$ go install github.com/mattn/gof@latest

Feature

  • Faster and startup
  • Working on windows

Usage

  • Glob files and edit the selected file with vim.
$ vim `gof`
  • Read from stdin
$ find /tmp | gof

Keyboard shortcuts

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

Options

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

Vim Terminal API

  • gof -t or gof -tf [prefix] opens selected files in Vim using Terminal API.

  • If you want to add -t option 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 use gof -tf [funcname] to send call command
[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 calls gof -t command 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

License

MIT

Author

Yasuhiro Matsumoto (a.k.a mattn)