#
Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » FAR Manager (часть 5)

Модерирует : gyra, Maz

Maz (15-01-2020 17:38): FAR Manager (часть 6)  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200

   

Maz



Дед Мазай
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

 
Предыдущие топики:  1 2 3 4
 
Где взять последнюю версию?
На странице загрузки скачайте MSI-инсталлятор стабильной сборки нужной вам разрядности (32 или 64 бита) или дистрибутив в виде 7z-архива и установите/распакуйте в любую папку (FAR портабелен и может работать без установки).
Там же на свой страх и риск можно взять наиболее свежую "ночную" сборку (в ночных сборках устраняются выявленные недоработки, добавляются новые функции, но могут содержаться и серьёзные ошибки).
Архив всех предыдущих ночных сборок FAR
Last release на github - собирается практически сразу (в течение получаса) после каждого коммита.
 
Общие сведения о совместимости FAR и плагинов
 
Можно воспользоваться одной из пользовательских сборок FAR Manager
Вопросы, касающиеся сборок, следует задавать непосредственно их авторам, а не на официальном форуме.
 
Где взять дополнительные плагины, скрипты и макросы?
Плагринг. В настоящее время большинство авторов (возможно, уже и все) выкладывают плагины здесь. Кроме плагинов здесь появляется всё относящиеся к FAR: дополнения, консольные шрифты, скрипты и пр.
Анонсы плагинов на официальном форуме. Даже если автор не выкладывает по каким-либо причинам плагин на плагринге, он может дать анонс в этой теме.
Полезные скрипты и макросы.
 
Инструкции по сборке ФАРа из исходников
Набор для самостоятельной сборки ФАРа
Как собрать FAR самостоятельно (старая инструкция)  
 
Ссылки на устаревшие версии
Выдержка из Far Manager Site and Forum ‹ FAQ :
Отличия FAR 3 от FAR 2
Отличия FAR 2 от FAR 1.7
 
Примечания
 
* 13 декабря 2008 г. произошло переименование веток: ANSI-ветка 1.71 превратилась в 1.75, а Unicode-ветка получила номер версии 2.0 (вместо 1.80). Т.е. версии 1.хх это ANSI ("старый" FAR), а версии 2.хх – Unicode ("новый" FAR). Эти ветки сильно различаются по способу взаимодействия с плагинами и системой!
* При обновлении ANSI-ветки 1.хх более старые версии плагинов могут работать в более новом FAR, но более новые плагины в большинстве случаев требуют обновления FAR (см. документацию).
* Unicode-плагины в ANSI-версии FAR не работают – у них иной способ взаимодействия (API) с Far.exe, поэтому даже не пытайтесь их использовать в FAR версии ниже 1.80.
* При обновлении Unicode-версии FAR 1.80/2.0/3.0 обращайте внимание на номер сборки: следует обязательно обновить все плагины для сборок 677/680/684, иначе они не будут работать. ANSI-плагины (кроме тех, которые работают в редакторе) можно применять в Unicode-версии FAR, в меню плагинов (вызываемом по F11) они будут помечены значком [A] справа от их имени. Unicode-плагины в FAR 1.80/2.x/3.х никаким значком после имени не помечаются.
* Unicode-версия FAR 1.80/2.x/3.х требует как минимум Windows 2000, т.е. она работает только в Windows 2000/XP/2003/Vista/2008/7/8/10.
* Плагины от FAR 2 несовместимы с FAR 3 и не запустятся.
* В FAR 3 выборочно могут работать плагины от FAR 1, однако не стоит брать от FAR 1 плагины для редактора или работающие с дисками: первые портят текст в Юникоде, вторые – файловую систему.
* В любом случае разрядность плагинов должна совпадать с разрядностью FAR, иначе плагин не будет загружен.
* Блондинку на скриншоте зовут Tommie Jo.

 
Принципиальные различия между hard link, symlink и junction
Как устранить взаимное влияние запущенных копий FAR в памяти
Как запустить Lua/MoonScript из FAR
Как правильно добавить в программу нужную DLL (или иную зависимость), чтобы при обновлении ОС или иных программ она не перестала работать
Патч для ansi-плагинов для хранения настроек плагинов в папке профиля, а не в реестре
Как распаковать UUE/XXE файлы патчей и использовать их?
 
