fish-shell命令替换异常:bash中可用的vim管道命令在fish中失效
问题原因
在bash里,用反引号``做命令替换时,子shell默认能访问当前终端,percol这类交互式工具可以正常弹出选择界面,把你选中的文件名输出给vim。但fish的命令替换(...)默认是在非交互式子shell里执行的,percol拿不到终端权限进行交互,直接就退出了——自然没输出文件名,vim没收到参数,就只能打开空文件啦。
解决方法
给你两个简单靠谱的方案:
方法1:用xargs中转参数
xargs会让percol在当前终端环境下运行,保证交互正常,再把选中的文件名传给vim:
ls | percol | xargs vim
方法2:先存变量再调用vim
先把percol的结果存到fish变量里,再让vim读取这个变量:
set selected_files (ls | percol) vim $selected_files
要是percol开了多选,这个方法也能把所有选中的文件都传给vim,完美适配多文件场景。
内容的提问来源于stack exchange,提问作者nichijou
相关产品推荐
相关产品推荐

