Windows下Emacs是不是不能用fzf?

Windows下边,Emacs里是不是不能用fzf? 因为没有true tty? 例如不能用counsel-fzf?

看了下官方都提供window二进制包下载 Releases · junegunn/fzf-bin · GitHub 那应该是可以用的,我rg,fd命令都是去下载window二进制exe文件放在emacs自定义的path目录下使用的,中文搜索也解决了

2 个赞

po 主大概是问 console emacs 而不是 GUI。简言之如果没有 tty 连 emacs 都打不开,如果 emacs 本身能在你用的 terminal emulator 里打开,那 fzf 就不会有问题。

counsel-fzf用的是fzf的静态过滤模式,这个模式应该是从pipe传数据回Emacs的,那就和tty没关系

-f: Filter mode. Do not start interactive finder

M-x shell (cmd) fzf -f “string” 然后就没反应了

counsel-fzf 也是没有搜索结果

但是,在Windows自己的cmd里fzf -f是正常的

你好,这个问题请问解决了吗?我在windows中执行counsel-fzf也是不对,响应Wrong type argument: stringp, nil;感觉是参数传递的问题。fzf在emacs的shell中执行确实没反应,rg在shell中执行也是一样的,感觉应该是emacs的shell只能从标准io中读取数据,而类似fzf,rg这种命令,输出应该不是标准io;这个不应该应该counsel-fzf的使用。 我看了下counsel-rg和counsel-fzf的调用,感觉确实不太一样,估计还是counsel-fzf对fzf命令的使用方式问题。

没有。

counsel的rg,git,应该是可以用的,但是要设置一下default-process-coding-system

fzf跟rg什么的不一样

应该有点不一样,counsel-rg里面命令是("rg" "--max-columns" "240" "--with-filename" "--no-heading" "--line-number" "--color" "never" "%s" "--path-separator" "/" ".")

而counsel-fzf的命令是"fzf -f \"%s\"",直接拼接,这样都不好改它的编码。所以我一般用fd来找文件。

应该不是编码的问题,是emacs怎么才能支持fzf这种命令的类型。 不过可以用fd嘛,我一般都用fd。

上边明确说了不是编码问题,是终端问题,在windows上,emacs只认stdin/stdout,不认tty之类的,而fzf用了tty,所以在windows上emacs收不到fzf的输出;哪怕是 fzf -f,也不是用stdout,所以windows上emacs也接收不到输出,不知道fzf什么时候结束退出

因为我没看上面,只是看了一下代码。

counsel-fzf其实用fd就好啦,效果差不多,(setq counsel-fzf-cmd "fd --path-separator / \"%s\"")