Как отключить поддержку мыши в mcedit, когда он вызывается через F4 из mc?

Вопрос или проблема

У меня есть проблема с Midnight Commander, которая меня чрезвычайно раздражает. Надеюсь, вы сможете мне помочь.

Я хочу использовать Midnight Commander без поддержки мыши, чтобы действия мышкой инициировали функциональность моего эмулятора терминала X, а не передавались Midnight Commander. Поэтому я вызываю Midnight Commander с опцией командной строки, делающей это, через псевдоним

alias mc="mc -d"

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

Я знаю, что опция -d работает, когда я вручную вызываю редактор с mcedit -d и файлом. Как мне получить то же самое, когда mc вызывает редактор с помощью F4?

Midnight Commander имеет возможность не использовать мышь как для своих программ mc, так и mcedit, и я хочу знать, как включить ее во всем Midnight Commander, включая вызов его, по-видимому, внутреннего редактора (который, если он действительно внутренний, уж точно должен уважать опцию -d, которую я указал для mc).

Позжее исправление: у меня переменные оболочки EDITOR и VISUAL установлены на ‘/usr/bin/mcedit’, теперь я просто изменил их на /usr/bin/mcedit -d … все равно не работает, затем я попытался установить путь с более высоким приоритетом, где поместил скрипт, называемый mcedit, который вызывает /usr/bin/mcedit -d $* (проверил, что он первый с which mcedit) … все равно та же проблема

У меня была такая же проблема, и я решил ее, создав bash файл алиас mcedit:

  1. Переименуйте /usr/bin/mcedit в /usr/bin/mcedit_orig
  2. И добавьте новый bash скрипт файл /usr/bin/mcedit с содержимым:
!/bin/bash

mcedit_orig -d "$@"
  1. Измените права файла /usr/bin/mcedit на 755, используя эту команду:
chmod +x /usr/bin/mcedit

mc будет работать, как вы его запустите, а mcedit всегда будет запускаться с параметром -d

Изменение SELECTED_EDITOR="/usr/bin/mcedit" на SELECTED_EDITOR="/usr/bin/mcedit --nomouse" в ~/.selected_editor сработало для меня:

$ cat .selected_editor 
# Сгенерировано /usr/bin/select-editor
SELECTED_EDITOR="/usr/bin/mcedit --nomouse"

Ответ или решение

Чтобы решить проблему отключения поддержки мыши в mcedit, когда он вызывается из Midnight Commander (MC) с помощью нажатия клавиши F4, необходимо понимать, как Midnight Commander обрабатывает внутреннее редактирование файлов.

Теория:
Midnight Commander (MC) — это популярный текстовый файловый менеджер с поддержкой графического интерфейса на базе терминала. В MC встроена функция внутреннего редактора mcedit, который вызывается при нажатии клавиши F4. Важно понимать, что при вызове mcedit таким образом, MC использует свою собственную конфигурацию и параметры выполнения, что может отличаться от тех, которые задаются в командной строке при непосредственном запуске mcedit.

Пример:
На уровне командной строки MC разрешает отключение поддержки мыши при помощи флага -d, однако, когда вы нажимаете F4, ожидая, что будет выполнен встроенный редактор с теми же параметрами, MC может не передавать этот флаг -d автоматически. Это вызвано тем, что алгоритм обработки клавишной команды F4 в MC закреплен в конфигурации программы и не всегда напрямую связан с запуском mc из командной строки.

Применение:
Вот как можно последовательно отключить поддержку мыши в mcedit, когда он вызывается из MC, используя несколько подходов, каждый из которых может быть адаптирован в зависимости от вашей конфигурации системы:

  1. Создание Исполняемого Скрипта-Обертки:

    • Переименуйте оригинальный mcedit в mcedit_orig:
      sudo mv /usr/bin/mcedit /usr/bin/mcedit_orig
    • Создайте новый bash-скрипт по адресу /usr/bin/mcedit:
      sudo nano /usr/bin/mcedit
    • Наполните скрипт следующим содержимым:
      #!/bin/bash
      /usr/bin/mcedit_orig -d "$@"
    • Убедитесь, что скрипт имеет права на выполнение:
      sudo chmod +x /usr/bin/mcedit

      Этот метод заменяет изначальный вызов редактора на вызов с флагом -d, обеспечивая отсутствие поддержки мыши.

  2. Изменение Конфигурации SELECTED_EDITOR:

    • Отредактируйте файл ~/.selected_editor:
      nano ~/.selected_editor
    • Измените строку:
      SELECTED_EDITOR="/usr/bin/mcedit"

      на

      SELECTED_EDITOR="/usr/bin/mcedit --nomouse"

      Этот метод позволяет присвоить программе редактора параметр отключения мыши, который будет применяться всякий раз при вызове редактора.

  3. Алиасы и переменные окружения:

    • Несмотря на то, что вы уже попытались использовать alias и изменить переменные среды EDITOR и VISUAL, важно убедиться, что MC при вызове F4 действительно ссылается на эти переменные. Попробуйте добавить в ваш ~/.bashrc:
      export EDITOR="/usr/bin/mcedit -d"
      export VISUAL="/usr/bin/mcedit -d"
    • Примените изменения:
      source ~/.bashrc

Эти подходы помогают обеспечить, чтобы вызов mcedit с флагом -d рассматривался как стандарт, даже когда MC использует внутреннее редактирование файлов, гарантируя, что все мышиные события обрабатываются исключительно вашей терминальной программой, а не MC.

Таким образом, вы можете настроить свою рабочую среду так, чтобы Midnight Commander и его внутренний редактор удовлетворяли вашим специфическим требованиям к функциональности, таким как управление мышью через терминал. Это достигается за счет правильной настройки системы и понимания работы Midnight Commander с внешними редакторами.

Оцените материал
Добавить комментарий

Капча загружается...