Semantic history command for iTerm2 and Neovim.
In iTerm's Preferences > Profiles > Default > Advanced > Semantic History, choose Run command... and enter /your/path/to/iterm_open_with \5 \1 \2.
Semantic history command for iTerm2 and Neovim.
In iTerm's Preferences > Profiles > Default > Advanced > Semantic History, choose Run command... and enter /your/path/to/iterm_open_with \5 \1 \2.
| #!/bin/sh | |
| # iterm_open_with - open a URL, file from CWD, full path, or path with linenumber in default app or Neovim if text file | |
| # For usage with iTerm2: | |
| # In iTerm's Preferences > Profiles > Default > Advanced > Semantic History, | |
| # choose "Run command..." and enter "/your/path/to/iterm_open_with \5 \1 \2". | |
| # Usage: iterm_open_with $(pwd) filename [linenumber] | |
| # $(pwd) = current working directory (either use `pwd` or $PWD) | |
| # filename = filename to open | |
| # lineno = line number | |
| pwd=$1 | |
| file=$2 | |
| regex='https?://([a-z0-9A-Z]+(:[a-zA-Z0-9]+)?@)?[-a-z0-9A-Z\-]+(\.[-a-z0-9A-Z\-]+)*((:[0-9]+)?)(/[a-zA-Z0-9;:/\.\-_+%~?&@=#\(\)]*)?' | |
| perl -e "if ( \"$file\" =~ m|$regex|) { exit 0 } else { exit 1 }" | |
| if [ $? -ne 0 ]; then | |
| # if it's not a url, try splitting by ':' | |
| arr=($(echo $2 | tr ':' "\n")) | |
| file=${arr[0]} | |
| lineno=${arr[1]:-$3} | |
| colno=${arr[2]:-${3##*:}} | |
| [ -e "$file" ] || file=${pwd}/${file} | |
| fi | |
| file "$file" | grep -q "text" | |
| if [ $? -ne 0 ]; then | |
| /usr/bin/open $file | |
| else | |
| /usr/local/bin/nvim ${file}${lineno:+:${lineno}}${colno:+:${colno}} | |
| fi |
This didn't work as expected for me; nvim was opening, but not in a visible tab/pane. I had to choose "Run coprocess..." and use the command
echo /your/path/to/iterm_open_with \5 \1 \2I would be curious to see how it works via "Run command...", was this a gui version of neovim perhaps?