我有多个已启动的vifm
. 是否可以将文件从一个实例复制到另一个实例(使用yy
)?
谢谢!
v0.10 之前
不,你不能轻易做到这一点。实例不共享它们的运行时状态(在这种情况下为寄存器的内容),因此当您yy提交其中一个时,其他实例不知道它。
作为您真正需要的情况的解决方法:
:write
以将当前状态保存到vifminfo
文件中。:write
,这将合并两个实例的状态。:restart
以重新加载状态(这不仅可以带来寄存器)并执行p.这不是我真正推荐的东西,但它应该可以工作并且在某些情况下可能是可以接受的。
自 v0.10 起
现在有一个'syncregs'
选项,它使一个人能够在实例之间共享寄存器。这是它的描述:
指定在彼此之间共享寄存器的实例组的标识符。当 vifm 的多个实例将此选项设置为相同值时,它们会在使用它们的操作上自动同步其寄存器的内容。
所以,把它交给你vifmrc
就足够了:
set syncregs=general
或者只是在需要共享时临时设置选项。
定义一个地图来保存当前文件:
nmap Wf :!ls -1 %f | while read f ; do printf ":!cp %%s/%%s %%s\n" %d $f '%%d' ; done > ~/.vifm_tmp <cr>
第二个映射将获取临时文件:
nmap Pf :source ~/.vifm_tmp<cr>
复制文件:Wf
在第一个 vifm 实例中,然后Pf
在第二个实例中。这适用于多个选定(标记)的文件,但不适用于可视模式。
您还可以同步源目录:
nmap Yd :!printf ":cd %%s\n" %d > ~/.vifm_tmp<cr>
nmap Pd :source ~/.vifm_tmp <cr>
然后在同一实例的面板之间复制/粘贴。