ВНИМАНИЕ!
 
Правильное (корректное) завершение Far: всегда завершайте сеанс работы с Far по F10! Подробнее на форуме - Различие выхода из Far по F10 и крестиком
 
Общие правила обращения за помощью
  1. Решаете задачу самостоятельно, при необходимости ищете ответы в теме и других источниках. Предварительное изучение документации обязательно!
  2. Если ваших знаний не хватает, то задаёте вопрос в форуме и строго следуете инструкциям тех людей, которые вам помогают.
  3. Если решить задачу, следуя пунктам 1 и 2, не удалось, то задаёте вопрос разработчикам.

Невыполнение этих правил ведёт к тому, что никто не станет помогать решать вашу задачу.

Всего записей: 36387 | Зарегистр. 26-02-2002 | Отправлено: 18:55 23-11-2017 | Исправлено: Victor_VG, 10:00 09-09-2019
Alexyz21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
shmuz
Смутило 5. Panel , потом дошло, что это для того, чтобы её открыть в случае, если она была закрыта, а не для того, чтобы результаты оказались на ней.
 
Кстати, Change time по CtrlA не отображается и на ней.
 
 
Добавлено:
Victor_VG
Оно работает? - АС не определено (как я понимаю, отображён весь текст макроса).

Всего записей: 2099 | Зарегистр. 16-06-2007 | Отправлено: 08:19 02-09-2019 | Исправлено: Alexyz21, 08:29 02-09-2019
citPiks



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alexyz21

Цитата:
панели с файлами/папками с путями различной глубины ака Branch и Temporary panel

Кажется, наконец-то, я начал понимать предназначение макроса.
 
Продолжаю с ним знакомиться и сейчас для моего случая кондишен обозначаю так:

Код:
condition = function() return APanel.Format=="Branch" or APanel.Format=="Temporary panel" or APanel.Format=="LF Search: temporary panel" or APanel.Format=="Временная панель" or APanel.Format=="Ветвь папки" or APanel.Format=="LF Search: временная панель" end;

Всего записей: 360 | Зарегистр. 26-06-2016 | Отправлено: 08:25 02-09-2019 | Исправлено: citPiks, 08:27 02-09-2019
Alexyz21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Надо посмотреть, что возвращает panel.GetSelectedPanelItem().FileName с таких панелей, если путь целиком, то возможно при его использовании макрос отработает быстрее.
 
Знать бы ещё как получить APanel.Path0, APanel.Current в терминах Panel functions.

Всего записей: 2099 | Зарегистр. 16-06-2007 | Отправлено: 08:37 02-09-2019 | Исправлено: Alexyz21, 09:00 02-09-2019
citPiks



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alexyz21

Цитата:
Надо посмотреть, что возвращает panel.GetSelectedPanelItem().FileName

При попытке запуска во временной панели Far команды lua:mf.print(panel.GetSelectedPanelItem().FileName) на файле C:\farTst86\changelog получаю:

Код:
LuaMacro
 
[string "mf.print(panel.GetSelectedPanelItem().FileName)"]:1: bad argument #2 to 'GetSelectedPanelItem' (
number expected, got no value)
stack traceback:
   \[C\]: in function 'GetSelectedPanelItem'
   [string "mf.print(panel.GetSelectedPanelItem().FileName)"]:1: in main chunk
 

Всего записей: 360 | Зарегистр. 26-06-2016 | Отправлено: 10:26 02-09-2019
Alexyz21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
citPiks, () для кратости, в них должны быть аргументы согласно мана

Всего записей: 2099 | Зарегистр. 16-06-2007 | Отправлено: 10:59 02-09-2019
citPiks



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alexyz21
 
lua:mf.print(panel.GetSelectedPanelItem(nil,1).FileName) выдаёт "с таких панелей" полное имя файла, с путём (неокавыченное даже если в имени есть пробелы).

Всего записей: 360 | Зарегистр. 26-06-2016 | Отправлено: 11:56 02-09-2019
Victor_VG



Tracker Mod
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alexyz21
 
