Midnight Commander: горячие клавиши, справка, как пользоваться

archive view archive save

midnight-commander_ru.jpg Комбинации клавиш Midnight Commander в Linux, FreeBSD и/или других ОС могут работать не так, как то указано в документации. Официальная справка как пользоваться MC не даёт исчерпывающих ответов на все вопросы.

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

Midnight Commander (GNU Midnight Commander) с открытым исходным кодом на github.com, является частью проекта GNU, доступен для большинства ОС, встроенный редактор mcedit, mcdiff, разработка идёт с 1994 года.

Чтение документации конечно великое дело, но не факт, что всё будет работать именно так, как в документации написано! На некоторых платформах в зависимости от версии, набора библиотек, окружения рабочего стола, и пр., - могут быть некоторые особенности использования и/или отличия в поведении чем то, которое ожидается согласно официальной документации.

  1. Midnight Commander и subshell
  2. Недокументированное поведение MC
  3. Конфигурация MC
    1. Файлы настройки MC
    2. Распознавание клавиш MC
    3. Меню часто используемых каталогов MC
    4. Настраиваемое пользовательское меню MC
    5. Переопределение клавиатурных команд copy/paste
    6. Word wrap и табуляция в mcedit
  4. Горячие клавиши MC
    1. Meta клавиша
    2. Как понимать подсказки MC
    3. Манипуляции с текстом в командной строке MC
    4. Встроенный редактор mcedit
    5. TOP горячих клавиш MC
      1. Основные
      2. Навигация по каталогам
      3. Навигация по файлам
      4. Строка оболочки
  5. Буферы обмена MC
  6. Безопасность MC
  7. Дополнительная информация

Midnight Commander и subshell

Поддержка subshell

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

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

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

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

Особенностью использования subshell является то, что подсказка (prompt), выводимая Midnight Commander будет той же самой, что и в вашей обычной оболочке.

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

После установки Midnight Commander в FreeBSD 12 нам выдаст сообщение с предупреждением о проблемах с подоболочками при использовании /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 хук, subshell support, или подоболочка в Linux (субшелл), - ответов полно в Интернетах. Возможно также будут полезны:

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

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

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

В таком случае пробуем Windows+F1 и/или Windows+F10. Такое поведение может быть обусловлено настройками терминала, Настройки терминала - Дополнительно - Быстрые клавиши:

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

После отключения Быстрых клавиш в настройках терминала F1 и F10 в Midnight Commander заработают, как то указано в справке.

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

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

Которые могут быть и горячими клавишами окружения рабочего стола (терминала), хотя не суть.

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

Дабы избежать недокументированного поведения клавиш и чтобы точно знать, что условная клавиша Х сливает воду в унитазе, а не запускает баллистические ядерные ракеты, - нужно начать с проверки и/или распознавания клавиш, о чём далее...

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

Конфигурация MC имеет довольно много настроек, перечислить и подробно описать которые в одном посте никак нельзя.

Остановимся лишь на распознавании клавиш и нескольких полезных функциях, остальное дочитываем в документации man mc.

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

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

  1. ~/.config/mc/
  2. /etc/mc/
  3. /usr/share/mc/

Файлы пользовательской конфигурации в Debian 10 расположены в ~/.config/mc/:

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

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

Базовые функции выполняются т.н. Функциональными клавишами F1-F20 работоспособность которых можно проверить в меню Настройка - Распознавание клавиш..., как сказано в man mc:

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

Пункт Распознавание клавиш (Learn keys) вызывает диалоговое окно, в котором вы можете протестировать работу некоторых клавиш (F1-F20, Home, End), которые работают не на всех типах терминалов.

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

Для тестирования работы клавиш нужно нажать каждую клавишу из перечисленных в таблице. Если она работает нормально, возле ее названия в таблице появится пометка OK. После появления такой пометки клавиша начинает работать в ее обычном режиме. Например, первое нажатие на клавишу F1 приводит только к появлению пометки (если она работает нормально), а при следующих нажатиях будет вызываться окно подсказки. То же самое относится к клавишам стрелок. Клавиша Tab работает всегда.

