Вопрос или проблема
У меня есть проблема с 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
:
- Переименуйте
/usr/bin/mcedit
в/usr/bin/mcedit_orig
- И добавьте новый bash скрипт файл
/usr/bin/mcedit
с содержимым:
!/bin/bash
mcedit_orig -d "$@"
- Измените права файла
/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, используя несколько подходов, каждый из которых может быть адаптирован в зависимости от вашей конфигурации системы:
-
Создание Исполняемого Скрипта-Обертки:
- Переименуйте оригинальный
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
, обеспечивая отсутствие поддержки мыши.
- Переименуйте оригинальный
-
Изменение Конфигурации SELECTED_EDITOR:
- Отредактируйте файл
~/.selected_editor
:nano ~/.selected_editor
- Измените строку:
SELECTED_EDITOR="/usr/bin/mcedit"
на
SELECTED_EDITOR="/usr/bin/mcedit --nomouse"
Этот метод позволяет присвоить программе редактора параметр отключения мыши, который будет применяться всякий раз при вызове редактора.
- Отредактируйте файл
-
Алиасы и переменные окружения:
- Несмотря на то, что вы уже попытались использовать
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 с внешними редакторами.