Ранняя тема об алиасах не содержит общей информации, поэтому размещу здесь это предисловие:
Консольные алиасы, также известные как "макросы DOSKEY", это общеизвестный, но в целом недооценённый инструмент работы.
Алиасы позволяют задать удобные сокращения для различных команд.
Почти того же можно добиться, создав кучу батников, и положив их где-то в %PATH%.
Однако (и это главное преимущество) в отличии от батников, через алиасы DOSKEY доступны и команды фара (chdir, set)
Посредством префиксов доступны и команды плагинов (например FAR Commands, Temporary Panel).
А через префикс lua: можно использовать даже макросы.
(в сети можно найти и другие примеры использования)
Алиасы быстро создаются из командной строки: doskey a=b, удалить: doskey a=, просмотреть: doskey /m
Когда алиасов становится много, их можно разместить в файле, и загружать командой doskey /macrofile="путь_к_файлу_алиасов"
Раньше я использовал простой макрос для загрузки макросов при старте: http://forum.farmanager.com/viewtopic.p ... 29#p117329
Однако захотелось автоматически перезагружать файл после его редактирования, так что его пришлось усовершенствовать)
Получившийся скрипт прилагается.
Основная функция данного скрипта — автозагрузка файла алиасов при старте фара, а также после каждой правки
По умолчанию в качестве файла алиасов используется alias.doskey, который должен быть расположен рядом со скриптом.
Об имени файла:
Можно было бы назвать файл иначе, но отдельное расширение выбрано специально.
Это позволяет использовать ассоциацию на маску "*.doskey": DOSKEY/MACROFILE="!\!.!": так можно иметь разные файлы с алиасами, и загружать их по мере надобности.
Кодировка файла: OEM или UTF-8 (c BOM).
Формат файла: типичный ini-файл, разбитый на секции вида [far.exe], [cmd.exe]
Строго говоря, секции необязательны, но удобны:
Позволяют задавать алиасы раздельно для разных приложений.
Например те алисы, которые имеют смысл только в фаре можно разместить в секции [far.exe], а все прочие - в [cmd.exe] (фар понимает и те и другие).
Также алиасы можно использовать в некоторых других приложениях, например [nslookup.exe].
При большом количестве алиасов могут быть проблемы, разделение на 2 секции помогает.
Наличие секций позволяет Colorer'у распознавать и раскрашивать файл как INI (этого можно было достичь дав файлу имя с соответствующим расширением)
Алиасы секции [far.exe] имеют приоритет.
В качестве комментариев можно использовать строки, начинающиеся на ;=
.
Дополнительные функции доступны через префикс командной строки alias:.
alias: [имя_алиаса] — открывает файл алиасов в редакторе, и предпринимает попытку найти нужный алиас (если указан).
После закрытия редактора алиасы перезагружаются (при наличии изменений).
alias: /file [имя_файла] — (пере)загружает файл алиасов. Если файл не указан, то загружается основной.
alias: имя_алиаса=[значение] — позволяет создавать и удалять алиасы (если значение не указано).
Созданные таким образом алиасы действительны только в текущей сессии фара, а чтобы сделать их постоянными необходимо внести их в файл алиасов.
Рекомендуется в первую очередь назначить алиас a=alias:, и в дальнейшем использовать именно его вместо полного префикса.
(см. этот и другие примеры в прилагаемом alias.sample.doskey)
Примечание:
Имя и путь к файлу алиасов можно переназначить изменяя опции в начале скрипта.
Чтобы после каждого обновления скрипта не приходилось вручную восстанавливать изменённые значения опций рекомендуется использовать возможности cfgscript из пакета ScriptsBrowser.
Требуется FAR 3 build >=4324
Re: Работа с консольными алиасами
Posted: Thu 15 May, 2014 16:02
by John Doe
Latest post of the previous page:
Теоретически да, но не так просто. А что это даст вам?
Re: Работа с консольными алиасами
Posted: Fri 16 May, 2014 08:06
by Shmuel
GorDAn wrote:Хотел сообщение вывести не в окно, а в консоль. Чтобы после загрузки было примерно так...
John Doe wrote:Теоретически да, но не так просто. А что это даст вам?
Да, согласен это некритичный функционал. Я бы даже отнёс это к рюшечкам Просто я пытаюсь освоить Lua вообще и Luafar в частности. Да и лог жизнедеятельности программ/скриптов в консоль мне привычней.
Я пробовал так. Скрипт выводит в свой поток. А я хотел в поток, куда Far выводит сообщение «Far Manager, version 3.0 (build 3904) x64 ...».
Плюс к этому код:
Мелькание происходит из за плагина "ConEmu Background"
Re: Работа с консольными алиасами
Posted: Fri 16 May, 2014 11:30
by John Doe
Я о мелькании панелей.
Хотя если этот подход устраняет мелькание ConEmu Background, тогда понятно
Re: Работа с консольными алиасами
Posted: Fri 16 May, 2014 11:37
by GorDAn
John Doe wrote:...
И что значит "в свой поток"?
Возможно, я не правильно выражаюсь. Когда Far запустился, если нажать Ctrl+O, на чёрном фоне сообщение о версии Far и т.д. Вот я и спрашиваю можно из данного скрипта вывести туда своё сообщение? У меня через io не получилось. Вот я и предположил, что для каждого скрипта открывается свой поток ввода вывода.
Re: Работа с консольными алиасами
Posted: Fri 16 May, 2014 11:39
by John Doe
Вы часом не упустили команду panel.SetUserScreen()?
Re: Работа с консольными алиасами
Posted: Fri 16 May, 2014 11:45
by GorDAn
John Doe wrote:Я о мелькании панелей.
Хотя если этот подход устраняет мелькание ConEmu Background, тогда понятно
Нет, я к тому, что мелькание происходит из-за работы плагина. Мелькание не устранить кроме, как отключить его.
Re: Работа с консольными алиасами
Posted: Fri 16 May, 2014 11:47
by GorDAn
John Doe wrote:Вы часом не упустили команду panel.SetUserScreen()?
Да. Сейчас попробую...
Re: Работа с консольными алиасами
Posted: Fri 16 May, 2014 11:51
by John Doe
John Doe wrote:
GorDAn wrote:выводит «Console aliases loading...» и всё.
Уберите 1<&2 >nul.
Тут ещё надо уточнить а что собственно вы ожидали увидеть? 1<&2 >nul подавляют только вывод ошибок.
Если же вы хотите увидеть командную строку выполняемых команд, то добавьте io.output (желательно перевести строки в Ansi)
Re: Работа с консольными алиасами
Posted: Fri 16 May, 2014 11:54
by GorDAn
Спасибо большое! Это моя невнимательность. Спутал с far.SaveScreen() Теперь работает.
Re: Работа с консольными алиасами
Posted: Fri 16 May, 2014 11:58
by GorDAn
К 1<&2 >nul у меня претензий нет Ещё раз спасибо за помощь и скрипт.