Это обычный GNU unifed дифф сформированный командой diff -yu 3 old new - разница между исходным и полученным вариантами. В терминах WinMerge это "Создать патч". И естественно что он не содержит полный исходный файл ибо применяется командой patch -u <original> -i <diff>. И там отлично видно что именно удалено - знак минус  в колонке 1, а что добавлено - знак плюс в колонке 1.  
 
Дальше только как в бородатом анекдоте - "Старшина Иванов! Придеритесь вон к тому фонарному столбу!".
 
Работает, но т.к. у тебя там цикл, то естественно медленно и это причина почему я такими приёмами стараюсь не пользоваться. Тe же команды ОС cp -T/cp -t (UNIX) copy/xcopy (Windows) если в качестве источника мы укажем вершину ветви дерева каталогов поступают проще "Начиная с заданного каталога-источника рекурсивно копируем всю ветвь дерева, а ответственность за корректность отдания команды лежит на пользователе..." - эта операция занимает меньше времени чем обход дерева каталогов в цикле с копированием каждого найденного объекта. Пустые каталоги ОС создаёт за время необходимое для фоновой записи элемента каталога в таблицы ФС - для той же NTS это запись в $MFT 4 или 8 Кб в зависимости от размера кластера, а цикл для этого должен выполнить несколько операций - считать имя каталога, проверить IsDirEmpty, вызвать команду ОС mkdir, обновить дерево по её выполнению, перейти к следующему элементу. А это дольше, накладно...

----------
Жив курилка! (Р. Ролан, "Кола Брюньон")

Всего записей: 25487 | Зарегистр. 31-07-2002 | Отправлено: 12:06 02-09-2019 | Исправлено: Victor_VG, 12:10 02-09-2019
Alexyz21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Victor_VG
Вы не поняли зачем этот макрос нужен, но изменения в него вносите
 
Panel.CopyWithFoldersTree2.lua примерно в 5 раз быстрее

Всего записей: 2099 | Зарегистр. 16-06-2007 | Отправлено: 12:29 02-09-2019 | Исправлено: Alexyz21, 15:23 02-09-2019
shmuz

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alexyz21

Цитата:
Кстати, Change time по CtrlA не отображается и на ней.  

LuaFAR на данный момент не умеет самостоятельно получать ChangeTime.
Раньше Фар подставлял эту величину, если панельный плагин передавал ноль, но начиная с билда 5455 Фар перестал это делать.

Всего записей: 1234 | Зарегистр. 09-03-2012 | Отправлено: 13:47 02-09-2019
Alexyz21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
shmuz

Цитата:
начиная с билда 5455 Фар перестал это делать

Почему? Вопрос в процессе решения?
 
Я использую сортировку по Change Time на NTFS в случаях, подобному этому:
Например, копирую из архива на одной панели, кучу файлов в папку с файлами на другой - при сортировке по CT скопированные окажутся вверху, а не вперемешку и последующее их выделение с удалением элементарно - виден последний элемент на обоих панелях, выше которого всё подлежит удалению. При любом другом режиме сортировки файлы практически всегда перемешиваются - приходится сравнивать панели по именам с помощью плагинов типа Advanced Compare, применять инвертирование выделенных для последующего удаления, чтобы получить совпадающий набор файлов на обоих панелях.

Всего записей: 2099 | Зарегистр. 16-06-2007 | Отправлено: 14:11 02-09-2019 | Исправлено: Alexyz21, 14:26 02-09-2019
shmuz

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Почему? Вопрос в процессе решения?

Почему Фар перестал подставлять ChangeTime, когда плагин не заполнил это поле, нужно спросить у DrKnS. Но с другой стороны, Фар никогда не давал обязательств заполнять поля вместо плагина, так что претензий быть не может.

Всего записей: 1234 | Зарегистр. 09-03-2012 | Отправлено: 14:21 02-09-2019
Alexyz21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
С претензиями понятно, но поотваливаются плагины, когда их обновят? - если обновят.

Всего записей: 2099 | Зарегистр. 16-06-2007 | Отправлено: 14:28 02-09-2019
Victor_VG



Tracker Mod
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alexyz21
 
