All Projects → mattn → Gof

mattn / Gof

Programming Languages

go
31211 projects - #10 most used programming language
golang
3204 projects

Labels

gof

Go Fuzzy

Open files in Vim directly (inside Vim terminal)

Installation

$ go get github.com/mattn/gof

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 "[email protected]"
  else
    command gof "[email protected]"
  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)

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].