我正在尝试用vifm(在linux上)写一个命令,使用copyq将图像的内容复制到剪贴板。
这是我目前得到的结果:
我使用命令xdg-mime query filetype myfile.jpg
来获取mimetype。
我使用qcopy
将文件内容写入剪贴板,如下所示:qcopy write $MIMETYPE - < myfile.jpg
下面的命令在shell中运行良好,文件的内容被复制到剪贴板:qcopy write $(xdg-mime query filetype myfile.jpg) - < myfile.jpg
现在,如何在vifmrc
文件中将此命令重写为vifm命令?
我试过了,但不起作用:
command! copyf
\| let $MIMETYPE = system(expand('xdg-mime query filetype %c'))
\| execute expand("copyq write $MIMETYPE - < %c && copyq select 0")
我刚刚收到“无效命令名”错误。
1条答案
按热度按时间baubqpgj1#
这里有多个问题:
1.默认情况下,命令的主体由shell执行,如果您以冒号开头,它将被作为内部命令处理。请参阅帮助。
1.您需要在命令名称和它的主体之间有一个空格,而写
copyf\n<spaces>\|
会导致:command
的第一个参数是copyf|
,因此会出现Incorrect command name
错误。帮助。qcopy
在一个地方被拼写为copyq
。:execute
运行一个内部命令,名为!
的内部命令运行一个shell命令,因此需要在最后一行使用!
。1.命令正文中的
%
会自动展开,需要将其加倍以进行转义,以便稍后展开。最后一行也是由expand()
展开的,因此此处的%
会加倍转义。应该可以正常工作的修复版本: