shell 将图像内容复制到vifm中的剪贴板

aoyhnmkz  于 2022-11-16  发布在  Shell
关注(0)|答案(1)|浏览(166)

我正在尝试用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")

我刚刚收到“无效命令名”错误。

baubqpgj

baubqpgj1#

这里有多个问题:
1.默认情况下,命令的主体由shell执行,如果您以冒号开头,它将被作为内部命令处理。请参阅帮助。
1.您需要在命令名称和它的主体之间有一个空格,而写copyf\n<spaces>\|会导致:command的第一个参数是copyf|,因此会出现Incorrect command name错误。帮助。

  1. qcopy在一个地方被拼写为copyq
  2. :execute运行一个内部命令,名为!的内部命令运行一个shell命令,因此需要在最后一行使用!
    1.命令正文中的%会自动展开,需要将其加倍以进行转义,以便稍后展开。最后一行也是由expand()展开的,因此此处的%会加倍转义。
    应该可以正常工作的修复版本:
command! copyf
    \ : let $MIMETYPE = system(expand('xdg-mime query filetype %%c'))
    \ | execute expand('!qcopy write $MIMETYPE - < %%%%c && copyq select 0')

相关问题