Заметки о решаемых задачах АйТишников

Сделал - запиши. Нашёл - сохрани :)

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

Midnight Commander: расширенная справка

Midnight Commander: расширенная справка

 

 

 

Midnight Commander и Subshell

Поддержка Subshell

Поддержка subshell представляет собой опцию компиляции, совместимую с оболочками bash, tcsh и zsh.

При включенной поддержке subshell Midnight Commander создаёт точную копию вашей оболочки (определённой в переменной окружения SHELL или, если она не задана, в файле /etc/passwd) и запускает её в псевдо-терминале. Вместо запуска новой оболочки для каждой команды введённая команда передаётся в subshell. Это позволяет изменять переменные окружения, использовать функции shell и алиасы, которые сохраняются до выхода из Midnight Commander.

Для пользователей bash команды запуска subshell можно указать в файле ~/.local/share/mc/bashrc, а специальную раскладку клавиатуры — в ~/.local/share/mc/inputrc. Пользователи tcsh могут настроить команды в ~/.local/share/mc/tcshrc.

Во время работы приложения в subshell нажмите C-o, чтобы переключиться обратно в Midnight Commander (текущая команда или приложение приостановится). Если вы прервёте выполнение таким образом, запуск других внешних команд будет невозможен до завершения остановленного процесса.

Ключевой особенностью является то, что подсказка (prompt) в Midnight Commander совпадает с вашей обычной оболочкой.

Дополнительные детали по настройке subshell см. в разделе "Опции запуска".

После установки Midnight Commander в FreeBSD 12 выводится предупреждение о проблемах с subshell при использовании /bin/sh:

Message from mc-4.8.30:
--
Midnight Commander was built with subshell support, which works with most
popular shells, e.g. bash(1), dash(1), tcsh(1), zsh(1), but not sh(1) due
to its lack of "precmd" or equivalent hooks which mc(1) needs to read the
subshell's current directory.
$ env SHELL=/bin/sh mc
common.c: unimplemented subshell type 1
read (subshell_pty...): No such file or directory (2)
Please either use more advanced interactive shell, or start mc(1) with -u
(--nosubshell) switch if you're confined to /bin/sh for some reason.

Как указано в сообщении, при использовании /bin/sh проблему можно обойти запуском с флагом -u (или --nosubshell).

Для понимания терминов вроде precmd hook, subshell support или subshell в Linux множество объяснений доступно в интернете. Также могут быть полезны дополнительные ресурсы.

Недокументированное поведение MC

В ходе использования Midnight Commander можно столкнуться с недокументированным поведением, когда некоторые клавиши не работают как ожидалось:

  • F1 вызывает справку терминала вместо справки MC;
  • F10 открывает меню "Файл" терминала вместо выхода из MC.

В таких случаях попробуйте комбинации Windows+F1 и/или Windows+F10. Это часто связано с настройками терминала: в разделе "Настройки терминала" → "Дополнительно" → "Быстрые клавиши" отключите опции вроде:

  • "Отключить все клавиши доступа к меню (например, Alt+F)";
  • "Отключить быструю клавишу показа меню (по умолчанию F10)";
  • "Отключить быструю клавишу показа справки (по умолчанию F1)".

После отключения быстрых клавиш F1 и F10 в MC заработают корректно, как описано в справке.

Дополнительные функции

Из полезных фич отметим:

  • F11 — полноэкранный режим (full screen view);
  • Alt+F10 — развернуть на весь экран.

Эти клавиши могут конфликтовать с горячими клавишами окружения рабочего стола или терминала, но это не критично.

Обратите внимание: раскладка клавиатуры (смена языка) влияет на некоторые горячие клавиши! Большинство работают одинаково, но есть исключения.

Чтобы избежать непредсказуемого поведения и точно знать, что клавиша X делает (например, не запускает что-то неожиданное), начните с проверки и распознавания клавиш — об этом далее.

Конфигурация MC