А зачем мне вникать в его суть? Поправил явный торомоз с постоянным дёрганьем Far.DisableHistory() в цикле и конфликт хоткеев - достаточно. Я пользуюсь иными инструментами и рекурсивное копирование каталога OpenSSLL SDK 405 Mb, 1 698 файлов, 49 каталогов, используется сжатие NTFS (220/405 Mb) между парой HDD Seagate ST32000645NS (SATA III, средняя скорость чтения/записи 155 Мб/с) занимает:
 
Far b5462 Git-018efd475 по F5, системный копир включён - 11 секунд,
Far b5462 Git-018efd475 по F5, системный копир выключён - 3,41 секунды
cp -fr - 3,22 секунды
скриптом - 137,83 секунды

 
- достаточно? И даже если новый скрипт будет в семь - восемь раз быстрее старого варианта он всё равно будет не будет быстрее cp или F5...


----------
Жив курилка! (Р. Ролан, "Кола Брюньон")

Всего записей: 25487 | Зарегистр. 31-07-2002 | Отправлено: 14:30 02-09-2019 | Исправлено: Victor_VG, 14:31 02-09-2019
Alexyz21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Поправил пару явный торомоз с постоянным дёрганьем Far.DisableHistory() в цикле

- Не надо было его в цикл ставить - у меня ни в одном макросе он в цикле не стоит, а стоит на входе в action() и на выходе из него, остальной код между ними.
 
Добавлено:

Цитата:
Far b5462 Git-018efd475 по F5, системный копир включён - 11 секунд,  Far b5462 Git-018efd475 по F5, системный копир выключён - 3,41 секунды  cp -fr - 3,22 секунды  скриптом - 137,83 секунды

Это наглядная демонстрация того, что Вы не понимаете для чего нужен макрос и когда нужно его применять. Это как трактор вместо автомобиля использовать - всё равно перемещение из точки А в точку Б

Всего записей: 2099 | Зарегистр. 16-06-2007 | Отправлено: 14:33 02-09-2019
citPiks



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alexyz21

Цитата:
Panel.CopyWithFoldersTree2.lua примерно в 5 раз быстрее

Подтверждаю превосходную работу макроса по копированию с панелей плагинов LF Search, TRUE-BRANCH и TmpPanel при сохранении структуры расположения папок.  
 
На мой взгляд, макрос не вполне информативно назван. Очень долгое время я не догадывался о том, что копировать файлы с его помощью надо с панелей плагинов (отображающих бранч-подобную структуру). Поэтому у себя переименовал его в CopyingFromPluginPanelsWhileMaintainingStructure.lua (Копирование с панелей плагинов при сохранении структуры).  
 
Строку far.Message(far.FarClock()-ttime,"mcs") в макросе отключил — потому что каждый раз при работе макроса видеть сообщения о скорости его работы не обязательно.  
 
Текущее содержание кондишен макроса заменил на 2 поля:  

Код:
flags="NoFilePanels"; condition = function() return Far.Title:sub(2,8)~="Polygon" end;

Так макрос ни в файловую панель не лезет, ни в плагин Polygon, да и при необходимости работы с другими плагинами кроме вышепоименованных не будет надобности снова править его кондишен.

Всего записей: 360 | Зарегистр. 26-06-2016 | Отправлено: 14:38 02-09-2019
shmuz

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alexyz21

Цитата:
С претензиями понятно, но поотваливаются плагины, когда их обновят? - если обновят.

Полагаю, что эта проблема локальна для LuaFAR-плагинов.
Если дойдут руки, научу LuaFAR добывать ChangeTime (это весьма навороченная процедура, ну в крайнем случае можно из кода Фара позаимствовать).

Всего записей: 1234 | Зарегистр. 09-03-2012 | Отправлено: 14:40 02-09-2019
Victor_VG



Tracker Mod
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alexyz21
А енто что?

