Skip to content
akruphi edited this page Nov 17, 2024 · 275 revisions

far2l is Linux port of FAR Manager v2 developed by elfmz: https://github.com/elfmz/far2l

far2m is Linux port of FAR2 with FAR3 macro system and extended plugins' API developed by shmuz: https://github.com/shmuz/far2m

Большинство информации ниже, описывающей far2l, применимо как к far2l, так и к far2m (far2m отпочковался от far2l в мае 2022 года и после версии 2.5.0 часть появившихся нововведений в far2m не перетащено).

Данное wiki наполняется на основе обсуждений/разъяснений в дружном image https://t.me/far2l_ru

Варианты сборок

У far2l три основных бекенда отрисовки:

  • GUI — на базе wxWidgets, работает в графическом режиме, идеальный UX, куча зависимостей;
  • TTY|Xi — работает в консоли, зависимости буквально от пары иксовых либ (для поддержки всех-всех сочетаний клавиш и буфера обмена), почти идеальный UX;
    • TTY|X — через X11 поддержка буфера обмена, клавиатура через возможности терминала
    • (для TTY|Xi получение расширенных данных клавиатуры не работает под Wayland из-за модели безопасности Wayland, при его запуске far2l, начиная с версии 2.6.1, переключается на TTY|X без i; см. подробности ниже)
  • TTY — чистая консоль, никаких иксовых зависимостей, UX с некоторыми ограничениями (полноценно работает при запуске в эмуляторах терминалов, предоставляющих возможность доступа к буферу обмена и расширенную информацию о клавиатурных событиях).

(!) Подробнее про эти и остальные бекенды (TTY|X, TTY|F, TTY|w и т.п.) см. в far2l в встроенной помощи по F1 в разделе Режимы интерфейса / UI backends.

При сборке вручную -DUSEWX=no отключает сборку GUI бекенда. Если wxWidgets не установлены, тоже будет собираться без него. Будет ли собираться модуль TTY|Xi, зависит от наличия в системе пакетов libx11-dev и libxi-dev. TTY версия собирается всегда. Подробности: https://github.com/elfmz/far2l#additional-build-configuration-options

Особенность сборок под macOS (спасибо за уточнение t.me/vitalyster): wxWidgets на маке рисуется нативно без иксов и зависимостей от иксов там нет вообще, тогда как TTY|Xi — наиболее "жирный" вариант, потому что требует иксы.

Версию FAR2L и используемый бекенд можно увидеть в заголовке окна или через псевдо-команду far:about (в far2m через lm:farabout).

  • Если у Вас установлена версия GUI, то при запуске far2l без параметров будет пытаться использоваться она;
  • для принудительного запуска терминального варианта TTY|Xi используйте в командной строке: far2l --tty;
  • для принудительного запуска терминального варианта TTY|X используйте в командной строке: far2l --tty --nodetect=xi;
  • для принудительного запуска минимального варианта TTY используйте в командной строке: far2l --tty --nodetect=x;
  • фоновый запуск FAR2L-GUI из командной строки без блокировки терминала: far2l --notty &

(подробнее про ключи запуска см. far2l --help).

