Midnight Commander (Русский)
Midnight Commander — двухпанельный файловый менеджер, поддерживающий стандартные файловые операции, виртуальные файловые системы, панелизацию внешних комманд и пользовательские меню. Он также включает в себя встроенный просмотрщик, редактор файлов и инструмент для просмотра различий.
Midnight Commander имеет графический интерфейс, который отображается в текстовом режиме. Он работает в обычной консоли, внутри терминала X и через SSH-соединение на всех видах терминалов.
Установка
Установите пакет mc.
Последняя нестабильная версия доступна в пакете mc-gitAUR.
Дополнительные темы
Midnight Commander поставляется с большим числом встроенных тем. Вы можете выбрать тему в меню Настройки > Оформление.
Можно дополнительно установить сторонние темы:
- mc-solarized-git — Цветовая схема Solarized
- mc-skin-modarin-debian — Thin versions of the modarin theme
Смотрите также mc(1) § Skins.
Использование
В этом разделе представлен краткий обзор использования Midnight Commander.
/usr/share/mc/hints/
.Интерфейс
Основой интерфейса являются две вертикальные панели. Каждая может отобразить содержимое каталога, показать предварительный просмотр обычного текста, сведения о файле или дерево каталогов (смотрите mc(1) § Directory Tree). Операции с файлами доступны с помощью функциональных клавиш или мыши. Дополнительные параметры отображаются в динамическом меню пользователя (F2
) и меню параметров (F9
). Клавиши после F12 (от F13
до F20
) доступны через Shift
. Некоторые надписи в пунктах меню и диалоговых окнах имеют одну выделенную букву — нажатие этой буквы (или Alt+Буква
, если фокус находится в поле ввода) сразу выполняет соответствующее действие.
Под панелями есть командная строка, в которой запущена командная оболочка. Она обычно относится к тому же типу, из которого был запущен mc. В неё можно переключиться (Ctrl+o
), смотрите mc(1) § The subshell support. В этой командной строке команду cd
обрабатывает сам Midnight Commander и не передаёт её оболочке для выполнения. Файлы в панели взаимодействуют с командной строкой; например, Alt+Enter
копирует имя (выбранного) файла в командную строку.
Сочетания клавиш в целом аналогичны GNU Emacs. Можно включить более строгую раскладку клавиш emacs (смотрите mc(1) § Redefine hotkey bindings). Однако новые пользователи могут использовать Lynx-подобные (стрелочные) привязки клавиш (включаются в меню Настройки > Настройки панелей) и клики мышью для навигации.
Поддержка мыши в виртуальной консоли Linux может быть получена с помощью GPM.
Модули
Их можно вызывать через интерфейс mc (с включенными пунктами Встроенный в меню Настройки > Конфигурация) или отдельно как символические ссылки на двоичный файл mc.
- mcedit — Редактор текстовых и двоичных файлов с поддержкой замены с помощью регулярных выражений, подсветкой синтаксиса, макросами и shell piping, смотрите mcedit(1)
- mcview — Просмотрщик текста и шестнадцатеричного кода с goto метками и поиском по регулярному выражению
- mcdiff — Сравнивает и редактирует два файла на месте (
Ctrl+x
d
)
Можно запускать несколько модулей одновременно в пределах одного экземпляра mc
и переключаться между ними с помощью Alt+`
(смотрите mc(1) § Screen selector). Вместо них можно использовать внешние редакторы и соответствующим образом настроить параметры.
Настройка
Большинство настроек Midnight Commander можно изменить из меню. Однако небольшое количество настроек, таких как команды буфера обмена, определение кодировки и параметры для внешних редакторов, меняется только через файл ~/.config/mc/ini
. Описание настроек можно почитать в mc(1) § Special Settings.
Также для настройки используются следующие переменные окружения:
MC_SKIN
, MC_KEYMAP
, MC_XDG_OPEN
, MC_COLOR_TABLE
, MC_DATADIR
, MC_HOME
, KEYBOARD_KEY_TIMEOUT_US
, PAGER
, EDITOR
, VIEWER
.
Смотрите также mc(1) § FILES.
extfs
extfs позволяет легко создавать новые виртуальные файловые системы для mc. Для более подробной информации смотрите /usr/lib/mc/extfs.d/README
.
Советы и рекомендации
Запуск из меню
Midnight Commander можно запускать из меню, создав файл desktop entry. Пример:
[Desktop Entry] Type=Application Version=1.0 Name=Midnight Commander Comment=Visual file manager Exec=mc Icon=folder MimeType=inode/directory Terminal=true Categories=Utility;
Поддержка корзины
Midnight Commander не поддерживает функцию корзины.
Использование libtrash
Библиотека libtrash перехватывает вызовы функций удаления файлов и вместо удаления выполняет перемещение файлов в корзину.
Установите libtrashAUR и создайте псевдоним для mc в файле инициализации вашей командной оболочки (например, ~/.bashrc
или ~/.zshrc
):
alias mc='LD_PRELOAD=/usr/lib/libtrash.so mc'
Чтобы изменения вступили в силу, переоткройте сеанс терминала или просто выполните скрипт инициализации командой source.
Стандартные настройки библиотеки находятся в файле /etc/libtrash.conf.sys
; по умолчанию для корзины используется каталог ~/Trash/
. Вы можете переопределить их для текущего пользователя, создав пользовательский файл настроек ~/.libtrash
, например:
TRASH_CAN = .Trash INTERCEPT_RENAME = NO IGNORE_EXTENSIONS= o;exe;com UNCOVER_DIRS=/dev
Теперь файлы, удаляемые через mc, будут попадать в каталог ~/.Trash/
.
- У этого способа существует побочный эффект: программы, запущенные из mc наследуют переменную окружения
LD_PRELOAD
, которая может вызывать проблемы в их работе. Смотрите [1] для более подробной информации. - С установленной опцией
GLOBAL_PROTECTION = YES
(значение по умолчанию), файлы вне домашнего каталога будут попадать в корзину, даже если они находятся на другом разделе диска. Такие файлы фактически перемещаются копированием и удалением из исходного расположения, поэтому процедура удаления в корзину файла на другом разделе может занимать продолжительное время.
Смотрите также [2].
Решение проблем
Выход в текущий каталог
При выходе командная оболочка вернёт вас в тот каталог, в котором вы запустили Midnight Commander. Если вы хотите, чтобы оставался текущий каталог, выбранный в Midnight Commander, можно использовать специальный скрипт-обёртку, который выполнит переход в текущий каталог после закрытия mc. Добавьте алиас в ваш ~/.bashrc
или ~/.zhsrc
:
alias mc=". /usr/lib/mc/mc-wrapper.sh"
Теперь команда mc
будет запускать этот скрипт-обёртку.
Другим простым решением будет просто скрывать интерфейс, не прерывая сеанс программы, нажатием Ctrl+O
. Однако это может мешать работе других приложений в терминале.
Искаженное изображение
Нажмите Ctrl+L
для перерисовки интерфейса. Эта команда перерисует изображение, но не обновит список файлов в каталогах. Для обновления списка файлов на панелях используйте Ctrl+R
.
Открытие файлов
Для открытия файлов mc считывает переменную окружения MC_XDG_OPEN
(если она не указана, по умолчанию используется xdg-open). [3]
Если mc блокируется до завершения процесса или процесс завершается вместе с mc, используйте nohup &
:
~/bin/nohup-open
#!/bin/bash nohup xdg-open "$@" &
И пропишите MC_XDG_OPEN
соответственно:
$ export MC_XDG_OPEN=~/bin/nohup-open
unset LD_PRELOAD
перед xdg-open в этом скрипте.Поиск файла ничего не находит
Если Поиск файла ничего не может найти, проверьте текущий каталог на наличие символических ссылок. Поиск файлов не переходит по символическим ссылкам, поэтому вместо них используйте bind mount (смотрите mount(8)) или команду Внешняя панелизация.
Сломаны сочетания клавиш
С некоторыми определениями терминалов вроде screen-256color
или xterm-termite
сочетания клавиш, такие как Shift+F6
, могут не работать или работать как другие сочетания. Чтобы исправить это, назначьте последовательности терминала вручную в диалоговом окне Распознавание клавиш в настройках.
Настройки сохранятся в ~/.config/mc/ini
, например для screen-256color
:
F13
–F20
назначены на Shift+F3
–Shift+F10
.[terminal:screen-256color] f1=\\eOP f2=\\eOQ f3=\\eOR f4=\\eOS f5=\\e[15~ f6=\\e[17~ f7=\\e[18~ f8=\\e[19~ f9=\\e[20~ f10=\\e[21~ f11=\\e[23~ f12=\\e[24~ f13=\\e[1\;2R f14=\\e[1\;2S f15=\\e[15\;2~ f16=\\e[17\;2~ f17=\\e[18\;2~ f18=\\e[19\;2~ f19=\\e[20\;2~ f20=\\e[21\;2~ complete=\\e^i backtab=\\e[Z backspace=^?
Нет жирного текста в urxvt
При запуске в urxvt с настройкой TERM
по умолчанию, текст, который обычно выделяется жирным шрифтом во многих других терминалах, здесь не будет жирным. Корень проблемы в том, что xterm объединяет яркий цвет текста с атрибутом жирного шрифта (таким образом, яркие цвета всегда будут отображаться жирным шрифтом в xterm).
urxvt не имеет этого ограничения, которому следует Slang (библиотека, которую mc использует для отображения текста по умолчанию). Поскольку Slang может отделить полужирный атрибут от ярких цветов на urxvt, mc потребуется явно указать полужирный атрибут, если это необходимо (чего он не делает).
Решение состоит в том, чтобы настроить mc на явное использование полужирных цветов по желанию, например отредактировав скин по умолчанию следующим образом:
$ mkdir ~/.local/share/mc/skins $ cp /usr/share/mc/skins/default.ini ~/.local/share/mc/skins/ $ sed -i -E 's/^(.* = (gray|brightred|brightgreen|yellow|brightblue|brightmagenta|brightcyan|white);.*)$/\0;bold/' ~/.local/share/mc/skins/default.ini
Это создаст копию скина по умолчанию, но со всеми яркими цветами, имеющими явный добавленный полужирный атрибут.
Другой обходной путь — прописать TERM=xterm
, однако это вызывает другие проблемы из-за несоответствия termcap/terminfo, например, некоторые клавиши не работают.