Если какая-то клавиша не работает, то после нажатия на нее пометка OK не появится. В таком случае можно связать ту реакцию системы, которая должна была последовать за нажатием неработающей (отсутствующей) клавиши, с нажатием другой клавиши или комбинации клавиш. Для этого надо переместить подсветку на название неработающей клавиши (используя мышь или клавишу Tab) и нажать Enter или клавишу пробела. Должно появиться окно красного цвета, в котором вас просят нажать клавишу, которая будет использоваться вместо неработающей. Для отмены операции нажмите Esc и дождитесь, пока красное окно исчезнет. Либо выберите и нажмите ту комбинацию клавиш, которая будет служить заменой для неработающей клавиши (и тоже дождитесь закрытия окна).

Когда закончите тестирование и настройку всех клавиш, вы можете сохранить эти настройки в секции [terminal:TERM] вашего файла ~/.config/mc/ini (где TERM - название используемого терминала) либо отказаться от запоминания изменений. Если все клавиши работают нормально, то сохранение, конечно, не требуется.

Клавиши с F13 по F20 по умолчанию привязаны к комбинациям с Shift+F3 по Shift+F10 включительно и в файловом менеджере по факту часто повторяют функционал F3-F10.

Однако, могут выполнять и дополнительные функции, как в панелях ФМ, так во встроенном редакторе и просмотрщике, например:

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

Должно получиться вот так:

midnight-commander-keyboard-conf_1.jpg

[Обратная таб./S-tab] - это Shift+Tab на скрине не видно пометки ОК, но она есть :) Просто не поместилась.

Раз все клавиши оказались рабочие, то нажимаем Прервать и можем переходить к дальнейшим настройкам или изучению горячих клавиш, но дополнительно ещё не помешает проверить Настройки - Клавиатура, Комбинации клавиш, Раскладка (часто Обычный ПК с 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

Содержимое файла hotlist можно заготовить заранее, как шаблон. В качестве пути к домашнему каталогу можно использовать сокращённый вариант обозначенный знаком тильды ~/, но только при условии прямого ручного редактирования файла hotlist.

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

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

Настраиваемое пользовательское меню вызывается клавишей F2, каждый пункт которого выполняет набор команд оболочки (shell) прописанных в ./.mc.menu или ~/.config/mc/menu.

В документации man mc написано:

Редактирование файлов меню

Файлы меню содержат списки команд для выполнения часто повторяемых пользователем операций. Эти меню создаются и поддерживаются самими пользователями. Могут быть созданы три файла меню: в текущем каталоге, в домашнем каталоге пользователя и общесистемный. Когда вы нажимаете клавишу F2 для вызова меню, Midnight Commander вначале ищет файл .mc.menu в текущем каталоге и отображает соответствующее меню (если находит и если владельцем этого файла является данный пользователь или root и этот файл не доступен на запись всем). Если такого файла не найдено, таким же образом ищется файл ~/.config/mc/menu, и в последнюю очередь mc использует общесистемное меню /usr/share/mc/mc.menu.

Формат всех трех файлов меню одинаков и очень прост. Строки комментариев начинаются с '#'. Дополнительные комментарии должны начинаться с '#', пробела или символа табуляции. Строки, начинающиеся с любого символа, отличного от пробела и символа табуляции, интерпретируются как названия пунктов меню, причем если первый символ является буквой или цифрой, то соответствующая клавиша будет служить "горячей" клавишей для вызова этого пункта меню. Строки, начинающиеся с пробела или символа табуляции, интерпретируются как команды, которые должны выполняться при вызове соответствующего пункта меню. Эти строки должны следовать за строкой названия и их может быть несколько.

Когда пользователь выбирает какой-то пункт меню, соответствующие командные строки копируются во временный файл во временном каталоге (обычно /usr/tmp) и затем этот файл запускается на выполнение. Это позволяет пользователю вставлять в команды меню любые конструкции, допустимые в командном языке оболочки. Можно также использовать макроподстановки, которые производятся перед выполнением кода меню (подробнее смотрите в секции Макроподстановки).

Относительно расположения, назначения и очерёдности поиска файлов конфигурации пользовательского меню нужно уточнить, что:

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

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

Show shell
 echo $SHELL $ENV

Вызываем меню F2, выбираем там единственный пункт Show shell и нажимаем Enter, переключимся на окно оболочки C-o и увидим результат:

/bin/sh /tmp/mc-yuzver/mcusrBH27F2
/bin/bash

Теукщей оболочкой пользователя yuzver является /bin/bash, нажав C-o вернёмся в панель ФМ.

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

Переопределение клавиатурных команд должно помочь, если какая-то из клавиатурных комбинаций не работает должным образом.

Клавиатурные команды

Некоторые команды в Midnight Commander вызываются с использованием клавиш Control (иногда обозначается как CTRL или CTL) и Meta (иногда обозначается ALT или даже Compose). В настоящем руководстве будут использоваться следующие сокращения:

C-<символ> означает, что нужно нажать и удерживать клавишу Control и в это время нажать клавишу <символ>. Так C-f будет означать: нажмите Control и, удерживая ее, нажмите (коротким щелчком) клавишу f.

Аналогично M-<символ> означает, что надо удерживать в нажатом состоянии клавишу Meta или Alt во время удара по клавише <символ>. Если на клавиатуре нет клавиш Meta и Alt, нажмите ESC, отпустите ее, а потом щелкните по клавише <символ>.

S-<символ> означает, что нужно держать в нажатом состоянии клавишу Shift во время удара по клавише <символ>.

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

Вы можете переопределить клавиатурные привязки хоткеев к командам, как это описано в разделе переопределение клавиатурных команд

Все последующие описания клавиатурных команд относятся к поведению по умолчанию.

Описания клавиатурных команд даются в нескольких разделах помощи. Наиболее важными являются следующие разделы:

В разделе Меню Файл приведены комбинации клавиш, которые служат для вызова команд, перечисленных в меню "Файл". В этом же разделе перечислены команды, ассоциированные с функциональными клавишами. Большинство из этих команд выполняют действия над подсвеченным файлом или группой отмеченных файлов.

В секции Панели каталогов рассказано о клавишах, которые используются для выбора файла или группы файлов как объектов некоторого последующего действия (обычно действия из меню "Файл").

В разделе Командная строка оболочки (Shell) перечисляются команды и комбинации клавиш, которые используются для ввода и редактирования команд в командной строке оболочки. Большая часть этих команд служит для переноса имен файлов и/или имен каталогов в командную строку (чтобы уменьшить трудоемкость ввода) или для доступа к истории команд.

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

Переопределение клавиатурных команд
Клавиатурные команды могут быть прочитаны из внешнего файла. Сначала Midnight Commander создаёт карту клавиатурных команд из списка, определённого в исходном коде. Затем всегда загружаются два файла /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 либо без него). В данном случае поиск файла клавиатурных команд будет происходить по следующим каталогам (до первого нахождения):