Источники far2l

  • far2l — основной проект от elfmz: https://github.com/elfmz/far2l

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

    • PPA (deb-пакеты для семейства Ubuntu и совместимых дистрибутивов Linux Mint, обновляется регулярно, обычно в течении суток после обновления у elfmz в ветке master): https://launchpad.net/~far2l-team/+archive/ubuntu/ppa

      Пакеты называются так:

      • far2l — базовая версия, только TTY бекенд;
      • far2l-gui — отдельно бекенд GUI (зависимостями сам притянет базовую far2l);
      • far2l-ttyx — отдельно бекенд TTY|Xi (зависимостями сам притянет базовую far2l);
      • far2l-tiny — compact version (no GUI, no plugins, no manuals, only English).

      Для Mint использовать пакет из совместимой версии Ubuntu, например, для Linux Mint Mate 21.2 репозиторий http://ppa.launchpad.net/far2l-team/ppa/ubuntu jammy main. Таблицу соответствия версий см., например, в https://en.wikipedia.org/wiki/Linux_Mint#Releases

      • Переключение между репозиториями PPA и родным Ubuntu [нажмите, чтобы развернуть/скрыть]
        • Переход на бинарники из PPA

          sudo apt remove far2l*                      # нужно, если был установлен far2l
          sudo apt install software-properties-common # нужно, если не установлен add-apt-repository
          sudo add-apt-repository ppa:far2l-team/ppa
          sudo apt install far2l-gui  # (!) из этих трёх строк
          sudo apt install far2l-ttyx # (!) выполняете одну,
          sudo apt install far2l      # (!) смотря какая версия вам нужна
        • Отключение PPA и возвращение к бинарникам их родного репозитория Ubuntu

          sudo apt remove far2l*                      # нужно, если был установлен far2l
          sudo apt install software-properties-common # нужно, если не установлен add-apt-repository
          sudo add-apt-repository --remove ppa:far2l-team/ppa
          sudo apt install far2l
    • Fedora and CentOS packages (обновляется примерно раз в месяц): https://copr.fedorainfracloud.org/coprs/polter/far2l

    • Portable (with TTY X/Xi backend) | AppImage (with wx-GUI and some extra plugins): https://github.com/spvkgn/far2l-portable/releases

      • пересобираются при появлении свежих коммитов у elfmz в ветке master
      • по умолчанию хранит настройки где и обычная в ~/.config/far2l, но можно при запуске в командной строке задать, например, ./far2l_<что-то-там>.run -- -u $(pwd)/far2l_profile будет сохранять все настройки в папку far2l_profile внутри текущей (если не задан параметр -u, то используется каталог из переменной окружения FARSETTINGS и только при её отсутствии каталог по умолчанию)
      • нюансы сборок Portable см. ниже
      • нюанс сборок AppImage: не работает эскалация привилегий, т.к. вызов sudo невозможен из-за ограничений FUSE, см. https://github.com/AppImageCrafters/AppRun/issues/64#issuecomment-2091079799
    • Debian [sid-unstable / 13 trixie-testing / 12 bookworm-backports] packages (редко обновляется, обычно лишь после появления нового релиза у elfmz):

    • Ubuntu [mantic 23.10 / noble 24.04] packages (редко обновляется на основе пакета из Debian):

    • Список дистрибутивов куда попал far2l (к сожалению, много устаревших необновляемых версий): https://repology.org/project/far2l/versions

    • Сборки и инструкции по сборке для разных ОС и дистров: https://github.com/elfmz/far2l/issues/647

    • Спеки сборок под разные системы: https://github.com/elfmz/far2l/tree/master/packaging

      • buildroot-скрипты для сборки под embedded платформы, такие как OpenWRT или DDWRT — теперь можно запустить far2l даже на роутере
      • Debian
      • openSUSE
      • OS X / macOS
    • OpenWrt: https://github.com/spvkgn/far2l-openwrt

    • FAR2L Flatpak build (Nightly): https://github.com/spvkgn/far2l-flatpak

      • (!) доступ к файловой системе ограничен песочницей Flatpak (даже при разрешении доступа All system files (filesystem=host) - всё, что недоступно запустившему пользователю не показывает)
      • конфиги лежат в укромном месте flatpak'а: ~/.var/app/io.github.elfmz.far2l/config/far2l/
    • OpenSUSE, Fedora, Ubuntu, Debian 12 от viklequick (обновляется регулярно, обычно в течении суток после обновления у elfmz в ветке master): https://download.opensuse.org/repositories/home:/viklequick/

      нарезка пакетов мелкой лапшой:

      • far2l-core - только терминал (базовый)
      • far2l-ttyxi - добавление keys/clipboard через X
      • far2l-wxgtk - добавление графического фронт-энда
      • плагины нетрокса, россыпью: far2l-plugins-netrocks-ftp, far2l-plugins-netrocks-nfs, far2l-plugins-netrocks-sftp, far2l-plugins-netrocks-shell, far2l-plugins-netrocks-smb, far2l-plugins-netrocks-webdav
      • far2l-full - классическая сборка одним пакетом (но без пайтона, этот всегда отдельно) = far2l-core + far2l-ttyxi + far2l-wxgtk + far2l-plugins-netrocks-*
      • far2l-plugins-python - пайтон, кому надо, без virtualenv - пользуется системным
      • дополнительные плагины не из far2l, написанные отдельно: far2l-plugins-editwrap, far2l-plugins-jumpword, far2l-plugins-netcfg, far2l-plugins-processes, far2l-plugins-sqlite

      в sources.list добавлять так: deb https://downloadcontentcdn.opensuse.org/repositories/home:/viklequick/<ос_версия> ./

    • Termux: https://github.com/spvkgn/far2l-termux

    • macOS https://github.com/elfmz/far2l#osxmacos-binaries :

  • Всякие полезности от unxed:

  • Встроенные плагины (входят в стандартную сборку far2l от elfmz, полный список установленных плагинов см. через псевдо-команду far:about):

    • align (Align block / Выровнять блок): плагин редактора
    • autowrap (Auto wrap / Автосвёртка): плагин редактора
    • calc (Calculator / Калькулятор): плагин панелей, редактора, просмоторщика
    • colorer (FarColorer - раскраска синтаксиса для типов файлов в редактора): плагин редактора
    • compare (Advanced compare / Расширенное сравнение): плагин панелей
    • drawline (Draw lines / Рисовать линии): плагин редактора
    • editcase (Change Case / Регистр): плагин редактора
    • editorcomp (Editor Autocomplete / Автодополнение редактора): плагин редактора
    • filecase (Case conversion / Преобразование регистра): плагин панелей
    • incsrch (Incremental Search / Быстрый поиск): плагин редактора
    • inside (Inside - внутрь ELF файлов и документов по Ctrl+PgDown): плагин панелей
    • multiarc (Archive support / Работа с архивами): плагин панелей
    • NetRocks (NetRocks - SFTP/SCP/SHELL/NFS/SMB/WebDAV connectivity): плагин панелей
    • SimpleIndent (отступ по Tab/Shift-Tab выделенного блока в редактора): плагин редактора
    • tmppanel (Temporary panel / Временная панель): плагин панелей
  • Про Python plugins: python/configs/plug/plugins/read-en.txt & #694 & #982 & #1261

    • Python plugins входят в far2l от elfmz, по умолчанию отключены; для использования far2l должен быть собран (в системе должны стоять пакеты python3-dev, python3-cffi):
      • сборка с опцией -DPYTHON=yes (начиная с https://github.com/elfmz/far2l/pull/2420): using system interpreter and packages available in system (cffi)
      • устарелые варианты (до https://github.com/elfmz/far2l/pull/2420 ) (в системе должны стоять пакеты libpython3-dev, libffi-dev, python3-venv)
        • с опцией -DPYTHON=yes — far2l собирается с python через virtualenv
        • с опцией -DVIRTUAL_PYTHON=python3 — в cmake и в пакет уже ничего лишнего не попадает, используется системный python, но в системе тогда нужны установленные python-пакеты cffi, pcpp (необходимы для сборки) и debugpy, adbutils (необходимы для работы плагинов написанных на пайтоне); актуальный список нужных пакетов см. в prebuild.sh
      • при некорректных сборках (совет автора из https://github.com/elfmz/far2l/issues/1818#issuecomment-1704766853):

        Not every time a python plugin is created correctly, cmake/make copies files betwen python source and build/install directory and maybe you have a mismatch between c code and python code. Sometimes it helps me to run these commands:

        #!/bin/bash
        rm build/*
        rm -rf build/python
        rm -rf build/install/Plugins/python
    • про python-плагин uadb для доступа к андроиду из фара: https://github.com/elfmz/far2l/issues/1207#issuecomment-1523735293
    • про python-плагин udocker для доступа к docker из фара: https://github.com/elfmz/far2l/issues/1500#issuecomment-1528872903
    • про сборку и создание python-плагинов:
  • Внешние плагины/макросы (внешние плагины не входят в far2l от elfmz; могут быть взяты от авторов в виде бинарников и положены в каталог плагинов установленного far2l, обычно /usr/lib/far2l/Plugins; или добавлены в локальный каталог исходных кодов far2l, прописаны в CMakeLists.txt и собраны сразу вместе с far2l):

  • Wiki от elfmz: https://github.com/elfmz/far2l/wiki

  • far 2 encyclopedia (от виндовой версии, но много полезного, например, там про макро язык, разметку языка помощи и т.п.):

Note: смотреть CHM в Linux, например, через xCHM (наиболее корректно) или через Okular — просмотр CHM как подряд идущих страниц, но возможны сбои рендеринга текста ссылок и области щелчка по ним.

Источники far2m

  • far2m — форк от shmuz с поддержкой Lua-макросов и плагинов (Lua-макросы и Lua-плагины введены и используются в windows far3): https://github.com/shmuz/far2m

    Far2m отпочковался от far2l в мае 2022 года и после версии 2.5.0 часть появившихся нововведений в far2m не перетащено (например, даты в истории и т.п.)

    • Макросы и плагины для Lua-форка: https://github.com/shmuz/luafar2m
    • PPA (deb-пакеты для семейства Ubuntu и совместимых дистрибутивов Linux Mint, обновляется регулярно, обычно в течении суток после обновления у shmuz в master): https://launchpad.net/~far2l-team/+archive/ubuntu/lua
      • в едином deb пакете сразу все бекенды TTY+TTY|Xi+GUI, соответственно зависимости X11, которые при установке на сервера потянут излишние пакеты.
    • Portable:
    • Manuals (в формате CHM): https://github.com/shmuz/far2m/tree/master/luafar/manuals
    • Wiki от shmuz: https://github.com/shmuz/far2m/wiki
    • Классический формат макросов far2 (из файла ~/.config/far2m/settings/key_macros.ini) игнорируется; работают только Lua-макросы как в far3
    • Lua-макросы (подробности в macroapi_manual_linux.chm)
      • размещать в каталоге ~/.config/far2m/Macros/scripts или создавая там подкаталоги (с любой глубиной вложенности)
      • имена самих файлов с макросами - на усмотрение пользователя, только расширение должно быть правильное (.lua или .moon);
      • каждый файл может содержать произвольное количество макросов;
      • пример клавиатурных макросов см. ниже про Colorer;
      • макросы, записанные вручную с клавиатуры:
        • помещаются far2m в ~/.config/far2m/Macros/internal и не рекомендуются для ручного редактирования в файлах;
        • появятся в ~/.config/far2m/Macros/internal только после сохранения конфигурации фара (или команды macro:save).

Работа far2l в терминалах и дистанционный доступ к far2l на удаленном компьютере

  • Сообщения при старте терминальной версии Some far2l-s lost in space-time nearby:

    • если работу far2l завершается не штатно (по F10), а вылетом терминала (в том числе и закрытие терминала пользователем по крестику в заголовке окна), то far2l пытается выжить и создает в /tmp/far2l_3e8_0/TTY запись о сессии. И при каждом запуске не GUI far2l проверяет там наличие файлов. Если есть, то выводит информацию Some far2l-s lost in space-time nearby: и предлагает подключиться к одной из сессий. Проблема идет тогда, когда эти сессии фара прибиты были. Файлы в /tmp/far2l_3e8_0/TTY не удаляются. И при каждом старте он спрашивает про это.

    • данная возможность очень полезна при обрыве сессии — запущенный на удаленном far2l не умирает, а остается ждать переподключения (поведение изменяется ключами запуска --immortal и --mortal), и при последующем запуске far2l найдёт предыдущий запущенный и попробует восстановиться (сообщения Some far2l-s lost in space-time nearby:).

      • в случае если переподключение с нового ip, а серверный sshd ещё довольно долго ждёт переподключения с того же ip и far2l не подхватывается, то следующим скриптом можно грохнуть все сеансы кроме текущего, после чего старый far2l подхватывается уже нормально:
        #!/bin/bash
        current=$(tty | cut -d/ -f3-)
        all=$(ps -A -o tty | grep pts/ | grep -v $current)
        for i in $all ; do
            pkill -9 -t $i
        done
  • Для передачи на запущенный на удалённом компьютере far2l расширенных сочетаний клавиш и буфера обмена необходимо инициировать соединение из умеющих это клиентов (см. ниже).

  • Особенность вставки в терминалах:

    • Есть комбинация вставки терминала (терминал имитирует ввод с клавиатуры) и есть вставка самого фара (сам far2l делает paste). При этом комбинация вставки терминала в разных терминалах разная (и может перекрывать стандартные клавиши вставки far2l Shift-Ins или Ctrl-V).
    • В версии без TTY|X или TTY|F (или без включенной поддержки OSC 52 как в far2l, так и в терминале) вставка самого фара использует его внутренний буфер (т.к. far2l не получает доступ к системному буферу обмена), а вставка терминала — системный буфер обмена.
    • Ни гном, ни кде не хотят OSC 52 целиком поддерживать из соображений безопасности: записать в клипборд — пожалуйста, а вот читать оттуда — ни-ни (см. в #1110).

Терминалы и ssh-клиенты, поддерживающие расширенные сочетания клавиш far2l для чистой терминальной версии far2l TTY

Данный раздел про настройку эмуляторов терминалов и ssh-клиентов под именно минимальную TTY версию far2l. В остальных эмуляторах терминалов минимальная far2l-TTY работает с разной степенью ограниченности функционала (в части распознавания модификаторов и комбинаций клавиш клавиатуры и системный буфер обмена). Однако в остальных эмуляторах терминалов более-менее работает TTY|X и TTY|Xi версии при доступности/пробросе X11 (см. Особенность вставки в терминалах и Перехват клавиш эмуляторами терминалов).

Теперь даже минимальная TTY версия far2l умеет с поддержкой почти всех клавиш работать в следующих эмуляторах терминалов, используя их расширенные возможности передачи клавиш (по ссылке история и технические подробности).

Для взаимодействия с клипбордом в части из них необходимо не забыть включить OSC 52 как в настройках far2l (опция OSC 52 видна в Menu->Options->Interface settings, только когда все остальные варианты поддержки клипборда недоступны; так что если не видна, надо запустить far2l так: far2l --tty --nodetect), так и в настройках терминалов необходимо разрешить OSC 52 (по умолчанию OSC 52 отключен в части терминалов из соображений безопасности; OSC 52 в куче терминалов реализован только для режима copy, а paste из терминала идёт через т.н. bracketed paste mode).

Больше не надо использовать TTY|Xi, для которой для удаленной работы приходилось x-forwarding включать и исковые либы на сервер ставить — теперь из коробки все (по крайней мере, в этих терминалах).

  • Встроенный терминал far2l-gui (Linux, macOS, *BSD):

    • TTY|F режим — клавиши и буфер обмена через far2l TTY extensions support
    • запускаем графический far2l, внутри него делаем ssh example.com (лучше из NetRocks plugin, но можно и просто в командной строке), там запускаем удаленный far2l в консольном режиме: far2l в командной строке локального far2l на панели активного соединения NetRocks (если far2l на той стороне не в $PATH, то явный путь), ключи никакие не нужны, дальний far2l сам понимает, что здесь его собрат и использует обмен в формате TTY|F.
    • выдержка из помощи far2l по F1 раздел Режимы интерфейса / UI backends:

      Если вы хотите запустить far2l удаленно с максимальным удобством, то рекомендуется либо запустить его из сессии подключения NetRocks, что позволяет использовать TTY|F режим. Если же это невозможно - рекомендуется запускать far2l в SSH сессии с включенным доверенным форвардингом протокола X11 и сжатием (ssh -Y -C ...) что позволяет использовать режим TTY|Xi или хотя бы TTY|X. При этом крайне не рекомендуется использовать доверенный форвардинг X11 при подключении к не доверенному серверу, поскольку это открывает коду, исполняемому на удаленном сервере, неконтролируемую возможность прослушивания ваших клавиатурных нажатий, копирования содержимого буфера обмена и скриншотов окон. Таким образом, TTY|F режим является единственным безопасным методом удаленного запуска far2l на не доверенном сервере с поддержкой всех привычных клавиатурных сочетаний и прочих удобств.

    • выдержка из помощи far2l по F1 NetRocks plugin раздел Command line and remote FAR2L:

      When entering commands in command line when panel displays usual files list you can open connection by typing NetRocks-supported protocol URL, like sftp://192.168.1.15 or alternatively you can open preconfigured site by invoking its name between triangle brackets and prefixed with net: prefix, like: net: When entering commands in command line when panel displays active NetRocks connection of SFTP and SCP protocols - NetRocks will execute them directly on remote host, opening full-featured pseudoterminal for controlling remotely-executed commands. This essentially allows using NetRocks as SSH client with FAR2L-extended pseudoterminal. If you're working in GUI-based FAR2L you can run remote TTY-mode FAR2L directly in NetRocks SFTP/SCP connected panel and work in that remote FAR2L with user experience of local GUI-based version (full keyboard support, clipboard sharing, desktop notifications) as well as being sure that if connection suddenly drops - remote work will not be killed instantly, since remote terminal-based FAR2L will remain alive and active in background and next time you will reconnect and re-launch far2l - it will prompt to activate that backgrounded FAR2L instance.

  • kovidgoyal's kitty (Linux, macOS, *BSD): https://github.com/kovidgoyal/kitty & https://sw.kovidgoyal.net/kitty/ (поддерживается, начиная с версии far2l от 08.04.2023, commit e1f2ee0)

    • TTY|k режим — расширенное взаимодействие клавиш осуществляется с помощью https://sw.kovidgoyal.net/kitty/keyboard-protocol

    • для взаимодействия с клипбордом необходимо включить режим OSC 52

    • чтобы https://github.com/kovidgoyal/kitty/ не перехватывал Shift-Ins (вставка средствами kitty из другого системного клипборда, чем по умолчанию использует far2l) и Ctrl-Shift-стрелки, в ~/.config/kitty/kitty.conf (согласно kitty-faq) допишите

      map shift+insert no_op
      map ctrl+shift+right no_op
      map ctrl+shift+left no_op
      map ctrl+shift+home no_op
      map ctrl+shift+end no_op
      enable_audio_bell no
      

      (здесь также отключаем enable_audio_bell, чтоб при просмотре двоичных файлов не возникали раздражающие бипы)

    • настройка kitty под far2l и far2l под kitty однострочником:

      (pkill -f far2l || true) & sed -i 's/OSC52ClipSet=0/OSC52ClipSet=1/g' ~/.config/far2l/settings/config.ini; [ -f ~/.config/kitty/kitty.far2l.bak ] && exit; mv ~/.config/kitty/kitty.conf ~/.config/kitty/kitty.far2l.bak; echo -e "map shift+insert no_op\nmap ctrl+shift+right no_op\nmap ctrl+shift+left no_op\nmap ctrl+shift+home no_op\nmap ctrl+shift+end no_op\nenable_audio_bell no" > ~/.config/kitty/kitty.conf
    • BUG в старых версиях kitty "Copy selection to clipboard appends, does not replace": https://github.com/elfmz/far2l/issues/2038

  • Wez's Terminal Emulator (Linux, FreeBSD, Windows): https://github.com/wez/wezterm & https://wezfurlong.org/wezterm (поддерживается, начиная с версии far2l от 10.04.2023, commit 97aecaa)

    • расширенное взаимодействие клавиш осуществляется
      • в Linux/FreeBSD через TTY|k режим — режим kitty, который в wezterm надо включать вручную: прописать в ~/.wezterm.lua строку config.enable_kitty_keyboard = true
      • в Windows через TTY|w режимwin32-input-mode, который включен по умолчанию (в Windows режим kitty похоже сломан и его включать ни в коем случае не нужно)
      • в macOS в wezterm проблема с модификаторами https://github.com/elfmz/far2l/issues/2112 и похоже режим kitty не работает корректно (!!! уточнить что работает, а что нет у wezterm в macOS !!!)
    • для взаимодействия с клипбордом необходимо включить режим OSC 52
    • чтобы https://github.com/wez/wezterm не перехватывал Ctrl/Shift-PgUp/PgDn и Ctrl-Shift-стрелки, в ~/.wezterm.lua (согласно faq) допишите
      config.keys = {
        {key = 'PageUp',     mods = 'CTRL',  action = wezterm.action.DisableDefaultAssignment,},
        {key = 'PageDown',   mods = 'CTRL',  action = wezterm.action.DisableDefaultAssignment,},
        {key = 'PageUp',     mods = 'SHIFT', action = wezterm.action.DisableDefaultAssignment,},
        {key = 'PageDown',   mods = 'SHIFT', action = wezterm.action.DisableDefaultAssignment,},
        {key = 'LeftArrow',  mods = 'SHIFT|CTRL', action = wezterm.action.DisableDefaultAssignment,},
        {key = 'RightArrow', mods = 'SHIFT|CTRL', action = wezterm.action.DisableDefaultAssignment,},
        {key = 'UpArrow',    mods = 'SHIFT|CTRL', action = wezterm.action.DisableDefaultAssignment,},
        {key = 'DownArrow',  mods = 'SHIFT|CTRL', action = wezterm.action.DisableDefaultAssignment,},
        {key = 'Home',       mods = 'SHIFT|CTRL', action = wezterm.action.DisableDefaultAssignment,},
        {key = 'End',        mods = 'SHIFT|CTRL', action = wezterm.action.DisableDefaultAssignment,},
        {key = 'PageUp',     mods = 'SHIFT|CTRL', action = wezterm.action.DisableDefaultAssignment,},
        {key = 'PageDown',   mods = 'SHIFT|CTRL', action = wezterm.action.DisableDefaultAssignment,},
      }
      
  • iTerm2 (macOS): https://gitlab.com/gnachman/iterm2/ & https://iterm2.com/ (поддерживается, начиная с версии far2l от 21.04.2023, commit 65b964c)

    • TTY|a режим — расширенное взаимодействие клавиш осуществляется с помощью iTerm2 "raw keyboard" protocol
    • для взаимодействия с клипбордом необходимо включить режим OSC 52 как в far2l, так и в самом iTerm2: откройте настройки / preferences и перейдите в Общие настройки / General; включите опцию Приложения в терминале могут получить доступ к буферу обмена / Applications in terminal may access clipboard
    • особенности реализации поддержки iTerm2 в far2l:
      • правый Option (версия Alt на маках) трактуется как правый Control, т.к. правый Control есть не на всех мак-клавиатурах (Command использовать нельзя — он занят хоткеями самого терминала, а правый Alt в far2l всё равно не используется);
      • после Paste режим расширенной поддержки клавиатуры включается не сразу, а после первого нажатия любой кнопки из тех, что работают в классическом терминальном режиме.
  • свежий Windows Terminal (в win11 стоит из коробки, в win10 надо ставить) (поддерживается, начиная с версии far2l от конца марта 2023 года)

    • TTY|w режим — расширенное взаимодействие клавиш осуществляется с помощью win32-input-mode
    • для взаимодействия с клипбордом необходимо включить режим OSC 52
    • (!) в Windows Terminal присутствует баг с мышью, который когда-нибудь поправят в microsoft
  • (!) Оригинальный Putty не корректно пересылает в far2l некоторые клавиатурные комбинации. Под Windows используйте специальные форки putty с поддержкой far2l TTY extensions support:

    • putty4far2l (Windows ssh-клиент): https://github.com/unxed/putty4far2l & https://github.com/ivanshatsky/putty4far2l/releases

      • TTY|F режим — клавиши и буфер обмена через far2l TTY extensions support
    • cyd01's KiTTY (Windows ssh-клиент): https://github.com/cyd01/KiTTY & https://www.9bis.net/kitty

      • TTY|F режим — клавиши и буфер обмена через far2l TTY extensions support
      • выключение перехвата клавиш Ctrl-F3...Ctrl-F7 самим KiTTY: в файле %APPDATA%\Roaming\KiTTY\kitty.ini заменить shortcuts=yes на shortcuts=no; если нужно отключить только какие-то специфические шорткаты, их можно переназначить на другие сочетания в секции [Shortcuts] того же файла (например F7 обычно перехватывается принтером print= и printall={CONTROL}p)
      • цветовая схема сессии (править после сохранения сессии в реестре или в файле Sessions\имя_сессии) для проброса полных цветов far2l:
        Colour0\187,187,187\
        Colour1\255,255,255\
        Colour2\0,0,0\
        Colour3\85,85,85\
        Colour4\0,0,0\
        Colour5\0,255,0\
        Colour6\0,0,0\
        Colour7\85,85,85\
        Colour8\128,0,0\
        Colour9\255,85,85\
        Colour10\0,187,0\
        Colour11\85,255,85\
        Colour12\187,187,0\
        Colour13\255,255,85\
        Colour14\0,0,128\
        Colour15\85,85,255\
        Colour16\187,0,187\
        Colour17\255,85,255\
        Colour18\0,128,128\
        Colour19\85,255,255\
        Colour20\187,187,187\
        Colour21\255,255,255\
        
    • putty-nd (Windows ssh-клиент): https://sourceforge.net/projects/putty-nd/ & https://github.com/noodle1983/putty-nd

      • TTY|F режим — клавиши и буфер обмена через far2l TTY extensions support
      • для поддержки far2l включите опции Global SettingsGlobal Far2l Support (подробнее: https://sourceforge.net/p/putty-nd/feature-requests/36/)

Известные проблемы и решения (перехват комбинаций клавиш оболочками, особенности far2l в терминалах и под Wayland, проблемы буфера обмена, проблема в macOS)

  • Оригинальный Putty не корректно пересылает в far2l некоторые клавиатурные комбинации. Под Windows используйте специальные форки putty с поддержкой far2l TTY extensions support.

  • Липкие управляющие кнопки: если ваше окружение не дает вам использовать некоторые кнопкосочетания из-за ограничений TTY режима или если кнопкосочетание занято внешней программой то вы можете использовать липкие управляющие кнопки. Это означает кнопка, которая виртуально остается нажатой до нажатия следующей не-управляющей (цифро-символьной) кнопки:

    • Ctrl+SPACE дает липкий CONTROL
    • Alt+SPACE дает липкий ALT
    • правый_Ctrl+SPACE дает липкий правый CONTROL
    • правый_Alt+SPACE дает липкий правый ALT

    Другим способом получить работоспособные горячие кнопки может быть перенастройка общесистемные хоткеев, внешних программ (с целью освободить нужные сочетания) или же использование опции эксклюзивной обработки нажатий (только в GUI режиме). См. также клавиатурные макросы для урезанных клавиатур.

  • Многие комбинации клавиш Alt-F1, Alt-F2, Alt-F7, Ctrl-стрелки и т.п. используются как общесистемные хоткеи и глобально перехватываются оболочками GNOME, KDE, Xfce, macOS и т.п. Для работы отключайте их в настройках оболочек (desktop environment = DE).

    • Отключение возможно визуально в настройках оболочек (например в GNOME 42: Settings ⇒ Keyboard ⇒ Keyboard Shortcuts ⇒ View and Customize Shortcuts) - нудно по всем пройтись и отключить лишние.

    • При переключении языка по Ctrl-Shift из-за перехвата оболочкой могут не работать все комбинации с ней (Ctrl-Shift-стрелки — пометка в редакторе по словам, Ctrl-Shift-PgDn — переход на symlink и т.п.).

    • Alt-F1 в GNOME открывает "Applications" menu и не настраивается через стандартные настройки; для освобождения данной комбинации использовать dconf-editor и в нём в /org/gnome/shell/extensions/apps-menu/apps-menu-toggle-menu снять переключатель Use default value [].

    • подборка скриптов для отключения глобальных клавиш через gsettings и конфигурационные файлы: https://github.com/unxed/far2ltricks/tree/main/unbindkeys и https://github.com/elfmz/far2l/issues/2326

      • в частности, отключение глобальных клавиш в GNOME или Cinnamon через gsettings [нажмите, чтобы развернуть/скрыть]
        • GNOME Terminal

          # turn off F10 usage in GNOME Terminal
          gsettings set org.gnome.Terminal.Legacy.Settings menu-accelerator-enabled false
        • GNOME DE

          # turn off some gnome wm-specific hot keys
          gsettings set org.gnome.desktop.wm.keybindings panel-main-menu "[]" 		# Alt+F1
          gsettings set org.gnome.desktop.wm.keybindings panel-run-dialog "[]" 		# Alt+F2
          #gsettings set org.gnome.desktop.wm.keybindings close "[]" 			# Alt+F4
          gsettings set org.gnome.desktop.wm.keybindings unmaximize "['']" 		# Alt+F5
          gsettings set org.gnome.desktop.wm.keybindings begin-move "['disabled']" 	# Alt+F7
          gsettings set org.gnome.desktop.wm.keybindings begin-resize "['disabled']" 	# Alt+F8
          gsettings set org.gnome.desktop.wm.keybindings toggle-maximized "['']" 		# Alt+F10
        • Cinnamon

          # for cinnamon:
          gsettings set org.cinnamon.desktop.keybindings.wm panel-main-menu "[]" 		# Alt+F1
          gsettings set org.cinnamon.desktop.keybindings.wm panel-run-dialog "[]" 	# Alt+F2
          #gsettings set org.cinnamon.desktop.keybindings.wm close "[]" 			# Alt+F4
          gsettings set org.cinnamon.desktop.keybindings.wm unmaximize "['']" 		# Alt+F5
          gsettings set org.cinnamon.desktop.keybindings.wm begin-move "['']" 		# Alt+F7
          gsettings set org.cinnamon.desktop.keybindings.wm begin-resize "['']" 		# Alt+F8
          gsettings set org.cinnamon.desktop.keybindings.wm toggle-maximized "['']" 	# Alt+F10
    • В KDE Plasma можно включить игнорирование глобальных хоткеев для конкретного окна / приложения:

      • делается это либо через Параметры системыПриложения и окнаДиспетчер оконОсобые параметры оконСоздать,
      • либо через меню окна far2l: ДополнительноНастроить индивидуальные параметры приложения, кнопка Добавить свойство, и там, в подразделе Внешний вид и обход проблем, пункт Игнорировать глобальные комбинации клавиш.
    • В Xfce очень нетривиально привязки кнопок отключаются, в гуевом туле натыкиваешь, а все равно не работает, лечится конфигом; выдержка из https://russiandesman.dreamwidth.org/2742.html про кейбайндинги:

      ~/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml
      Удалить или закомментировать строки вида:
          <property name="&lt;Primary&gt;F6" ...      <property name="&lt;Control&gt;F6" ...
      После этого вернутся Ctrl+F7 и прочие мелкие радости.
      Если строки не удалить, а только снять с них галки в xfce4-keyboard-settings - счастья не будет.
      
    • Комбинация записи макроса Ctrl-. с 2021 перехватывается оболочкой (подробности и вариант отключения), но т.к. на русской раскладке точка на другой клавише, то на русской запуск записи макроса отрабатывает (начало записи макроса по Ctrl-.; то, что запись макроса идёт, видно по букве R в верхнем левом углу; окончание записи макроса по Ctrl-. и затем ввод комбинации клавиш, навешиваемой на запуск макроса).

  • В far2l-GUI есть возможность эксклюзивного захвата модификаторов (F9⇒Options⇒Input settings⇒Exclusively handle hotkeys that include / F9⇒Параметры⇒Параметры ввода⇒Эксклюзивная обработка нажатий, включающих), что позволит не переназначать комбинации в оболочке, но, например, при захвате Alt также обломится и глобальный Alt-Tab. Обсуждение: https://github.com/elfmz/far2l/issues/2007

    • в KDE Plasma 6.1 включение эксклюзивного захвата из внутри far2l не работает; помогает только установка свойств приложения через меню окна: ДополнительноНастроить индивидуальные параметры приложения, кнопка Добавить свойство, и там, в подразделе Внешний вид и обход проблем, пункт Игнорировать глобальные комбинации клавиш.
  • На внешних клавиатурах macOS меняет местами Alt и Win (считая что ближняя к пробелу клавиша слева — это Command, как на клавиатуре макбука).

  • Эмуляторы терминалов также часто не передают запущенным в них консольным приложениям часть комбинаций клавиш, или не различают нажатие различных комбинаций модификаторов (Ctrl, Alt и т.п.).

    • стандартный gnome-terminal в Ubuntu перехватывает F10 (настраивается ⇒ Preferences ⇒ General: Uncheck "Enable the accelerator key (F10 by default)"), остальные комбинации клавиш настраиваются ⇒ Preferences ⇒ Shortcuts
    • про kovidgoyal's kitty см. выше
    • про wezterm см. выше
    • в qterminal возможно потребуется сменить режим эмуляции на linux, т.к. при default замечена бага — Backspace внутри far2l попадают как Ctrl+Backspace
  • Особенности под Wayland или под WSL+WSLg (при проблемах с буфером обмена и/или комбинациями клавиш в FAR2L-GUI/TTY|X)

    • Версии far2l с 2.6.1 (и сборки 2.6.0 чуть ранее, начиная с конца марта 2024):

      • автоматически определяют запуск под Wayland и отключают несовместимые опции — внутри терминалов для TTY|Xi получение клавиатурных событий не работает под Wayland из-за модели безопасности Wayland, при его запуске far2l переключается на TTY|X без i;
      • для GUI и TTY|X исправлен баг с некорректной работой с буфером обмена под Wayland.
    • Информация в раскрываемом блоке актуальна только для более старых сборок far2l (до версии far2l 2.6.1) [нажмите, чтобы развернуть/скрыть]
      • FAR2L (режимы GUI и TTY|X) для получения расширенных сочетаний клавиш использует возможности X11, которые из соображений безопасности ограничены в чистом Wayland'е при запуске из под терминалов.

      • Для адекватной работы FAR2L GUI в Wayland (и в Win11 wslg) помогает запустить в режиме xWayland, указав переменную среды GDK_BACKEND=x11:

        • запуск из консоли: GDK_BACKEND=x11 far2l;
        • внутри ярлыка /usr/share/applications/far2l.desktop заменить Exec=far2l на Exec=env GDK_BACKEND=x11 far2l
      • При запуске в эмуляторе терминала режим xWayland не даёт процессам не владеющим окном полноценного доступа к клавиатурным событиям и тут совет запускать бекенд TTY или только TTY|X:

        • принудительное неиспользование расширенных клавиатурных возможностей X11 при запуске в консоли: far2l --tty --nodetect=xi --ee
      • Глобальные советы для GNOME (Ubuntu 22.04...24.04..., свежие Fedora 25... и новее и т.п.):

        • Загрузка только X11 = запрет загрузки Wayland:
          • в файле /etc/gdm3/custom.conf под sudo в разделе [daemon] раскомментировать строку WaylandEnable=false (см. https://docs.fedoraproject.org/en-US/quick-docs/configuring-xorg-as-default-gnome-session/ ) и перелогинится/перезагрузится
          • команда для автоматического изменения этой строки: sudo sed -i 's/#WaylandEnable=false/WaylandEnable=false/' /etc/gdm3/custom.conf
        • смена по умолчанию на X11 сессии при графическом логине:
          • в файле /etc/gdm3/custom.conf под sudo в разделе [daemon] добавить строку DefaultSession=gnome-xorg.desktop (см. https://askubuntu.com/a/1464319/894968 ) и перелогинится/перезагрузится
          • команда для автоматического добавления этой строки: sudo sed -i '/^\[daemon\]/a DefaultSession=gnome-xorg.desktop' /etc/gdm3/custom.conf
      • подробности: https://github.com/elfmz/far2l/issues/2053, https://github.com/elfmz/far2l/issues/2041, https://github.com/shmuz/far2m/issues/17#issuecomment-1344709147 и https://github.com/elfmz/far2l/issues/1658

    • про причины таких ограничений Wayland: image https://t.me/far2l_ru/13852, https://t.me/far2l_ru/13853 и далее.

  • Костыль решения проблем с буфером обмена (использования внешних консольных утилит для работы с буфером обмена) — решение, если встроенные средства почему-то не получают доступ к буферу обмена (замечено в не X11-средах: wayland и wslg):

  • Костыль решения проблемы macOS версии при навязчивом регулярном запросе разрешения при переходе по каталогам:

  • Внутренняя командная строка far2l полноценно работает только через bash:

    • Можно сменить оболочку через F9⇒Параметры⇒Настройки командной строки⇒Использовать шелл, но тогда командная строка будет работать с значительными ограничениями/ошибками, особенно с собственными командами оболочки, см. https://github.com/elfmz/far2l/issues/1264#issuecomment-1045334082
    • Если в вашей системе нет bash, желательно установить его и использовать только bash в far2l.
    • Если по умолчанию ваша системная оболочка не bash, возможно, вам будет удобно также прописать ваши переменные среды, алиасы и т.п. в файлах запуска bash.
    • far2l в процессе работы выставляет переменную окружения $HISTCONTROL=ignorespace для исключения из истории bash рабочих обращений (far2l всегда начинает команды с пробела); если вы поменяли шелл на другой, который не понимает $HISTCONTROL, то в историю оболочки будут сыпаться рабочие команды
      • для zsh помогает добавить в .zshrc на выбор или глобально setopt HIST_IGNORE_SPACE (эквивалентно setopt -g) или только под far2l [ -n "$FARPID" ] && setopt HIST_IGNORE_SPACE или [ -n "$FARPID" ] && unset HISTFILE
  • Неадекватные цвета far2l в эмуляторе терминала Konsole:

    • в Konsole по-умолчанию включена тема "Breeze", если ее поменять на другую, к примеру "Linux Colors" или "Green on Black", то цвета в far2l становятся адекватными (из всех тем, что есть в Konsole, штуки 3-4 можно с far использовать):
      • в контекстном меню с экрана konsole пункт "Edit Current Profile..." ⇒ вкладка Apperarance ⇒ таб "Color scheme & font" ⇒ выбрать тему "Linux Colors";
      • в некоторых системах параметры встроенного профиля не редактируются;
      • Konsole ⇒ "Открыть меню" ⇒ "Настройка" ⇒ "Создать новый профиль" (или "Управление профилями") ⇒ раздел "Внешний вид" ⇒ выбрать другую цветовую схему;
      • потом ещё можно: "Открыть меню" ⇒ "Настройка" ⇒ "Настроить Konsole" ⇒ "Профили" ⇒ выбрать созданный профиль ⇒ "Сделать основным".
  • Скорость NetRocks-SFTP:

    • На скорость NetRocks-SFTP заметно влияет настройка: Site connection settings ⇒ Protocol options ⇒ Max read block size, bytes. По умолчанию 32768, а это очень малое значение, попробуйте поставить, например, 131072.
    • Еще, если в настройке Site connection settings ⇒ Extra options ⇒ Keepalive, seconds стоит не 0, то потери скорости.

Полезности

  • Помощь самого far2l по F1 внутри программы (при этом много разделов не актуализированы или описывают артефакты исходной windows версии far'а; про артефакты и опечатки).

  • Серия (еже/полу)годовых обзоров достижений far2l от unxed:

  • Запуск из консоли:

    • far2l — если установлен far2l-gui, то даже при запуске из эмулятора-терминала в графической среде запустится wx-версия;
    • far2l --tty — запуск в консоли всегда именно консольной версии TTY|Xi;
    • far2l --tty --nodetect=xi — запуск минимальной консольной версии TTY;
    • far2l --help — список ключей запуска, в том числе и FAR2L backend-specific options.
    • Запуск из консоли и открытие на панели текущей директории:
      • (спасибо за совет ivanshatsky): в ~/.config/far2l/settings/panel.ini в секции [Panel/Left] или [Panel/Right] прописать Folder=$PWD (!) внимание: любое сохранение настроек перезапишет этот пункт и надо будет прописывать заново;
      • (спасибо за совет unxed): far2l . или far2l --tty . или far2l --tty -cd . (можно сделать короткий alias, например, alias f='far2l --tty -cd .' и дальше запускать просто по команде f).
    • Запуск портабельной версии надо с двойным указанием первого параметра, то есть far2l_<что-то-там>.run -- --tty -cd . (первый пустой параметр --, относится к самому архиву, а затем уже указываются последующие ключи, передающиеся внутрь в far2l).
  • Каталог с установленным far2l — после запуска far2l определяет переменную $FARHOME, соответственно во внутреннем терминале быстрый переход к каталогу cd $FARHOME.

  • Расположение персональных настроек far2l и истории

    • по умолчанию far2l работает с настройками хранящимися в ~/.config/far2l или в $XDG_CONFIG_HOME/far2l
      • при запуске ключ -u (или переменная окружения $FARSETTINGS) позволяет указать путь к произвольному расположению настроек:
        • -u <path> — в path/.config/ (если path или $FARSETTINGS является полным путем)
        • -u <identity> — в ~/.config/far2l/custom/identity/ или в $XDG_CONFIG_HOME/far2l/custom/identity/
    • ныне все настройки хранятся в .ini-файлах (ранее настройки вслед за windows хранились в псевдореестре в каталогах ~/.config/far2l/REG; компиляция с ключом -DLEGACY=yes добавляет код, который при старте far2l конвертирует настройки из REG в .ini)
    • некоторые файлы настроек (могут отсутствовать):
      - settings/config.ini — основной конфиг
      - palette.ini — расцветка панелей
      - settings/colors.ini — раскраска файлов и групп сортировки
                              (настраиваются через F9->Команды->Раскраска файлов и группы сортировки)
      - settings/key_macros.ini — клавиатурные макросы [только far2l, в far2m вместо него Lua-макросы]
      - settings/user_menu.ini — главное меню пользователя (настраиваются через F9->Команды->Меню пользователя;
                                                            формат отличается от FarMenu.ini местных меню)
      - settings/associations.ini — ассоциации файлов (настраиваются через F9->Команды->Ассоциации файлов)
      - settings/bookmarks.ini — закладки на каталоги для быстрого перехода по RCtrl-0...9 или Ctrl-Alt-0...9
                                 (настраиваются через F9->Команды->Закладки на папки)
      - favorites — закладки в меню точек монтирования (дисков), которое по Alt-F1/F2
      - cp — принудительное выставление OEM и ANSI кодировок, переключаемых по F8 для просмоторщика и редактора
      - plugins — плагины
          - plugins/state.ini — кэш плагинов
          - plugins/NetRocks/sites.cfg — NetRocks sites
          - plugins/multiarc/custom.ini — добавление архиваторов командной строки
          - plugins/colorer/config.ini — пользовательский конфиг Far Colorer, сюда же удобно класть
                                         свои схемы colorer'а, которые будут применяться поверх базовых
                                         (требуют явного прописывания в настройках Far Colorer)
      - clipboard — bash-скрипт (должен иметь права выполнения chmod +x) для работы с буфером обмена,
                    если встроенные средства почему-то не получают доступ
      - notify.sh, open.sh, ps.sh, trash.sh, view.sh — пользовательские скрипты кастомизации,
                    вызываемые (при наличии) из базовых скриптов $FARHOME/open.sh и т.д.
      
      • про формат ini-файлов: https://github.com/elfmz/far2l/wiki/INI-files-format
      • про favorites см.: https://github.com/elfmz/far2l/issues/1379#issuecomment-1295961834
      • про cp подробнее ниже
      • про plugins/NetRocks/sites.cfg см.: https://github.com/elfmz/far2l/issues/874#issuecomment-758384645
      • про plugins/multiarc/custom.ini: инструкция и пример
      • про plugins/colorer: пользовательские файлы синтаксиса можно класть куда угодно, главное путь к ним указать в настройках плагина (F9⇒Options⇒Plugins configuration / Alt+Shift+F9 ⇒ FarColorer ⇒ Users file of... или в соотв. поля файла ~/.config/far2l/plugins/colorer/config.ini), см. также общую, не привязанную к Линукс инструкцию https://github.com/colorer/Colorer-library/blob/master/docs/custom.md
      • про clipboard подробности выше
      • про скрипты кастомизации:
        • open.sh — пользовательский скрипт для переопределения EXEC_TERM= — эмулятора терминала, используемого при Shift-Enter внутри $FARHOME/open.sh, если Вы хотите использовать отличный от системного из /etc/alternatives/x-terminal-emulator
        • trash.sh — переопределение действий при удалении в корзину, например, см. совет KDE-шникам: https://github.com/elfmz/far2l/issues/2049
        • сейчас в базовые скрипты $FARHOME/*.sh жестко зашит путь ~/.config/far2l/, поэтому описанное выше переопределение расположения они не учитывают
      • примеры клавиатурных макросов см. ниже: про Colorer и Разные макросы
      • в shmuz форке far2m классический формат макросов far2 (из файла settings/key_macros.ini) игнорируется; работают только Lua-макросы как в far3 (лежат в Macros/scripts, подробности в macroapi_manual_linux.chm )

Note: редактировать файлы конфигов при отключенном автосохранении настроек в FAR'а или FAR должен быть не запущен

  • Стандартные фичи far благополучно скрашивающие жизнь и в far2l:

    • скопировать кусок экрана в буфер обмена: Alt-Ins ⇒ стрелками переместится к нужной позиции ⇒ выделение при помощи Shift-стрелки (или мышью) ⇒ Enter или Ctrl-Ins
    • быстрый переход на панели к каталогу/файлу по имени через Alt-буква понимает подстановочные * и ?, дальнейший перескок к удовлетворяющим критерию по Ctrl-[Shift]-Enter
    • эскалация привилегий — редактируешь конфиг в /etc, а при сохранении far2l если нужно запросит права рута (не надо заранее помнить и делать sudo).
  • Получить имя/путь к файлу с панелей:

    • вставка с ккранированием \ в командную строку:
      • Ctrl-Enterимя файла или Ctrl-Fполный путь к файлу из активной панели, Ctrl-Shift-Enterимя файла или Ctrl-;полный путь к файлу из пассивной панели, Ctrl-[ и Ctrl-]полный путь к каталогу из левой или правой панели;
      • если в имени/пути есть пробелы, кавычки и прочие подобные символы, то они экранируются слешом \, т.к. в Linux (в отличии от Windows) в именах допустимы любые символы (в том числе кавычки ") кроме /;
    • копирование в буфер обмена без экранирования обратным слешом в far2l:
      • Ctrl-Insимя файла и Ctrl-Alt-Insполный путь файла с активной панели (ну а затем куда угодно можно вставить через Shift-Ins или Ctrl-V).
  • Ctrl-Alt-F — в истории (команд, папок, просмотра/редактирования файлов), пользовательском меню, меню выбора точек монтирования и т.п. — переключение в режим быстрой фильтрации, т.е. показывать только пункты, содержащие вводимый текст (после включения режима фильтра в меню клавиши перестают выбирать пункты по выставленным hotkeys).

    • для автоматического включения фильтрации в истории команд, папок, просмотра/редактирования файлов можно использовать следующие макросы (спасибо за совет ivanshatsky):
      • классические макросы для far2l (дописывать в файл ~/.config/far2l/settings/key_macros.ini):
        [KeyMacros/Shell/AltF8]
        Sequence=AltF8 CtrlAltF
        
        [KeyMacros/Shell/AltF11]
        Sequence=AltF11 CtrlAltF
        
        [KeyMacros/Shell/AltF12]
        Sequence=AltF12 CtrlAltF
      • lua-макросы для far2m (класть в каталог ~/.config/far2m/Macros/scripts):
        Macro { description="Turn filter on in command/view/edit/folders histories";
          area="Shell Info Tree"; key="AltF8 AltF11 AltF12";
          action = function()
            Keys(mf.akey(1,1).." CtrlAltF")
          end;
        }
  • Фоновое копирование можно осуществлять через протокол file из NetRocks Plugin:

    небольшой лайфхак: far2l не умеет в фоновое копирование, а NetRocks - умеет. А еще NetRocks имеет псевдопротокол file: Так вот, если сейчас в far2l консоли набрать file: - то в панели откроется NetRocks'овый обзор ФС, не сильно не отличающийся от обычного. Но если оттуда начать копирование - то откроется окно "скачивания" NetRocks. С возможностью вывода в фон.

    (источник: https://github.com/elfmz/far2l/issues/247#issuecomment-493710827 )

    А как мониторить/прерывать фоновое копирование?

    фоновое копирование - там пункт появляется в F11. Или через F9/Options/Plugins configuration

    (источник: https://github.com/elfmz/far2l/issues/247#issuecomment-493738355 )

  • Каскадное SSH соединения в NetRocks Plugin:

    • Вопрос: есть ssh до сервера а, а с него ссш до сервера б, реально ли нетроксу объяснить как ходить на сервер б?

    • Ответ [нажмите, чтобы развернуть/скрыть]
      • В файле ~/.ssh/config надо указать цепочку серверов для соединения таким образом (Hostname может быть не только IP адресом, но и именем, которое знает "прокси" хост)
        Host test2.domain
         IdentityFile ~/.ssh/id_rsa.test1
         Hostname 1.2.3.4
         ProxyJump [email protected]:22
        
        Host test3.abc
         IdentityFile ~/.ssh/id_rsa.test2
         Hostname 5.6.7.8
         ProxyJump [email protected]:22
        
      • цепочка соединений здесь такая:
        ( test2.domain ): myhost == >> test1.tld:22 == >> 1.2.3.4
        ( test3.abc ): myhost == >> test2.domain:22 == >> 5.6.7.8
        
      • проверяйте в командной строке с помощью ssh клиента заодно подтвердите по "отпечаткам" хостов, что доверяете им
      • затем тот же самый хост [email protected] прописывайте в NetRocks плагине или в других ssh / sftp клиентах.
  • Использование rclone в NetRocks для различных протоколов (Amazon S3, etc): https://github.com/elfmz/far2l/issues/1816#issuecomment-2267081585

    • [нажмите, чтобы развернуть/скрыть]
      1. Устанавливаем rclone: sudo apt install rclone

      2. Настраиваем подключение, запоминаем его имя (name): rclone config

      3. Создаем в домашней папке два скрипта:

        • nr_rclone_up.sh
          #!/bin/sh
          if [ "$SINGULAR" = 1 ] ; then 
          	rclone serve sftp "$EXTRA": --user "$USER" --pass "$PASSWORD" --addr :"$PORT" >/dev/null 2>&1 &
          	sleep 3
          	echo $! >"$STORAGE"
          fi
          Для быстрых соединений sleep 3 можно заменить на 2 или 1. Для медленных — увеличить.
        • nr_rclone_down.sh
          #!/bin/sh
          if [ "$SINGULAR" = 1 ] && [ -r "$STORAGE" ]; then 
          	kill $(cat "$STORAGE") 
          	unlink "$STORAGE"
          fi
      4. Ставим им право на выполнение: chmod +x nr_rclone*

      5. Создаем новое соединение в NetRocks:

        • Протокол: sftp

        • Хост: localhost

        • Порт: 2022

        • Режим входа: сохраненный пароль (saved password)

        • Имя пользователя: 1111 (любое не пустое, на самом деле)

        • Пароль: 1111 (любой не пустой, на самом деле)

        • Идём в Extra options

          • Command to execute on connect: ~/nr_rclone_up.sh

          • Command to execute on disconnect: ~/nr_rclone_down.sh

          • Extra string passed to command: имя (name) вашего соединения rclone с шага b.

        Сохраняем всё. Подключаемся. Пользуемся.

      Для каждого дополнительного соединения rclone указываем другой свободный порт: 2022, 2023 и т.д. Это позволяет запускать несколько облачных источников одновременно. И копировать между ними, если открыты в разных панелях.

  • Использование в качестве unix-редактора "по умолчанию" (спасибо за совет ivanshatsky):

    • far2l можно прописать в переменной оболочки EDITOR, после чего far2l будет использоваться вместо стандартного vi при вызове всяких команд типа sudo -e или crontab -e или vipw (а также для редактирования описания при вызове git commit :)
    • для большинства программ достаточно указать EDITOR="far2l -e"
    • нюанс: mc не использует при вызове редактора ключ -e и в итоге просто запускает фар (возможно есть и другие такие исключения), поэтому на far2l можно использовать (или самостоятельно сделать) симлинк с именем far2ledit, и прописывать в переменной его, так он будет работать редактором без дополнительных ключей: export EDITOR=farl2edit.
  • Выбор кодовых страниц по F8 в редакторе и просмоторщике. Переключаемые по F8 OEM и ANSI кодовые страницы определяются на основе файла ~/.config/far2l/cp (первая строка — OEM, вторая — ANSI) или, при его отсутствии, переменной среды LC_CTYPE (см. DeduceCodepages() в WinPort/src/APIStringCodepages.cpp)

    • Способ 1: согласно https://github.com/shmuz/far2m/issues/16#issuecomment-1351763055

      Создайте файл ~/.config/far2l/cp, в нём поместите 2 строчки: 866 1251 Перезапустите Фар.

    • Способ 2: переопределить до запуска far переменную среды LANG
      • для запуска через ярлык — в файле /usr/share/applications/far2l.desktop отредактируйте строку Exec=far2l например для русских ANSI=1251 и OEM=866 на Exec=env LANG=ru_RU.UTF8 far2l.
  • Полезности редактора (подробности: в far2l в помощи по F1 см. раздел Редактор / Editor)

    • Alt-Клав.курсора — пометка вертикального блока.

    • Alt-Shift-Клав.курсора — пометка вертикального блока (Shift нужен, если используется NumLock клавиатура).

    • Shift-F2 — пересохранение текущего документа с возможностью изменения кодовой страницы, BOM, перевода строк (CR LF, CR, LF).

    • F5 — вкл/выкл отображения пробельных символов (пробелы, табуляции).

    • Ctrl-F5 — смена для вновь вводимых TAB режима ввода: либо остаются TAB, либо меняются на заданное число пробелов (настраиваются через Shift-F5 или F9/Alt-Shift-F9 или на основе файлов .editorconfig см. https://editorconfig.org/ и https://github.com/elfmz/far2l/issues/1222 ).

    • Работа с парными скобками в редакторе поддерживается на уровне плагина FarColorer (на основе Colorer) и обладает вкусными возможностями доступными изначально лишь через F11⇒FarColorer. Для навешивания на эти возможности комбинаций клавиш (как прописано в помощи по FarColorer, но не работает)

      • классические-макросы для far2l [нажмите, чтобы развернуть/скрыть]

        добавить в ~/.config/far2l/settings/key_macros.ini следующий код (спасибо за совет t.me/yfinkel):

        [KeyMacros/Editor/AltL]
        DisableOutput=0x1
        Sequence=F11 F 1
        Description=Editor->FarColorer->List types
        
        [KeyMacros/Editor/Alt[]
        DisableOutput=0x1
        Sequence=F11 F 2
        Description=Editor->FarColorer->Match pair
        
        [KeyMacros/Editor/Alt]]
        DisableOutput=0x1
        Sequence=F11 F 3
        Description=Editor->FarColorer->Select block
        
        [KeyMacros/Editor/AltP]
        DisableOutput=0x1
        Sequence=F11 F 4
        Description=Editor->FarColorer->Select pair
        
        [KeyMacros/Editor/Alt;]
        DisableOutput=0x1
        Sequence=F11 F 5
        Description=Editor->FarColorer->Outliner list
        
        [KeyMacros/Editor/Alt']
        DisableOutput=0x1
        Sequence=F11 F 6
        Description=Editor->FarColorer->Errors list
        
        [KeyMacros/Editor/AltK]
        DisableOutput=0x1
        Sequence=F11 F 7
        Description=Editor->FarColorer->Select region
        
        [KeyMacros/Editor/AltO]
        DisableOutput=0x1
        Sequence=F11 F 8
        Description=Editor->FarColorer->Find Function
      • lua-макросы для far2m [нажмите, чтобы развернуть/скрыть]

        класть в каталог ~/.config/far2m/Macros/scripts, например, в файл Colorer.lua (спасибо bigvax):

        Macro {
        	description="Colorer: Список типов";
        	area="Editor";
        	key="AltL";
        	action=function()
        		Keys("F11 F 1")
        	end;
        }
        
        Macro {
        	description="Colorer: Найти парную скобку";
        	area="Editor";
        	key="Alt[";
        	action=function()
        		Keys("F11 F 2")
        	end;
        }
        
        Macro {
        	description="Colorer: Выделить блок со скобками";
        	area="Editor";
        	key="Alt]";
        	action=function()
        		Keys("F11 F 3")
        	end;
        }
        Macro {
        	description="Colorer: Выделить блок между скобок";
        	area="Editor";
        	key="AltP";
        	action=function()
        		Keys("F11 F 4")
        	end;
        }
        
        Macro {
        	description="Colorer: Список функций";
        	area="Editor";
        	key="Alt;";
        	action=function()
        		Keys("F11 F 5")
        	end;
        }
        
        Macro {
        	description="Colorer: Список ошибок";
        	area="Editor";
        	key="Alt'";
        	action=function()
        		Keys("F11 F 6")
        	end;
        }
        
        Macro {
        	description="Colorer: Выбрать текущий регион";
        	area="Editor";
        	key="AltK";
        	action=function()
        		Keys("F11 F 7")
        	end;
        }
        
        Macro {
        	description="Colorer: Найти функцию";
        	area="Editor";
        	key="AltO";
        	action=function()
        		Keys("F11 F 8")
        	end;
        }
    • Colorer и большие файлы

      • для экономии ресурсов Colorer при открытии файла обрабатывает только первые 6000 строк файла (в отличии от версии под windows тут это пока не настраивается);
      • если в файле больше 6000 строк, то при переходе на них раскраска Colorer работает как бы в фоне - в рамках общего/одного потока far - и чтобы в far был отзывчивым, там идут прерывания (вроде ждем события от far2l c типом idle и на каждое такое событие разбирается условно 500 строк) - выглядит это медленным;
      • для принудительной раскраски всего большого файла из редактора в меню плагина Colorer F11⇒FarColorer⇒ 9 Update highlighting / 9 Обновить раскраску; при этом запускается разбор файла без прерываний на другие действия (редактор подвисает).
  • Полезности просмотрощика (подробности: в far2l в помощи по F1 см. раздел Программа просмотра: клавиши управления / Viewer: control keys)

    • Ctrl-F7 — grep фильтр (временная фильтрация содержимого просматриваемого файла, используя UNIX-овую утилиту grep).
    • F5 — просмотр в processed mode, позволяющий получить информацию о файле (текстовое представление PDF'ки или технические данные об изображении); для изображений также при наличии внешних программ (chafa и т.п.) полноцветный показ самой картинки (к сожалению, размеры отображения ограничены настройками терминала и разрешение картинки очень низкокачественное).
  • Полезности встроенного терминала — после скрытия обоих панелей (по Ctrl-O) в встроенном терминале доступы различные полезности (полный список: в far2l в помощи по F1 см. раздел Терминал / Terminal, также https://github.com/elfmz/far2l/issues/150#issuecomment-278467291 ):

    • Tab — Автодополнение (на основе FAR2L)

    • Shift-Tab-Tab — Автодополнение (на основе bash)

    • F3 или Ctrl+Shift+F3 или Ctrl+Shift+MouseScrollUp — Терминал⇒Просмотр (вся история терминала в Просмотр — удобно для пролистывания длинного вывода)

    • F4 или Ctrl+Shift+F4 — Терминал⇒Редактор (вся история вывода терминала в Редактор)

      (в просмоторщик/редактор идёт временная копия терминала на момент нажатия F3 или F4 и может не включать дальнейшие изменения в терминале)

    • F8 — Очистка истории терминала и экрана

    • выделение мышью — сразу выделить и в буфер обмена (внимание! в отличии от Alt-Ins не требует дальнейших действий, а сразу при отпускании мыши закидывает в буфер обмена выделенный фрагмент ⇒ может быть нежданное затирание данных в буфере обмена)

  • Фоновый запуск программ, без блокировки терминала far2l:

    • program &: просто добавить в конце & (после пробела) - закроет программу после закрытия far2l;
    • nohup program &: оставит программу запущенной после завершения far2l, но в текущем каталоге создаётся файл nohup.out c выводом проги;
    • nohup program >/dev/null 2>&1 &: оставит программу запущенной после завершения far2l без лишнего вывода.
  • Сохранение/исключение команд из сохранения в истории:

    • в far2l история работает как bash $HISTCONTROL с опциями ignoredups (не сохранять дубликаты подряд) и erasedups (вообще удалять дубликаты из истории);
    • для работы как ignorespace (начинающееся с пробела не попадает в историю) допишите ;" *" в F9⇒Параметры⇒Настройки автозавершения (источник)
  • Пометка символом типов файлов, каталогов, симлинков,... по аналогии с mc и ls -F

    • настраивается через F9⇒Параметры⇒Раскраска файлов и группы сортировки⇒Опциональный символ пометки

    • начиная с сборки 2.6.3-2024-10-05-f9a1d3b8 является дефолтной раскраской по умолчанию

      image

      • для существующих профилей нужно убить вашу текущую раскраску F9⇒Options⇒Files highlighting and sort groups / F9⇒Параметры⇒Раскраска файлов и группы сортировки и нажать Ctrl+R (кому её жалко сохраните предварительно ~/.config/far2l/settings/colors.ini)

      • быстрое глобальное переключение отображения маркеров на панелях через Ctrl+Alt+M или диалог F9⇒Panel settings

      • в текущей схеме по традиции windows far исполняемые файлы после получения маркера * подсвечиваются по расширению за счёт [x] Continue processing (о чем в списке групп "Раскраска файлов" свидетельствут пометка );

      • если Вы хотите, чтобы все исполняемые имели единый цвет, то для записи с маркером * выключите [ ] Continue processing.

      расшифровка символов по аналогии с man mc [нажмите, чтобы развернуть/скрыть]
      ! for broken
      * for executable files (with X mode)
      / for directories
      ~ for symbolic links to directories
      @ for links
      = for sockets
      - for character devices
      + for block devices
      | for pipes
      
    • пример самостоятельной настройки на скриншоте (именно в такой последовательности) [нажмите, чтобы развернуть/скрыть]

      image

  • Использование регулярных выражений (PCRE) в группах файловых масок (доступны везде, где маски, в том числе и поиске имен файлов по Alt-F7): начиная с #1395 в группах файловых масок корректно работают регулярные выражения. Пример использования регистронезависимого расширения для картинок:

    изображение

    Синтаксис регулярных выражений почти полностью совпадает с перловыми регэкспами, подробнее см. в разделе помощи Регулярные выражения для поиска и Regular expressions.

  • Ввод и поиск специальных символов (конец строки и т.п.)

    • В любых полях ввода и редакторе после Ctrl-Q нажимаемая комбинация клавиш обрабатывается в строке как символ, например,

      • Ctrl-Q, Enter введет разрыв строки и отобразится как
      • Ctrl-Q, Esc отобразится как и т.п.

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

    • Например, при поиске по файлам через Alt-F7 поиск с текстом пробел, Ctrl-Q, Enter введёт и найдёт файлы, содержащие концы строк с пробелами.

    • Внутри редактора текста стандартный поиск/замена по F7/Ctrl-F7 ищет только внутри каждой строки, соответственно для поиска текста около начала/конца строк использовать регулярные выражения (включается галочкой), например по шаблону /\s$/ — пробелы в концах строк, /^\s/ — пробелы в начале строк и т.п.

    • В поле замены для замены внутри редактора найденного по строкам фрагмента на многострочный текст помогает в нужных местах ввести разрыв строк через последовательность Ctrl-Q, Enter.

      В far2m поиск/замену на нескольких строках умеет lua-плагин LF Search.

  • Разные макросы и кастомизации (клавиатурные макросы дописывать в файл ~/.config/far2l/settings/key_macros.ini, затем закрыть и открыть far2l):

    • костыль по вызову внешних программ сравнения выбранных на панелях файлов (спасибо bigvax): https://github.com/elfmz/far2l/issues/1042#issuecomment-983533025

    • костыль подсветки как выполняемых только с атрибутом X (по умолчанию также по списку расширений): https://github.com/elfmz/far2l/issues/1377#issuecomment-1304708792

    • альтернативный режим панели файлов (спасибо bigvax): https://github.com/elfmz/far2l/discussions/1300

    • Lynx style motion и разные макросы от bigvax: https://github.com/elfmz/far2l/discussions/1146

    • макросы для работы с выделением и для навигации по папкам от michel-nk: https://github.com/elfmz/far2l/discussions/2266

    • клавиатурные макросы для урезанных клавиатур (без Grey NumPad и, например, в MacBookPro 13" клавиатура не имеет Ins и т.п.)

      • https://github.com/corporateshark/far2l-macros/issues/6

      • макросы аналогично клавишам Grey NumPad +, - и * (Ctrl+= как аналог Grey+, Ctrl+- как аналог Grey- и Ctrl+Shift+8 как аналог Grey*):

        [KeyMacros/Shell/Ctrl=]
        Description=Select group
        DisableOutput=0x1
        Sequence=Add
        
        [KeyMacros/Shell/Ctrl-]
        Description=Deselect group
        DisableOutput=0x1
        Sequence=Subtract
        
        [KeyMacros/Shell/CtrlShift8]
        Description=Invert selection
        DisableOutput=0x1
        Sequence=Multiply
      • в качестве Ins использовать пробел (только на панелях)

        [KeyMacros/Shell/Space]
        DisableOutput=0x1
        EmptyCommandLine=0x1
        NoSendKeysToPlugins=0x1
        Sequence=Num0
      • в качестве Ins использовать Ctrl-Shift-T (везде, в том числе и в меню по F2)

        [KeyMacros/Common/CtrlShiftT]
        DisableOutput=0x1
        Sequence=Ins
      • альтернатива F1...F10 в виде Alt+1...Alt+0 (на практике может быть удобнее для клавиатур, где ряд функциональных клавиш доступен только через Fn), в чистом терминале также соответствует последовательному нажатию Esc,цифра как традиционно в mc (подробности и обсуждение https://github.com/elfmz/far2l/issues/2317#issuecomment-2256927220):

        [KeyMacros/Common/Alt1]
        Sequence=F1
        Description=Alt+1 as alternative to F1
        
        [KeyMacros/Common/Alt2]
        Sequence=F2
        Description=Alt+2 as alternative to F2
        
        [KeyMacros/Common/Alt3]
        Sequence=F3
        Description=Alt+3 as alternative to F3
        
        [KeyMacros/Common/Alt4]
        Sequence=F4
        Description=Alt+4 as alternative to F4
        
        [KeyMacros/Common/Alt5]
        Sequence=F5
        Description=Alt+5 as alternative to F5
        
        [KeyMacros/Common/Alt6]
        Sequence=F6
        Description=Alt+6 as alternative to F6
        
        [KeyMacros/Common/Alt7]
        Sequence=F7
        Description=Alt+7 as alternative to F7
        
        [KeyMacros/Common/Alt8]
        Sequence=F8
        Description=Alt+8 as alternative to F8
        
        [KeyMacros/Common/Alt9]
        Sequence=F9
        Description=Alt+9 as alternative to F9
        
        [KeyMacros/Common/Alt0]
        Sequence=F10
        Description=Alt+0 as alternative to F10
    • переход на неактивной панели не только в тот же каталог, но и позиционирование курсора на тот же файл, что и в исходной панели (в примере навешено на Alt-])

      [KeyMacros/Shell/Alt]]
      DisableOutput=0x1
      Sequence=Tab Ctrl\ CtrlPgUp - Tab $If (((APanel.Bof && APanel.Root) || ! APanel.Bof) && PPanel.Visible) Panel.SetPath(1,PPanel.Path,APanel.Current) $Else $End
    • пример вызова плагина по имени (к сожалению GUID плагина добавлены только с far3)

      [KeyMacros/Shell/AltC]
      DisableOutput=0x1
      Sequence=F11 $If (Menu.Select("Advanced compare",3) || Menu.Select("Расширенное сравнение",3)) Enter $Else Esc MsgBox("Warning","Advanced compare plugin is not installed!",1) $End
    • поиск в панелях аналогично MC по нажатию Ctrl-S

      [KeyMacros/Shell/CtrlS]
      DisableOutput=0x1
      Sequence=Alt0 BS
  • Быстрый переход к точке монтирования файловой системы текущего каталога по Ctrl-Alt-\ (начиная с сборки 26.10.2024, для более старых версий можно использовать макрос из https://github.com/elfmz/far2l/issues/2010#issuecomment-1975182538 )

  • Особенности обработки символьных ссылок:

  • Изменение шрифта far2l-GUI:

    • F9⇒Параметры⇒Настройки интерфейса⇒Выбрать шрифт (F9⇒Options⇒Interface settings⇒Change font)
    • Шрифт ttf 10x18 "FAR как в консоли windows": https://github.com/elfmz/far2l/issues/886

Выборочный список комбинаций клавиш far2l

(подробнее см. в far2l по F1 в помощи)

Везде:
* Ctrl-Alt-Shift — Временно убрать обе панели / текущий диалог и т.п.
                   (работает до тех пор, пока удерживаем эти клавиши)
* Alt-F9 или Alt-Enter — окно во весь экран (не все терминалы поддерживают)
* Alt-Ins — скопировать кусок экрана в буфер обмена:
    Alt-Ins ⇒ [стрелки/Home/End/PgUp/PgDown] — переместится к нужной позиции
            ⇒ Shift-[стрелки/Home/End/PgUp/PgDown] (или мышью) — выделение куска экрана
            ⇒ Enter или Ctrl-Ins — копирование выделенного в буфер обмена
* F1 — помощь
* F11 — список и запуск доступных плагинов (свой различный список для панелей/просмоторщика/редактора)
* F12 — список и переключением между открытыми внутри far2l окна/экранами
                                (панели, файлы в редакторе/просмотрощике)
* Ctrl-Tab и Ctrl-Shift-Tab — переключением между окнами/экранами в прямом и обратном порядке
                  [окно терминала по Ctrl-O не считается отдельным экраном, а идёт как панели,
                   однако, открытое в нём по F3 или F4 есть отдельный экран временной копии терминала]

Внутри помощи:
* Alt-F1 или BS — переход на предыдущую страницу
* Shift-F2 — переход к темам помощи по внешним модулям (plugins)
* Shift-F1 — содержание помощи
* F7 — поиск по помощи (отображает разделы справки, содержащие искомый фрагмент текста)
    В зависимости от текущей страницы Shift-F1 и F7 работают 
    либо с помощью основного far, либо выбранного плагина

На панелях:
* Enter — Запуск (в консоли far), смена каталога, вход в архив
* Shift-Enter — Запуск в отдельном окне, открытие каталога средствами оболочки

* Ins или Shift-Down — пометить/снять пометку файла и сдвинуться вниз
* Shift-Up — пометить/снять пометку файла и сдвинуться вверх

* Ctrl-\ — Сменить каталог на корневой (/)
* Ctrl-Alt-\ — Сменить каталог на точку монтирования файловой системы текущего каталога
* Ctrl-` — Сменить каталог на домашний (~)
* Ctrl-PgDn — Смена каталога, вход в архив
* Ctrl-Shift-PgDn — аналогично Ctrl-PgDn + для symlink переход к расположению оригинального файла
* Ctrl-PgUp — Перейти в каталог уровнем выше (из корня в меню точек монтирования / файловых плагинов)
* Ctrl-Shift-PgUp — если ранее был переход по Ctrl-Shift-PgDn на symlink, то возврат к symlink

* Ctrl-J, Ctrl-Enter — Вставить имя файла из активной панели (с экранированием)
* Ctrl-Shift-Enter — Вставить имя файла из пассивной панели (с экранированием)
* Ctrl-[ и Ctrl-] — Вставить полный путь к текущему каталогу из левой или правой панели (с экранированием)
                    [действуют также в редакторе и диалоговых окнах без экранирования]
* Ctrl-F — Вставить полное имя файла из активной панели (с экранированием)
* Ctrl-; — Вставить полное имя файла из пассивной панели (с экранированием)
* Ctrl-Ins — Копирование имени файла из активной панели в буфер обмена (без экранирования)
* Ctrl-Alt-Ins — Копирование полного пути из активной панели в буфер обмена (без экранирования)

* Ctrl-E — Предыдущая команда (в командной строке)
* Ctrl-X — Следующая команда (в командной строке)
* Ctrl-Y — Очистить командную строку
* Alt-F8 — Показать историю команд
* Alt-F11 — Показать историю просмотра и редактирования
* Alt-F12 — Показать историю папок

* Ctrl-Up, Ctrl-Down — Изменить высоту панелей
                     — История в строках редактирования диалогов
* Ctrl-Shift-Up, Ctrl-Shift-Down — Изменить высоту текущей панели
* Ctrl-Left, Ctrl-Right — Изменить ширину (при пустой командной строке)

* Alt-Left, Alt-Right, Alt-Home, Alt-End — Прокрутка длинных имён и описаний

* Alt-буква — быстрый переход на панели к каталогу/файлу по имени понимает подстановочные * и ?,
              дальнейший перескок к удовлетворяющим критерию по Ctrl-[Shift]-Enter

В истории (команд, папок, просмотра/редактирования файлов),
пользовательском меню, меню выбора точек монтирования и т.п.
* Ctrl-Alt-F — переключение в режим быстрой фильтрации,
               т.е. показывать только пункты, содержащие вводимый текст
* Ctrl-F10 — Позиционировать на активной панели в каталог и, по возможности, на файл текущего пункта истории
* Ctrl-T — Переключение вида истории:
           - с строками дат + колонка времени
           - с строками дат (как в far3)
           - просто история (как в far2)

В встроенном терминале (после скрытия обоих панелей по Ctrl-O):
* Tab — Автодополнение (на основе FAR2L)
* Shift-Tab-Tab — Автодополнение (на основе bash)
* F3 или Ctrl+Shift+F3 или Ctrl+Shift+MouseScrollUp — Терминал->Просмотр
     (вся история терминала в Просмотр — удобно для пролистывания длинного вывода)
* F4 или Ctrl+Shift+F4 — Терминал->Редактор
     (вся история вывода терминала в Редактор)
  [в просмоторщик/редактор идёт временная копия терминала на момент нажатия F3 или F4 
   и может не включать дальнейшие изменения в терминале]
* F8 — Очистка истории терминала и экрана
* выделение мышью — сразу выделить и в буфер обмена
   (внимание! в отличии от Alt-Ins не требует дальнейших действий, 
    а сразу при отпускании мыши закидывает в буфер обмена выделенный фрагмент
    ⇒ может быть нежданное затирание данных в буфере обмена)

В редакторе:
* Ctrl-Up или Ctrl-Down — Прокрутка экрана вверх / вниз
                          (текст в редакторе должен быть длиннее высоты экрана)
* Ctrl-Left и Ctrl-Right — Перескок по словам влево/вправо
* Ctrl-Shift-Left и Ctrl-Shift-Right — Пометка по словам влево/вправо
* Alt+[стрелки/Home/End/PgUp/PgDown] — Пометка вертикального блока
* Alt+Shift+[стрелки/Home/End/PgUp/PgDown] — Пометка вертикального блока
                                             (Shift нужен, если используется NumLock клавиатура)
* Alt-BS, Ctrl-Z — Undo
* Ctrl-Shift-Z — Redo
* Ctrl-L — Запретить модификацию редактируемого текста (полезно для просмотра с подсветкой синтаксиса)
* F7 — Поиск
* Shift-F7 — Продолжить поиск
* Alt-F7 — Продолжить поиск в обратном направлении
* Ctrl-Shift-B — Show/Hide status line
* Shift-F2 — Сохранить файл как (с возможностью изменить кодировку, BOM, символы перевода строк и т.п.)
* F5 — вкл/выкл отображения пробельных символов (пробелы, табуляции).
* Ctrl-F5 — смена для вновь вводимых TAB режима ввода:
            либо остаются TAB, либо меняются на заданное число пробелов
            (настраиваются через Shift-F5 или F9/Alt-Shift-F9 или на основе файлов .editorconfig)
* Ctrl-F — Вставить полное имя редактируемого файла (без экранирования)
* Ctrl-[ и Ctrl-] — Вставить полный путь к текущему каталогу из левой или правой панели (без экранирования)
* Ctrl-F10 — Позиционировать на активной панели в каталог и текущий редактируемый файл (без выхода из редактора)

Особенности работы с portable-сборками

  • Все выкладываемые в настоящий момент на https://github.com/spvkgn/far2l-portable/releases и https://github.com/spvkgn/far2m-portable/releases сборки собраны на основе TTY|Xi под соответствующую платформу (aarch64, amd64, i386). В сборках опции «одиночное нажатие ESC», «поддержка OSC 52» и «автосохранение настроек» включены по умолчанию.

  • Portable-сборка является файлом с именем far2l_<что-то-там>.run, который при запуске разворачивается в /tmp и затем стартует корректно увязывая относительные пути ко всем интегрированным в архив библиотекам

    • брать <что-то-там> соответствующий выводу в вашей системе команды uname -m, т.е. far2l_$(uname -m).run.tar. Например, far2l_x86_64.run.tar
    • для запуска либо должны быть выставлены права на выполнение файла chmod +x far2l_<что-то-там>.run или пускать явно через sh ./far2l_<что-то-там>.run;
    • /tmp также должен быть смонтирован в систему с правами выполнения файлов на нём;
    • ./far2l_<что-то-там>.run --target ./far2l — запуск с распаковкой в директорию far2l вместо /tmp;
    • ./far2l_<что-то-там>.run --help — список ключей запуска распаковщика.
  • Запуск портабельной версии с параметрами: надо с двойным указанием первого параметра, то есть far2l_<что-то-там>.run -- --nodetect=xi -cd / (первый пустой параметр --, относится к самому архиву, а затем уже указываются последующие ключи, передающиеся внутрь в far2l).

  • По умолчанию хранит настройки где и обычная в ~/.config/far2l, но можно при запуске в командной строке задать, например, ./far2l_<что-то-там>.run -- -u $(pwd)/far2l_profile будет сохранять все настройки в папку far2l_profile внутри текущей.

  • Если Вы скопировали развернутую портабельную версию, то в этом случае

    • запускать распакованный ./far2l ОБЯЗАТЕЛЬНО только, когда ТЕКУЩИМ КАТАЛОГОМ является каталог с ./far2l (иначе не сработают относительные пути);
    • обходной путь — запускать через far2l.sh
      #!/bin/bash
      pushd "$(pwd)"
      cd "$(dirname "$0")"
      chmod +x lib/ld-linux*
      chmod +x far2l
      chmod +x far2l_sudoapp
      chmod +x far2l_askpass
      find . -type f -iname "*far-plug*" -exec chmod +x {} \;
      find . -type f -iname "*.broker" -exec chmod +x {} \;
      ./far2l
      popd

    Portable версия тащит в себе собственный загрузчик, возможно отличный от системного (потому что к нему привязана собственная версия Си-библиотеки libc, а к ней — все остальные используемые portable-версией библиотеки), а указать путь к кастомному загрузчику в бинарнике можно только относительно текущей папки.