2

我有多个已启动的vifm. 是否可以将文件从一个实例复制到另一个实例(使用yy)?

谢谢!

4

2 回答 2

3

v0.10 之前

不,你不能轻易做到这一点。实例不共享它们的运行时状态(在这种情况下为寄存器的内容),因此当您yy提交其中一个时,其他实例不知道它。

作为您真正需要的情况的解决方法:

  1. (在 dst 实例中)运行:write以将当前状态保存到vifminfo文件中。
  2. (在 src 实例中) Do yyand then :write,这将合并两个实例的状态。
  3. (在 dst 实例中)运行:restart以重新加载状态(这不仅可以带来寄存器)并执行p.

这不是我真正推荐的东西,但它应该可以工作并且在某些情况下可能是可以接受的。

自 v0.10 起

现在有一个'syncregs'选项,它使一个人能够在实例之间共享寄存器。这是它的描述:

指定在彼此之间共享寄存器的实例组的标识符。当 vifm 的多个实例将此选项设置为相同值时,它们会在使用它们的操作上自动同步其寄存器的内容。

所以,把它交给你vifmrc就足够了:

set syncregs=general

或者只是在需要共享时临时设置选项。

于 2016-08-19T14:18:22.140 回答
1

定义一个地图来保存当前文件:

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>                  

然后在同一实例的面板之间复制/粘贴。

于 2019-03-27T02:28:32.727 回答