Конфигурация Midnight Commander включает множество настроек, которые невозможно подробно описать в одном разделе. Мы сосредоточимся на распознавании клавиш и нескольких полезных функциях; остальное см. в документации man mc.

Файлы настройки MC

Порядок поиска конфигурационных файлов (по справке):

  • ~/.config/mc/;
  • /etc/mc/;
  • /usr/share/mc/.

В Debian 10 пользовательские файлы находятся в ~/.config/mc/:

tree -ap ~/.config/mc/
/home/user/.config/mc/
├── [-rw-r-----] hotlist
├── [-rw-r-----] ini
├── [drwx------] mcedit
└── [-rw-r-----] panels.ini

Распознавание клавиш MC

Базовые функции управляются функциональными клавишами F1F20, работоспособность которых проверяется в меню "Настройка" → "Распознавание клавиш...", как указано в man mc.

Распознавание клавиш...

Этот пункт открывает диалоговое окно для тестирования клавиш (F1F20, Home, End), которые не всегда работают в разных терминалах.

В окне отображается таблица с названиями клавиш. Навигация: Tab или клавиши vi (h влево, j вниз, k вверх, l вправо). Нажатие стрелок добавляет пометку OK, позволяя использовать их для перемещения.

Тестируйте каждую клавишу из таблицы. Если она работает, появится OK. Например:

  • Первое нажатие F1 добавляет пометку (если работает);
  • Последующие вызовут справку. То же для стрелок. Tab работает всегда.

Если клавиша не работает, пометка не появится. Тогда:

  • Выделите её (мышью или Tab);
  • Нажмите Enter или Пробел;
  • В красном окне нажмите клавишу или комбинацию для замены (или Esc для отмены).

Завершив, сохраните настройки в секции [terminal:TERM] файла ~/.config/mc/ini (где TERM — название терминала) или отмените. Если всё работает, сохранение не нужно.

Клавиши F13F20 по умолчанию связаны с Shift+F3Shift+F10 и часто дублируют F3F10. Но они могут иметь дополнительные функции в панелях, редакторе и просмотрщике, например:

less /etc/mc/mc.keymap
...
[main]
...
MenuLastSelected = f19
QuitQuiet = f20
[panel]
...
ViewRaw = f13
EditNew = f14
CopySingle = f15
MoveSingle = f16
DeleteSingle = f18
[editor]
...
SaveAs = f12; ctrl-f2
SearchContinue = f17
MarkColumn = f13
ReplaceContinue = f14
InsertFile = f15
[viewer]
...
SearchContinue = f17; n
[viewer:hex]
...
SearchContinue = f17; n
[diffviewer]
...
EditOther = f14
MergeOther = f15
SearchContinue = f17

Рекомендуется проверить работоспособность основных клавиш в "Настройка" → "Распознавание клавиш...", как описано в man mc.

F11 может быть занята полноэкранным режимом, но работает с Shift+F1. Вы можете явно определить их:

  • [Функциональная 11] — Shift+F1
  • [Функциональная 13] — Shift+F3
  • [Функциональная 14] — Shift+F4
  • [Функциональная 15] — Shift+F5
  • [Функциональная 16] — Shift+F6
  • [Функциональная 17] — Shift+F7
  • [Функциональная 18] — Shift+F8
  • [Функциональная 19] — Shift+F9
  • [Функциональная 20] — Shift+F10

Это добавит секцию в ~/.config/mc/ini:

