Jump to content
From ArchWiki
Состояние перевода: На этой странице представлен перевод статьи Midnight Commander. Дата последней синхронизации: 28 декабря 2021. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

Ссылки по теме

- Функциональность файлового менеджера
- ranger
- nnn (Русский)

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

Midnight Commander имеет графический интерфейс, который отображается в текстовом режиме. Он работает в обычной консоли, внутри терминала X и через SSH-соединение на всех видах терминалов.

## Установка

Установите пакет mc.

Последняя нестабильная версия доступна в пакете mc-gitAUR.

### Дополнительные темы

Midnight Commander поставляется с большим числом встроенных тем. Вы можете выбрать тему в меню Настройки > Оформление.

Можно дополнительно установить сторонние темы:

- mc-solarized-git — Цветовая схема Solarized

  https://github.com/nkulikov/mc-solarized-skin || mc-solarized-gitAUR

- mc-skin-modarin-debian — Thin versions of the modarin theme

  https://launchpad.net/debian/+source/mc/3:4.8.13-3 || mc-skin-modarin-debianAUR

Смотрите также 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

Совет: Если вы настроили #Использование libtrash, также добавьте `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, например, некоторые клавиши не работают.

## Смотрите также

- mc(1)
- Черновик документации

Categories:

- File managers (Русский)
- Console applications (Русский)