1) ~/.config/mc/
2) /etc/mc/
3) /usr/share/mc/

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

[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-insert.

При этом, вставка из внешнего буфера также будет работать по shift-insert.

Word wrap и табуляция в mcedit

«Перевод строки» — это завершение строки специальным символом новой строки \n и создание новой строки.

«Перенос строки» — это процесс переноса не поместившейся в окно (экран) части строки на следующую строку без создания новой строки.

Перенос длинных строк текста и табуляция в mcedit совсем не в том формате, котором бы хотелось.., а документация оставляет желать лучшего.

man mcedit

editor_tab_spacing
Interpret the tab character as being of this length. Default is and text viewers assume a tab spacing of 8. Use editor_fake_half_tabs to simulate a smaller tab spacing.

editor_fake_half_tabs
This will emulate a half tab for those who want to program with a tab spacing of 4, but do not want the tab size changed from 8 moving and tabbing will be as though a tab space were 4, while actually using spaces and normal tabs for an optimal fill. When editing anywhere else, a normal tab is inserted.

Что касается табуляции:

editor_word_wrap_line_length
Line length to wrap at. Default is 72.

editor_option_typewriter_wrap
to be described

То тут догадайся сам называется (ака когда-то to be described), а переменная wrap_mode и вовсе нигде в документации не упоминается.., хотя своим названием и говорит сама за себя о своём назначении.

Короче говоря, получилась такая вот штука:

[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

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

Клавиши Ctrl, Esc и Shift знают все, а вот некоторые клавиши такие как Meta знают немногие.

Meta клавиша

В справке есть примеры комбинаций с использованием некой загадочной клавиши Meta, например Meta+Shift+?.

В документации сказано что: Meta - Клавиша "Alternate", или "Alt", или "Meta", также может быть заменена однократным нажатием "Esc" или "Escape";

Meta+Shift+? - это будет однократное нажатие Esc или Alt и потом Shift+?

Как понимать подсказки MC

Совет: Используйте C-x t для копирования помеченных файлов в командную строку.

C-x t - or Ctrl+x,t означает, что нужно однократно нажать комбинацию Ctrl+x и затем клавишу t

Совет: Для получения вывода команды в окне просмотра, наберите М-!

М-! - означает, что нужно однократно нажать "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 t) или пассивной панели (C-x C-T).

C-x p, C-x C-p Первая комбинация клавиш копирует в командную строку имя текущего каталога, а вторая - имя каталога, отображаемого в пассивной панели.

C-q Эта команда (the quote command) используется для того, чтобы вставить символы, которые каким-то образом интерпретируются самим Midnight Commander-ом (например, символ '+').

M-p, M-n Эти комбинации используются для перемещения по истории команд. M-p вызывает перемещение на команду назад по списку ранее запускавшихся команд, а M-n - перемещение на одну команду вперед.

M-h Выводит историю текущей строки ввода (для командной строки - историю команд).
...
Редактирование строк ввода

Строки ввода (это не только командная строка оболочки, но и строки в диалоговых окнах различных подпрограмм) воспринимают следующие управляющие комбинации:

C-a Перемещает курсор в началу строки.

C-e Перемещает курсор в конец строки.

C-b, стрелка-влево Перемещает курсор на одну позицию влево.

C-f, стрелка-вправо Перемещает курсор на одну позицию вправо.

M-f Перемещает курсор на одно слово вперед.

M-b Перемещает курсор на одно слово назад.

C-h, Backspace Удаляет символ, предшествующий курсору.

C-d, Delete Удаляет символ в позиции курсора.

C-@ Устанавливает метку для того, чтобы вырезать (скопировать в буфер) часть текста.

C-w Копирует текст, расположенный между курсором и меткой, в буфер, удаляя текст из строки ввода. (ред.: удаляет выделенное, не копирует)

M-w Копирует текст, расположенный между курсором и меткой, в буфер. (ред.: копирует выделенное во внутренний буфер)

C-y Вставляет содержимое (ред.: внутреннего) буфера в строку ввода перед позицией курсора.

C-k Удаляет текст от курсора до конца строки.

M-p, M-n Эти комбинации используются для перемещения по истории команд. M-p перемещает к предыдущей команде, M-n - к следующей.

M-C-h, M-Backspace Удалить предшествующее слово.

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

Опять же.., документация не является полной и требует уточнений или исходный код исправлений!

Комбинации клавиш редактирования строки ввода M-w и C-y работают только с внутренним буфером, C-w по факту же просто удаляет выделенное никуда его не копируя.

А что делать когда нам нужно из внешнего во внутренний и/или наоборот из внутреннего буфера скопировать во внешний? Или из строки ввода скопировать во внешний буфер или в оба сразу? Об этом документация умалчивает...

В Интернетах множество различных вариантов, но только нет того, что реально бы работал, в числе прочего:

  • Ctrl+Insert - copy, не работает (комбинация из mcedit);
  • Shift+Insert - paste, работает, из внешнего буфера в командную строку MC (комбинация из mcedit);
  • Ctrl+Shift+C - copy, не работает (комбинация из xterm);
  • Ctrl+Shift+V - paste, работает, из внешнего буфера в строку ввода (комбинация из xterm);
  • выделение текста удерживая левую клавишу мыши, после на выделенном клик правой для копирования - не работает;
  • установка gpm - интерфейс мыши общего назначения, не помогает.

Проверка комбинаций выполнялась с запущенной, в отдельной вкладке терминала, команды: tail -f ~/.local/share/mc/mcedit/mcedit.clip - при изменении которого вкладка подсвечивалась красным текстом.

~/.local/share/mc/mcedit/mcedit.clip - файл внутреннего буфера обмена, как при сипользовании командной строки ввода так и для встроенного редактора mcedit.

Итого, для копирования/вставки в/из строки ввода

  • M-w - скопировать выделенное из строки ввода в файл внутреннего буфера обмена;
  • C-y - вставить из файла внутреннего буфера обмена в строку ввода;
  • C-w - удалить (вместо вырезать) выделенное из строки ввода;
  • Shift+Insert - вставить из внешнего буфера в командную строку.

C-w в моём случае удаляет (вместо вырезать) выделенное из строки ввода, - возможно это глюк, а возможно данная комбинация вырезает выделенное в какой-то другой буфер (в оперативку например), но как достать его оттудова документация умалчивает.

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

О буферах ещё поговорим, попизже...

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

Midnight Commander содержит в комплекте текстовый редактор mcedit, запускаемый как изнутри (клавишей F4), так и отдельно, из командной строки: mcedit [--bcCdfhstVx?] [+lineno] file

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

Потому, как mcedit это редактор, то основные фичи нас интересующие это - копировать/вырезать/ставить, а тыкать на буквы с цифрами мы уже умеем. Итак, man mcedit гласит:

man mcedit
...
KEYS
The editor is easy to use and can be used without learning. The pull-down menu is invoked by pressing F9. You can learn other keys from the menu and from the button bar labels.

In addition to that, Shift combined with arrows does text highlighting (if supported by the terminal): Ctrl-Ins copies to the file ~/.cache/mc/mcedit/mcedit.clip, Shift-Ins pastes from ~/.cache/mc/mcedit/mcedit.clip, Shift-Del cuts to ~/.cache/mc/mcedit/mcedit.clip, and Ctrl-Del deletes highlighted text. Mouse highlighting also works on some terminals. To use the standard mouse support provided by your terminal, hold the Shift key. Please note that the mouse support in the terminal doesn't share the clipboard with mcedit.

The completion key (usually Meta-Tab or Escape Tab) completes the word under the cursor using the words used in the file.

Ctrl-Ins должно копировать, Shift-Del вырезать, Shift-Ins вставлять.

Ну, во-первых:

ls ~/.cache/mc/mcedit/mcedit.clip
ls: невозможно получить доступ к '/home/yuzver/.cache/mc/mcedit/mcedit.clip': Нет такого файла или каталога

В сулчае с Debian 10 - это ~/.local/share/mc/mcedit/mcedit.clip. Запускаем tail -f ~/.local/share/mc/mcedit/mcedit.clip и проверяем комбинации.

Во-вторых, по-факту:

  • Ctrl-Ins не копирует;
  • Shift-Del работает, вырезает;
  • Shift-Ins вставляет из внешнего буфера обмена, не из внутреннего как заявлено.

Это при том, что:

  1. распознавание клавиш у нас 100%-е;
  2. в Настройки - Клавиатура, Комбинации клавиш, Раскладка нет конфликтов с горячими клавишами;
  3. в настройках терминала (xfce4-terminal) горячие клавиши отключены;
  4. MC запускался в терминале без соседних приложений, чтобы избежать вероятных конфликтов горячих клавиш.

Вот такая вот хреновина, но есть ещё несколько вариантов копирования/вставки в mcedit...

  • Выделение либо мышью либо Shift-Влево/Вправо; перевод курсора в место вставки; нажатие F5.

Этот вариант копирования/вставки вероятно работает исключительно в оперативной памяти в обход буферов потому, что копируемое содержимое не появляется в ~/.local/share/mc/mcedit/mcedit.clip.

Слудующий вариант копирования/вставки с помощью меню редактора, нажимаем F9, потом выбираем пункт:

  • Копировать в файл буфера обмена C-Ins;
  • Вырезать в файл буфера обмена S-Del;
  • Вставить из файла буфера обмена S-Ins (или S-F5).

Почему комбинации клавиш C-Ins вовсе не работает, а S-Ins работает не как заявлено в документации.., - пока не понятно, а Интернеты никак не проясняют ситуацию.

Если вместо xfce4-terminal запустить xterm, то получаем такую картину:

  • Ctrl-Ins работает, копирует;
  • Shift-Del работает, вырезает;
  • Shift-Ins вставляет из внешнего буфера обмена, не из внутреннего как заявлено.

При любых раскладах Shift-Ins не работает как ожидается.

Возможно нужно бдет создать мозг выносящий NewTicket?

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

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

Только перевод с созданием новой строки и только при наборе текста, а при открытии и редактировании файлов с уже набранным текстом - нет, а ни перевода, а ни переноса длинных строк, что нужно учитывать при редактировании системных конфигурационных файлов!

TOP горячих клавиш MC

Основные

F1 Справка
F2 Пользовательское меню
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) Просмотр файла raw без учета расширения
F14 (Shift+F4) Создает новый файл
Ctrl+r Refresh active panel
Ctrl+x,a Open VFS list. If a ftp session times out, you can use this to free the open vfs so you can log in again.

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

Ctrl+\ Меню часто используемых каталогов, тут же можно настроить их список или добавить их отредактировав ~/.config/mc/hotlist. M-c быстрая смена каталога;
M-c Быстрая смена каталога, Ctrl+\ меню часто используемых каталогов;
Alt+u move to the next directory in the history;
Alt+y move to the previous directory in the history;
Alt+i - make the current directory of the current panel also the current directory of the other panel

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

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

Строка оболочки

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

Больше горячих клавиш в справке MC:

Однако это не весь список горячих клавиш MC! Более полный перечень горячих клавиш, как например быстрые клавиши командной строки оболочки можно найти в man mc или в файле /usr/share/mc/help/mc.hlp.ru

Возможно также будет полезно:

Буферы обмена MC

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

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

или так:

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

Безопасность MC

Под занавес пару слов о безопасности использования MC...

Наверно многие видели фильм Щепка (1993) с участием Шэрон Стоун или Тринадцать камер (2015), где некий мрачный и похотливый домовладелец следит за всеми и за каждым в отдельности через скрытые видеокамеры?

Щепка (фильм) — Википедия
...
У Карли с Зиком начинается бурный роман, но женщина не знает, что Зик тайно наблюдает через скрытые камеры за каждым из жителей дома, включая саму Карли. Она начинает подозревать, что кто-то из двоих её соседей, Зик или Джек, является тем самым серийным убийцей, а Карли может стать его следующей жертвой.

Тринадцать камер | 13 Cameras
Молодожены Клэр и Райан переезжают в новый дом. Но они даже не догадываются, что с самого начала за ними следит их мрачный и похотливый домовладелец.

Так, вот... - это всё было как бы только в кино, и 30 лет тому назад!

В настоящее время кровожадные и похотливые рабовладельцы уже давно не скрывают своих намерений, а вешают камеры наблюдения везде и всюду и на каждом твоём шаге. И за 30 лет технологии как открытой так и тайной слежки шагнули далеко вперёд.

Много братьев и сестер легкомысленно относятся к вопросам конфиденциальности и безопасности своих данных (логинам/паролям, истории вебсерфинга, и т.д.), мол: Да я же не коды запуска ядерных ракет храню на ПК!

Да, коды запуска ядерных ракет ты на ПК можешь и не хранить, но, найдя в истории твоего веб-браузера следы посещения (случайного редиректа) сайтов каких-то радикальных (казино, порносайты, СМИ, секты, что угодно) организаций, - из тебя запросто могут сделать:

  • рашиста или укронациста;
  • террориста или сепаратиста;
  • садиста, фашиста, фетишиста или анониста;
  • лесбиянку, лютого пидараса или гомосексуалиста;
  • диверсанта или колаборанта;
  • чёрта рогатого при желании.

...был бы человек и история веб-браузера, а статья найдётся.

MC тоже помнит историю, которая хранится в файле ~/.local/share/mc/history. История использования программ (алсо ~/.bash_aliases и ~/.bash_history) штука удобная, но иногда может быть вредная, а потому историю программ нужно автоматически подчищать (удалять) либо хранить где-то в облаке или на виртуальных щифрованных дисках ссылаясь на них символическими ссылками после монтирования, вот так:

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

Дополнительная информация


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

АХТУНГ! Все комменты гостей модерасятся модерастом.
  1. Мессаги исключительно рекламного содержания, либо содержащие только одни оценочные суждения типа "круто" ("отлично", "спасибо", "автор дебил" и т.п.) не публикуются;
  2. Злостным спамерам, пранкерам и прочей сетевой нечисти рекомендуем напрасно не тратить своего времени и удовлетворять свои больные фантазии на специализированных Интернет ресурсах!;
  3. Разумная обоснованная критика, замечания, дополнения приветствуются. Поля помеченные символом * обязательны к заполнению.


Защитный код
Обновить

Нет комментариев

Вы можете стать первым, кто добавит комментарий к этой записи.

Комментарии в блоге
Новое на форуме