[terminal:xterm-256color]
f11=\\e[1\;2P
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~

Клавиши дополнительной клавиатуры (*, -, +) могут не работать при активном Num Lock.

Пример успешного распознавания (все клавиши рабочие): Нажмите "Прервать" и переходите к настройкам или изучению горячих клавиш. Также проверьте "Настройки" → "Клавиатура", "Комбинации клавиш", "Раскладка" (часто "Обычный ПК с 105-клавишной (межд.)").

Меню часто используемых каталогов в MC

Меню часто используемых каталогов (вызывается сочетанием Ctrl+\) формируется на основе списка записей в файле ~/.config/mc/hotlist. Каждая запись каталога начинается с новой строки и включает метку (ENTRY) и путь к каталогу (URL). Записи можно группировать для удобства.

Пример структуры файла ~/.config/mc/hotlist:

# single entry
ENTRY "/etc" URL "/etc"
# group entrys
GROUP "user"
 ENTRY "Home" URL "~/"
 ENTRY "Общедоступные" URL "~/Общедоступные"
ENDGROUP
GROUP "admin"
 ENTRY "/etc/apache2" URL "/etc/apache2"
 ENTRY "/etc/mysql" URL "/etc/mysql"
 ENTRY "/var/log" URL "/var/log"
ENDGROUP

Содержимое файла можно подготовить заранее как шаблон. Для пути к домашнему каталогу допустимо использовать сокращение ~/, но только при ручном редактировании. Если добавить путь через меню, ~ автоматически развернется в полный путь (например, /home/user/). Изменения сохраняются при выходе из меню, а резервная копия создается в ~/.config/mc/hotlist.bak. ??

Настраиваемое пользовательское меню в MC

Пользовательское меню вызывается клавишей F2 и содержит команды оболочки, прописанные в файлах ./.mc.menu, ~/.config/mc/menu или системном /usr/share/mc/mc.menu. MC ищет файлы в указанном порядке: сначала локальный ./.mc.menu (если он принадлежит пользователю или root и не доступен для записи всем), затем пользовательский ~/.config/mc/menu, и наконец системный.

Согласно документации (man mc):

Редактирование файлов меню
Файлы меню содержат списки команд для выполнения повторяемых операций. Они создаются и поддерживаются пользователями. Формат всех трех файлов одинаков:

  • Строки комментариев начинаются с #.
  • Строки, начинающиеся с буквы или цифры, — это названия пунктов меню (первая буква/цифра становится "горячей" клавишей).
  • Строки, начинающиеся с пробела или табуляции, — команды для выполнения (могут быть несколько).

При выборе пункта команды копируются во временный файл (обычно в /tmp) и выполняются, поддерживая макроподстановки (см. раздел Макроподстановки).

Уточнения по расположению:

  • ./.mc.menu — действует только в текущем каталоге, перекрывая другие настройки.
  • ~/.config/mc/menu — пользовательский файл для текущего пользователя.
  • Системный файл может быть в /etc/mc/mc.menu (проверьте с locate mc.menu).

Пример: Создайте ~/.config/mc/menu с простой командой:

Show shell
 echo $SHELL $ENV

Вызовите меню F2, выберите пункт и нажмите Enter. Переключитесь в оболочку (Ctrl+O) и увидите вывод (например, /bin/bash). Вернитесь в панель тем же сочетанием. ?️⚙️

Переопределение клавиатурных команд

Если стандартные сочетания (например, для копирования/вставки) не работают, их можно переопределить через файлы .keymap.

Основные обозначения

  • C-<символ> — удерживайте Ctrl и нажмите <символ> (например, C-f).
  • M-<символ> — удерживайте Alt или Meta (или нажмите Esc, отпустите и нажмите <символ>).
  • S-<символ> — удерживайте Shift и нажмите <символ>.

Строки ввода в MC поддерживают горячие клавиши по умолчанию из GNU Emacs. Переопределение описано ниже.

Переопределение команд

MC сначала загружает встроенные команды, затем /etc/mc/mc.keymap и /usr/share/mc/mc.keymap. Пользовательский файл ищется в порядке:

  1. Параметр -K <файл> или --keymap=<файл>.
  2. Переменная MC_KEYMAP.
  3. Параметр keymap в секции [Midnight-Commander] конфигурационного файла.
  4. ~/.config/mc/mc.keymap.

Пути могут быть абсолютными или именами схем (с .keymap или без). Поиск в каталогах: ~/.config/mc/, /etc/mc/, /usr/share/mc/.

Не обязательно копировать весь файл — создайте ~/.config/mc/mc.keymap с нужными секциями, перезапустите MC.

Пример файла ~/.config/mc/mc.keymap для привычных сочетаний копирования/вставки:

[input]
# ...
Delete = delete; ctrl-d
DeleteToWordBegin = alt-backspace
DeleteToWordEnd = alt-d
# Mark =
Remove = ctrl-w
# Cut =
Store = alt-w
# Paste =
Yank = ctrl-y
DeleteToEnd = ctrl-k
[editor]
#Store = ctrl-insert
Store = ctrl-c
#Paste = shift-insert
Paste = ctrl-v
Cut = shift-delete

В секции [input] сохранены оригинальные комбинации из /etc/mc/mc.keymap, а [editor] изменена для удобства. Теперь в редакторе:

  • Копировать: Ctrl+C
  • Вставить: Ctrl+V
  • Вырезать: Shift+Delete

Вставка из внешнего буфера остается на Shift+Insert.

Настройки переноса строк и табуляции в mcedit

В mcedit различают два понятия:

  • Перевод строки — завершение строки символом новой строки (\n) и создание новой строки.
  • Перенос строки — отображение не поместившейся части строки на следующей строке без создания новой (без \n).

Перенос длинных строк и табуляция в mcedit работают не всегда интуитивно, а документация (man mcedit) неполная. Вот ключевые опции для настройки:

  • editor_tab_spacing: Задает длину табуляции (по умолчанию 8). Текстовые редакторы и просмотрщики обычно предполагают 8 пробелов.
  • editor_fake_half_tabs: Эмулирует половину таба для программирования с отступами в 4 пробела, но сохраняет реальный таб в 8. При включении вставляются пробелы и обычные табы для оптимального заполнения.
  • editor_word_wrap_line_length: Длина строки для переноса (по умолчанию 72).
  • editor_option_typewriter_wrap: Описывается как "to be described" — активирует перевод (не перенос) текста на новую строку только при наборе, без создания новой строки в существующих файлах.

Дополнительно есть переменная wrap_mode (не описана в документации, но подразумевает режим переноса).

Пример секции [Midnight-Commander] в файле ~/.config/mc/ini для настройки:

[Midnight-Commander]
...
use_internal_view=true
use_internal_edit=true
clear_before_exec=true
confirm_delete=true
confirm_overwrite=true
confirm_execute=true
confirm_history_cleanup=true
confirm_exit=false
...
wrap_mode=true
# default: true
editor_fake_half_tabs=false
# default: false
editor_option_typewriter_wrap=true
editor_edit_confirm_save=true
editor_tab_spacing=8
editor_word_wrap_line_length=72

Важные нюансы:

  • editor_fake_half_tabs=false: Если true, вместо таба вставляются 4 пробела (не 8).
  • editor_option_typewriter_wrap=true: Активирует перевод (не перенос) на новую строку только при вводе текста. При редактировании существующих файлов с длинными строками переноса нет — это важно для файлов конфигурации.
  • editor_tab_spacing=8: Установленное значение делится на 2 для расчета отступов (табуляции).

В mcedit нет переноса длинных строк в существующих файлах — только перевод при наборе. ??

Горячие клавиши в MC

Результаты нажатий некоторых горячих клавиш зависят от раскладки клавиатуры (языка). Большинство работают одинаково, но есть исключения.

Meta-клавиша

В справке MC упоминается "Meta" (примеры: Meta+Shift+?). Это:

  • Клавиша "Alternate" (Alt).
  • Или однократное нажатие Esc (Escape).

Пример: Meta+Shift+? — нажмите Esc или Alt, затем Shift+?.

Как интерпретировать подсказки MC

Подсказки используют сокращения:

  • C-x t: Нажмите Ctrl+x, затем t (например, для копирования помеченных файлов в командную строку).
  • M-!: Нажмите Esc (Meta), затем Shift+! (для вывода команды в окне просмотра).

Все подсказки хранятся в файле /usr/share/mc/hints/mc.hint.ru (для русской локали).

Манипуляции с текстом в командной строке MC

Основные команды для упрощения ввода

  • M-Enter
    Копирует подсвеченное имя файла или каталога в командную строку.

  • C-Enter
    Аналогично M-Enter, но работает только в консоли Linux.

  • M-Tab
    Пытается выполнить автодополнение (completion) имени файла, команды, переменной, имени пользователя или хоста, в зависимости от контекста ввода.

  • C-x t
    Копирует в командную строку имена помеченных файлов из активной панели (если нет помеченных — копирует подсвеченное имя).

  • C-x C-t
    Аналогично, но копирует из пассивной панели.

  • C-x p
    Копирует в командную строку имя текущего каталога (активной панели).

  • C-x C-p
    Копирует имя каталога пассивной панели.

  • C-q
    Команда "quote" — вставляет символы, которые MC обычно интерпретирует (например, +), буквально.

  • M-p, M-n
    Навигация по истории команд: M-p — предыдущая команда, M-n — следующая.

  • M-h
    Выводит историю текущей строки ввода.


Управление курсором и редактирование строки ввода

  • C-a — перейти в начало строки.
  • C-e — перейти в конец строки.
  • C-b или стрелка влево — сдвинуть курсор на один символ влево.
  • C-f или стрелка вправо — сдвинуть курсор на один символ вправо.
  • M-b — сдвинуть курсор на одно слово назад.
  • M-f — сдвинуть курсор на одно слово вперёд.

Работа с текстом и буферами

  • C-h или Backspace — удалить символ слева от курсора.
  • C-d или Delete — удалить символ под курсором.
  • C-@ — установить метку (начало выделения).
  • C-w — удалить выделенный текст (между курсором и меткой).
  • M-w — скопировать выделенный текст во внутренний буфер MC (без удаления).
  • C-y — вставить содержимое внутреннего буфера в позицию курсора.
  • C-k — удалить текст от курсора до конца строки.
  • M-C-h или M-Backspace — удалить предыдущее слово.

Дополнительные заметки по буферам и копированию

  • Внутренний буфер MC используется командами M-w (копировать) и C-y (вставить).
  • Команда C-w не копирует, а удаляет выделенный текст (возможно, вырезает в системный буфер, но это не документировано).
  • Внешний буфер обмена (системный clipboard) не интегрирован с внутренним буфером MC по умолчанию.

Внешний буфер обмена и взаимодействие с ним

  • Shift+Insert — вставка из внешнего буфера в командную строку MC (работает).
  • Ctrl+Insert — копирование в внешний буфер (не работает в MC).
  • Ctrl+Shift+C / Ctrl+Shift+V — копирование/вставка в терминалах (xterm и подобных), но не в MC.
  • Выделение мышью + правый клик — не работает в MC по умолчанию.
  • Установка gpm (mouse server) не решает проблему.

Внутренний буфер MC хранится в файле

~/.local/share/mc/mcedit/mcedit.clip

Этот файл используется и для командной строки, и для встроенного редактора mcedit.


Итог: рекомендации по копированию/вставке в/из командной строки MC

Действие Команда Примечание
Скопировать выделенное во внутренний буфер MC M-w Работает только в пределах MC
Вставить из внутреннего буфера C-y
Удалить выделенное (вырезать) C-w Удаляет, копирования в внешний буфер нет
Вставить из внешнего буфера Shift+Insert Работает
Скопировать во внешний буфер Не реализовано в MC

Примечание

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


Если требуется работа с системным буфером, рекомендуются внешние средства (например, использование терминальных мультиплексоров с поддержкой буфера — tmux, screen — или внешних программ для копирования/вставки).

Встроенный редактор mcedit в Midnight Commander

Midnight Commander включает собственный текстовый редактор mcedit, который можно запустить из интерфейса MC клавишей F4 или отдельно из командной строки:

mcedit [--bcCdfhstVx?] [+lineno] file

где:

  • file — путь к редактируемому файлу,
  • +lineno — переход к указанной строке,
  • -b — чёрно-белый режим,
  • -C <keyword>=<FGcolor>,<BGcolor>:... — пользовательская цветовая схема,
  • -d — отключение мыши,
  • -f — указание расположения MC,
  • -V — вывод версии программы.

Поскольку mcedit — это текстовый редактор, основное внимание уделим операциям копирования, вырезания и вставки текста, оставляя ввод символов базовым навыкам.


Горячие клавиши для работы с буфером обмена в mcedit

Согласно man mcedit (раздел KEYS), в редакторе доступны следующие сочетания:

  • Shift + стрелки — выделение текста (при поддержке терминала),
  • Ctrl-Ins — копирование выделенного текста в файл буфера ~/.cache/mc/mcedit/mcedit.clip,
  • Shift-Del — вырезание в тот же файл,
  • Shift-Ins — вставка из файла буфера,
  • Ctrl-Del — удаление выделенного текста,
  • Поддерживается выделение мышью (с зажатым Shift для обхода стандартной поддержки терминала),
  • Автодополнение слов — Meta-Tab или Esc Tab.

Практические особенности и проблемы

Расположение файла буфера

В Debian 10 и аналогичных системах файл буфера находится не в ~/.cache/mc/mcedit/mcedit.clip, а в:

~/.local/share/mc/mcedit/mcedit.clip

Чтобы проверить работу буфера, можно следить за содержимым этого файла командой:

tail -f ~/.local/share/mc/mcedit/mcedit.clip


Реальное поведение горячих клавиш

В терминале xfce4-terminal наблюдаются следующие эффекты:

  • Ctrl-Ins — не копирует (файл буфера не обновляется),
  • Shift-Del — корректно вырезает,
  • Shift-Ins — вставляет содержимое из внешнего системного буфера, а не из внутреннего файла буфера MC.

При этом:

  • Распознавание клавиш настроено корректно,
  • Нет конфликтов с другими горячими клавишами в MC и терминале,
  • MC запускается в изолированном терминальном окне.

Альтернативные методы копирования/вставки

  1. Выделение текста мышью или Shift + стрелки, затем переход к месту вставки и нажатие F5.
    Этот способ работает с внутренней оперативной памятью MC и не обновляет файл буфера mcedit.clip.

  2. Через меню редактора (F9) выбрать пункт:

    • "Копировать в файл буфера обмена" (аналог Ctrl-Ins),
    • "Вырезать в файл буфера обмена" (Shift-Del),
    • "Вставить из файла буфера обмена" (Shift-Ins или Shift-F5).

Поведение в терминале xterm

В xterm:

  • Ctrl-Ins — копирует в файл буфера,
  • Shift-Del — вырезает,
  • Shift-Ins — вставляет из внешнего буфера (как и в xfce4-terminal).

Таким образом, Shift-Ins не работает согласно документации ни в одном из терминалов — вставка из внутреннего буфера файла не реализована.


Выводы и рекомендации

  • Причина некорректной работы Ctrl-Ins в некоторых терминалах связана с особенностями их обработки клавиш.
  • Для полноценного копирования в файл буфера рекомендуется использовать xterm.
  • Для быстрой вставки внутри mcedit удобен способ выделения + F5 (работает в оперативной памяти MC).
  • Можно переопределить горячие клавиши в настройках MC, чтобы избежать конфликтов.
  • При необходимости — создать баг-репорт (NewTicket) в проекте Midnight Commander.

Особенности переноса строк в mcedit

Редактор не выполняет автоматический перенос длинных строк при открытии или редактировании уже существующего текста. Перенос строки происходит только при ручном вводе (нажатии Enter). Это важно учитывать при работе с конфигурационными файлами и текстами с длинными строками.


Таким образом, несмотря на заявленные возможности, работа с буфером обмена в mcedit зависит от терминала и требует применения обходных методов для эффективного редактирования.

Горячие клавиши в Midnight Commander (MC)

Основные горячие клавиши

  • F1: Вызов встроенной справки программы.
  • F2: Активация пользовательского меню (настраивается в конфигурации MC).
  • F3: Открытие файла для просмотра.
  • F4: Запуск редактирования выбранного файла.
  • F5: Операция копирования выделенных файлов или каталогов.
  • F6: Перемещение выделенных объектов.
  • F7: Создание нового каталога.
  • F8: Удаление выбранных элементов с запросом подтверждения.
  • F9: Переход к верхнему меню, которое включает разделы: "Левая", "Файл", "Команды", "Настройки" и "Правая" (в англоязычной версии: "Left", "File", "Command", "Options" и "Right"). Выбор пункта раскрывает соответствующее подменю.
  • F10: Завершение работы с программой.
  • Esc: Отмена действия или возврат.
  • Tab: Смена активной панели.
  • Insert: Маркировка текущего элемента.
  • F11 (Shift+F1): Открытие меню быстрого перехода к точкам монтирования в левой панели.
  • F12 (Shift+F2): Открытие меню быстрого перехода к точкам монтирования в правой панели.
  • F13 (Shift+F3): Просмотр файла в сыром формате, игнорируя расширение.
  • F14 (Shift+F4): Создание нового файла.
  • Ctrl+r: Обновление содержимого активной панели.
  • Ctrl+x, a: Открытие списка виртуальных файловых систем (VFS). Полезно для восстановления соединения с FTP при таймауте сессии.

Навигация по каталогам

  • *Ctrl+*: Открытие меню часто посещаемых каталогов; здесь можно редактировать список в файле ~/.config/mc/hotlist.
  • M-c: Быстрый переход в указанный каталог.
  • Alt+u: Переход к следующему каталогу в истории посещений.
  • Alt+y: Возврат к предыдущему каталогу в истории.
  • Alt+i: Синхронизация текущего каталога активной панели с другой панелью.

Навигация по файлам

  • Meta+.: Переключение отображения скрытых файлов и каталогов (тех, что начинаются с точки '.').
  • Ctrl+x, i: Быстрый просмотр сведений о текущем объекте во второй панели.
  • Ctrl+x, q: Быстрый просмотр содержимого файла во второй панели.
  • Ctrl+x, c: Просмотр и редактирование прав доступа (chmod) для текущего объекта.
  • Ctrl+x, o: Открытие диалога изменения владельца (chown) для отмеченного файла.
  • Ctrl+t: Маркировка выбранного элемента (аналогично Insert).
  • Shift+↓: Маркировка текущего элемента и всех ниже в списке.
  • Shift+↑: Маркировка текущего элемента и всех выше в списке.
  • Ctrl+s: Быстрый поиск в текущем каталоге (учитывает раскладку и регистр); первые совпадающие символы отображаются в строке, а найденный файл выделяется.
  • Meta+Shift+?: Меню расширенного поиска файлов.

Работа с командной строкой

  • C-o: Переключение в режим оболочки; повторное нажатие возвращает в интерфейс MC.
  • M+Shift+!: Просмотр результата выполнения команды в просмотрщике (аналог M-!).
  • C-x t: Вставка имени файла в командную строку (также работает Alt+Enter).
  • C-x p: Вставка полного пути к каталогу в командную строку (альтернативы: Esc+a или Esc+A).
  • Ctrl+Alt+Enter: Вставка полного пути к каталогу вместе с именем файла в командную строку.
  • Ctrl+x, t: Добавление имен всех выделенных объектов в командную строку.
  • Shift+Insert: Вставка текста из системного буфера обмена.
  • C-a: Сдвиг курсора к началу строки.
  • C-e: Сдвиг курсора к концу строки.
  • C-w: Копирование текста от курсора до метки в буфер с удалением из строки (работает с выделением через Ctrl+@ или Alt+w).
  • M-w: Копирование текста от курсора до метки в буфер без удаления.
  • C-y: Вставка содержимого буфера в строку перед курсором.
  • C-k: Удаление текста от курсора до конца строки.
  • Meta-h: Просмотр истории командной строки.
  • M-p, M-n или Alt+↓, Alt+↑: Навигация по истории команд (M-p — к предыдущей, M-n — к следующей).

Дополнительные ресурсы

Более детальные горячие клавиши описаны в справке MC:

  • ru/doc/common/hotkeys — Общие горячие клавиши MC.
  • ru/doc/editor/hotkeys — Клавиши для встроенного редактора.
  • ru/doc/filePanels/hotkeys — Клавиши для работы с файловыми панелями.

Это не полный список — расширенный перечень, включая комбинации для командной строки оболочки, доступен в man mc или в файле /usr/share/mc/help/mc.hlp.ru.

Буферы обмена и безопасность в Midnight Commander (MC)

Синхронизация буферов обмена MC с системным буфером

Внутренний буфер обмена MC (хранится в файле ~/.local/share/mc/mcedit/mcedit.clip) по умолчанию не синхронизирован с внешним буфером операционной системы. Это значит, что скопированный текст в MC не будет автоматически доступен в других приложениях, таких как браузеры или текстовые редакторы. Чтобы устранить этот разрыв и обеспечить автоматическую синхронизацию, можно использовать инструмент entr для мониторинга изменений в файле буфера MC и передачи содержимого в системный буфер с помощью xclip.

Вот два варианта команд для настройки автоматической синхронизации:

  1. Мониторинг конкретного файла буфера:

    ls ~/.local/share/mc/mcedit/mcedit.clip | entr xclip -i -sel clip ~/.local/share/mc/mcedit/mcedit.clip
    
    

    Эта команда отслеживает изменения в файле mcedit.clip и при каждом обновлении копирует его содержимое в системный буфер обмена (clip).

  2. Мониторинг с поиском файла:

    find ~/.local/share/mc/mcedit -name mcedit.clip | entr xclip -i -sel clip ~/.local/share/mc/mcedit/mcedit.clip
    
    

    Аналогично первому варианту, но использует find для поиска файла, что полезно, если путь может варьироваться.

Эти команды требуют установки entr (для мониторинга) и xclip (для работы с буфером). Запускайте их в фоне или добавьте в скрипт автозапуска, чтобы синхронизация работала постоянно. Это особенно удобно при частом копировании текста между MC и другими программами.

Меры безопасности при использовании MC

Работа с MC часто включает доступ к файлам, каталогам и истории команд, что делает вопросы конфиденциальности актуальными. Программа хранит историю действий в файле ~/.local/share/mc/history, а также взаимодействует с системной историей оболочки (например, ~/.bash_history и ~/.bash_aliases). Эти данные могут содержать чувствительную информацию, такую как пути к файлам, пароли или логины, если они вводились в командной строке.

Чтобы минимизировать риски утечки, регулярно очищайте историю MC и связанные файлы. Для автоматизации можно настроить скрипт, который удаляет старые записи. Альтернативно, храните конфигурационные файлы MC на защищённых носителях, таких как виртуальные зашифрованные диски (например, с помощью LUKS или VeraCrypt), и создайте символические ссылки после монтирования:

ln -sf /mnt/mydata/.config/mc ~/.config/mc
ln -sf /mnt/mydata/.local/share/mc ~/.local/share/mc

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

Дополнительные рекомендации:

  • Избегайте хранения паролей в истории команд; используйте менеджеры паролей или переменные окружения.
  • Регулярно проверяйте и очищайте кэш MC (~/.cache/mc), где могут храниться временные данные.
  • Для повышенной безопасности запускайте MC в изолированной среде, такой как контейнер или виртуальная машина.

Подробности о настройках безопасности MC можно найти в man mc или в разделе "Options" меню программы.

 

10 сентября 2025, 18:52    Александр Linux 0    0 0

 

 

 

 



Комментарии ()

    Вы должны авторизоваться, чтобы оставлять комментарии.