У меня есть несколько запущенных экземпляров vifm
. Можно ли скопировать файл из одного экземпляра в другой (используя yy
)?
Спасибо!
У меня есть несколько запущенных экземпляров vifm
. Можно ли скопировать файл из одного экземпляра в другой (используя yy
)?
Спасибо!
ДО версии 0.10
Нет, вы не можете сделать это легко. Экземпляры не делятся своим состоянием во время выполнения (в данном случае содержимым регистров), поэтому, когда вы создаете файл yy в одном из них, другие экземпляры не знают об этом.
В качестве обходного пути для случаев, когда вы действительно этого хотите:
:write
, чтобы сохранить текущее состояние в файл vifminfo
.:write
, что приведет к объединению состояний двух экземпляров.:restart
для перезагрузки состояния (это может принести больше, чем просто регистры) и выполните p.Это не совсем то, что я бы рекомендовал, но это должно работать и может быть приемлемым в некоторых случаях.
С версии 0.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>
затем скопируйте/вставьте между панелями одного и того же экземпляра.