Могу ли я скопировать файл из одного экземпляра vifm в другой?

У меня есть несколько запущенных экземпляров vifm. Можно ли скопировать файл из одного экземпляра в другой (используя yy)?

Спасибо!


person Vitaly Ivanov    schedule 04.02.2016    source источник


Ответы (2)


ДО версии 0.10

Нет, вы не можете сделать это легко. Экземпляры не делятся своим состоянием во время выполнения (в данном случае содержимым регистров), поэтому, когда вы создаете файл yy в одном из них, другие экземпляры не знают об этом.

В качестве обходного пути для случаев, когда вы действительно этого хотите:

  1. (в экземпляре dst) Запустите :write, чтобы сохранить текущее состояние в файл vifminfo.
  2. (в экземпляре src) Выполните yy, а затем :write, что приведет к объединению состояний двух экземпляров.
  3. (в экземпляре dst) Запустите :restart для перезагрузки состояния (это может принести больше, чем просто регистры) и выполните p.

Это не совсем то, что я бы рекомендовал, но это должно работать и может быть приемлемым в некоторых случаях.

С версии 0.10

Теперь есть опция 'syncregs', которая позволяет обмениваться регистрами между экземплярами. Вот его описание:

Указывает идентификатор группы экземпляров, которые совместно используют регистры друг с другом. Когда несколько экземпляров vifm имеют одинаковое значение для этой опции, они автоматически синхронизируют содержимое своих регистров при операциях, которые их используют.

Итак, поместите это в свой vifmrc должно быть достаточно:

set syncregs=general

Или просто временно установите этот параметр, когда вам нужно поделиться.

person xaizek    schedule 19.08.2016

Определите карту для сохранения текущего файла:

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>                  

затем скопируйте/вставьте между панелями одного и того же экземпляра.

person mrustle    schedule 27.03.2019
comment
Это интересный подход. Однако начиная с версии 0.10 уже есть встроенная функция для совместного использования регистров, посмотрите мой обновленный ответ. - person xaizek; 19.12.2019