Цитата:
Macro {
description="Copy with folders tree";
area="Shell"; key="ShiftF5";
flags="NoPluginPanels"; -- флаг дополнен чтобы макрос не мешал плагину Polygon
action = function()
  local h=Far.DisableHistory(-1)
  if not APanel.Selected then Panel.Select(0,1,1,0) end
  local PP=PPanel.Path0
  while APanel.SelCount>0 do
    Panel.SetPosIdx(0,1,1)
    local AC=Panel.Item(0,0,0)
    local AP=APanel.Path0
    if AC:match("^\\\\") then
        win.CreateDir(PP..AP:sub(2,-1))
        win.CopyFile(AC,PP..AC:sub(2,-1))
    else
      if AC:match("^[A-Z]:\\") then
        win.CreateDir(PP..AP:sub(3,-1))
        win.CopyFile(AC,PP..AC:sub(3,-1))
      else
      Far.DisableHistory(h) Keys("ShiftF5") print(PP.."\\"..AC) Keys("Enter")
      end
    end
    Panel.Select(0,0,1)
  end
end
}
--http://forum.ru-board.com/topic.cgi?forum=5&topic=49572&start=420#14

именно этот макрос дал 137,83 секунды.

----------
Жив курилка! (Р. Ролан, "Кола Брюньон")

Всего записей: 25487 | Зарегистр. 31-07-2002 | Отправлено: 14:42 02-09-2019 | Исправлено: Victor_VG, 14:45 02-09-2019
Alexyz21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
shmuz
Прошу прощения, это я неправильно выразился - плагины сами по себе работают, отвалились мои сортировки по этому полю в панелях плагинов. Это не радует, да.
 
Добавлено:
Victor_VG
И где он в цикле? - Он стоит на входе и на выходе, ровно там, где я и сказал. Библ-а Panel по скорости ощутимо проигрывает LuaMacro, к тому же в скрипте применяются медленные кейсы и тд. - это было быстрое решение-затычка.

Всего записей: 2099 | Зарегистр. 16-06-2007 | Отправлено: 14:44 02-09-2019 | Исправлено: Alexyz21, 14:50 02-09-2019
Victor_VG



Tracker Mod
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alexyz21
 
Я случайно вствил свою первую правку. Исправлено на то, что было скопировано ночью когда появилась ссылка на оригинал. Прошу прощения что спутал файлы. Но даже если он стоит на входе и выходе, то смысл в повторе Far.DisableHistory(-1) Этим вызовом мы уже отключили все истории на время выполнения данного макроса - см. Писание:

Цитата:
N=history.disable([State]) Позволяет выключать добавление пунктов в истории во время воспроизведения текущего макроса.
 
Необязательный параметр State:
 
Бит Описание  
0 история командной строки  
1 история папок  
2 история редактора/вьюера  
3 история диалогов  
 
Если соответствующий бит выставлен, то история блокируется.
 
Если параметр не указан, то просто возвращает текущую маску.
 
Функция возвращает предыдущее значение.
 
При старте макроса разрешено добавление во все истории.
 
Примеры
 
Вызов Результат  
history.disable() получить текущее состояние блокировок историй  
history.disable(-1) выключить все истории  
history.disable(5) выключить истории командной строки и редактора/вьюера, остальные включить  

получается бессмысленный двойной вызов, да ещё и засунутый в цикл (чья-то опечатка)...

----------
Жив курилка! (Р. Ролан, "Кола Брюньон")

Всего записей: 25487 | Зарегистр. 31-07-2002 | Отправлено: 14:56 02-09-2019 | Исправлено: Victor_VG, 14:57 02-09-2019
Alexyz21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Victor_VG
На входе историю выключаем, на выходе возвращаем состояние на входе обратно. Зачем вы засовали в цикл - этот вопрос не ко мне. - См. на предыдущей странице, что опубликовал citPiks изначально, там всё правильно.
 
Для панели RESearch кодишн такой: APanel.Format=="Search results", ещё есть плаги с подобными панелями, в том числе и ансишные. Помимо полигона ещё есть панельные плагины, использующие ShiftF5, например NetBox.

Всего записей: 2099 | Зарегистр. 16-06-2007 | Отправлено: 15:06 02-09-2019 | Исправлено: Alexyz21, 15:20 02-09-2019
   

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200

Компьютерный форум Ru.Board » Компьютеры » Программы » FAR Manager (часть 5)
Maz (15-01-2020 17:38): FAR Manager (часть 6)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.Board
© Ru.Board 2000-2020

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru

Рейтинг.ru