Linux下在vifm中配置copyq复制图片内容至剪贴板的命令问题
在Vifm中配置CopyQ复制图片到剪贴板的正确命令写法
你遇到的「Invalid command name」错误,主要是原配置的变量处理和命令执行逻辑不符合Vifm语法规则,以下是修正后的正确配置:
修正后的完整命令
command! copyf \ let $MIMETYPE = trim(system('xdg-mime query filetype %c')) \ | execute '!copyq write' $MIMETYPE '- < %c && copyq select 0'
关键修正点说明
- 去除换行符:用
trim()包裹system()的返回值,xdg-mime命令输出自带换行符,直接传给CopyQ会导致MIME类型参数无效。 - 正确执行外部命令:在
execute后的字符串前加!,明确告诉Vifm这是要执行的外部shell命令;直接引用$MIMETYPE变量即可,无需用expand()处理(expand()主要用于路径通配符解析,不负责shell变量替换)。 - 保留Vifm变量:
%c会被Vifm自动替换为当前选中的文件路径,无需额外处理。
简化写法(可选)
如果不想用环境变量,也可以直接把MIME查询嵌入命令中,进一步简化配置:
command! copyf execute '!copyq write' trim(system('xdg-mime query filetype %c')) '- < %c && copyq select 0'
内容的提问来源于stack exchange,提问作者deedeedev
相关产品推荐
相关产品推荐

