m/fzf
1
0
mirror of https://github.com/junegunn/fzf.git synced 2025-11-16 07:13:48 -05:00

Automatically set /dev/tty as STDIN on execute action

https://github.com/junegunn/fzf/issues/1360#issuecomment-788178140

  # Redirect /dev/tty to suppress "Vim: Warning: Input is not from a terminal"
  ls | fzf --bind "enter:execute(vim {} < /dev/tty)"

  # With this change, we can omit "< /dev/tty" part
  ls | fzf --bind "enter:execute(vim {})"
This commit is contained in:
Junegunn Choi
2021-03-25 19:56:18 +09:00
parent 6a1f3ec08b
commit f84b3de24b
3 changed files with 24 additions and 1 deletions

View File

@@ -4,6 +4,7 @@ package tui
import (
"io/ioutil"
"os"
"syscall"
)
@@ -29,3 +30,18 @@ func ttyname() string {
}
return ""
}
// TtyIn returns terminal device to be used as STDIN, falls back to os.Stdin
func TtyIn() *os.File {
in, err := os.OpenFile(consoleDevice, syscall.O_RDONLY, 0)
if err != nil {
tty := ttyname()
if len(tty) > 0 {
if in, err := os.OpenFile(tty, syscall.O_RDONLY, 0); err == nil {
return in
}
}
return os.Stdin
}
return in
}