Midnight Commander

出自 ArchWiki


Midnight Commander 是一个用于 类 Unix 系统的可视化 shell。它是一个 正统(双面板)文件管理器,支持标准文件操作、虚拟文件系统、外部命令面板化和用户菜单。它还包括一个内置查看器 mcview(1)、编辑器 mcedit(1) 和可视化差异工具 mcdiff(1)

由于它基于通用的文本界面 — ncurses 或 S-Lang — 它可以在常规控制台X Window 终端内、通过 安全 Shell (SSH) 连接以及各种远程 shell 上工作。

不过,文档仍处于草稿状态。

安装

安装 mc 软件包,或者 mc-gitAUR 以获取开发版本。

皮肤

Midnight Commander 默认带有多种皮肤。您可以在选项 > 外观中设置皮肤。

其他第三方皮肤可以单独安装

  • mc-solarized-git — Midnight Commander 的 Solarized 配色方案。
https://github.com/nkulikov/mc-solarized-skin || mc-solarized-gitAUR
  • mc-skin-modarin-debianmodarin 主题的精简版本。
https://launchpad.net/debian/+source/mc/3:4.8.13-3 || mc-skin-modarin-debianAUR

另见 mc(1) § 皮肤

配置

Midnight Commander 的大多数设置都可以从菜单中更改。但是,少数设置(例如剪贴板命令、代码集检测和外部编辑器的参数)只能从 ~/.config/mc/ini 中更改。有关选项的完整描述,请参见 mc(1) § 特殊设置 及后续章节。

此外,以下环境变量会被识别:MC_SKINMC_KEYMAPMC_XDG_OPENMC_COLOR_TABLEMC_DATADIRMC_HOMEKEYBOARD_KEY_TIMEOUT_USPAGEREDITORVIEWER

另见 mc(1) § 文件

extfs

extfs 允许轻松为 Midnight Commander 创建新的虚拟文件系统。有关详细信息,请参见 /usr/lib/mc/extfs.d/README

使用

界面

突出的视图是两个垂直面板。两者都可以列出目录内容、显示纯文本预览、文件详细信息或目录树(参见 mc(1) § 目录树)。文件操作可通过功能键或鼠标访问。更多选项在动态用户菜单 (F2) 和选项菜单 (F9) 中可见。F12 以上的键 (F13F20) 可通过 Shift 访问。菜单和对话框选项都有一个字母高亮显示 - 按下此字母(或在文本条目内按 Alt+字母)可以直接激活相应的选项。

下面,可以看到一个连接到子 shell 的命令行。此 shell 通常与启动 Midnight Commander 的 shell 类型相同,并且可以随意切换到它 (Ctrl+o),参见 mc(1) § 子 shell 支持。在此命令行中,cd 由 Midnight Commander 解释,而不是传递给 shell 执行。因此,特殊的补全(例如来自 Zsh 的补全)不可用。面板中的文件与命令行交互;例如,Alt+Enter 将(选定的)文件名复制到命令行。

快捷键绑定通常类似于 GNU Emacs。可以启用更严格的 emacs 快捷键映射(参见 mc(1) § 重新定义快捷键绑定)。但是,新用户可以使用类似 Lynx 的(箭头)快捷键绑定(在选项 > 面板选项中启用)和鼠标点击进行导航。

Linux 虚拟控制台的鼠标支持可以使用 通用鼠标 启用。

模块

这些模块可以通过 Midnight Commander 界面(在选项 > 配置中启用使用内置)调用,也可以作为指向 mc 二进制文件的 符号链接 单独调用。

  • mcedit(1) — 文本和二进制文件编辑器,具有正则表达式替换、语法高亮、宏和 shell 管道
  • mcview(1) — 文本和十六进制查看器,具有跳转标记和正则表达式搜索
  • mcdiff(1) — 原位比较和编辑两个文件 (Ctrl+x d)

对于每个 Midnight Commander 实例,可以同时运行多个模块,您可以使用 Alt+` 在它们之间切换,参见 mc(1) § 屏幕选择器。可以使用外部编辑器代替,并相应地配置参数。

技巧与提示

从菜单启动

Midnight Commander 可以通过正确的 桌面条目 从菜单运行。例如

[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

安装 libtrashAUR 软件包,并在 shell 的初始化文件(例如 ~/.bashrc~/.zshrc)中创建一个 mc 别名

alias mc='LD_PRELOAD=/usr/lib/libtrash.so mc'

要应用更改,请重新打开 shell 会话或 source shell 初始化文件。

默认设置在 /etc/libtrash.conf.sys 中定义;默认回收站目录是 ~/Trash/。您可以在 ~/.libtrash 中覆盖这些每个用户的设置,例如

~/.libtrash
TRASH_CAN = .Trash
INTERCEPT_RENAME = NO
IGNORE_EXTENSIONS= o;exe;com
UNCOVER_DIRS=/dev

现在,Midnight Commander 删除的文件将被移动到 ~/.Trash/ 目录。

警告
  • 从 Midnight Commander 启动的应用程序会继承 LD_PRELOAD,这可能会导致某些应用程序出现问题。[1]
  • 如果设置了 GLOBAL_PROTECTION = YES(默认),则即使文件位于不同的分区上,在主目录外部删除的文件也会被移动到回收站。根据文件的大小,这可能会导致明显的延迟。

另请参阅 GNOME 邮件列表上的此主题

mcedit 语法高亮

mcedit(1) § 语法高亮 部分缺少来自 man 1 cooledit相应部分的一些重要信息。请阅读 mceditcooledit 手册页,或应用 补丁

故障排除

退出到当前目录

退出时,shell 返回到启动 Midnight Commander 的目录,而不是最后一个活动目录。包含了一个包装脚本,可以通过将此行添加到您的 ~/.bashrc~/.zshrc 来使用

alias mc=". /usr/lib/mc/mc-wrapper.sh"

对于 fish shell,请使用此包装器:http://mc-wrapper.fish。将其放置到 ~/.config/fish/functions/mc.fish 或在 fish shell 中执行内容,然后运行

funcsave mc 

另一个简单的解决方法是使用子 shell (Ctrl+o)。但这可能会干扰其他终端应用程序。

屏幕乱码

Ctrl+l 重新绘制显示。这只会重新绘制,但不会刷新 (Ctrl+r) 文件列表。

打开文件

Midnight Commander 读取 MC_XDG_OPEN 环境变量 来打开文件,默认情况下,如果未设置,则为 xdg-open 未设置时。

如果 Midnight Commander 被阻止,直到结果进程结束,或者进程与 mc 一起退出,请使用 nohup &

~/bin/nohup-open
#!/bin/bash
nohup xdg-open "$@" &

并相应地设置 MC_XDG_OPEN

$ export MC_XDG_OPEN=~/bin/nohup-open
提示:#使用 libtrash 时,在脚本中的 xdg-open 之前添加 unset LD_PRELOAD

查找文件无结果

如果查找文件对话框(可通过 Alt+?Esc+?F9 (菜单) > 命令 > 查找文件 访问)不显示任何结果,请检查当前目录中是否有符号链接查找文件不跟随符号链接,因此请改用绑定挂载(请参阅 mount(8))或外部面板化命令。

快捷键失效

对于某些终端定义(例如 screen-256colorxterm-termite),快捷键(例如 Shift+F6)可能无法工作或充当不同的组合。要解决此问题,请使用学习键对话框手动分配终端序列。

设置将存储在 ~/.config/mc/ini 文件中,例如对于 screen-256color

注意: 以下示例假定 F13F20 绑定到 Shift+F3Shift+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=^?

Xterm 窗口标题自定义

Xterm 窗口标题 格式被硬编码mc [用户名@主机名]:当前路径,另请参阅相关工单

mc(1) § 屏幕选择器屏幕列表)文件管理器(面板:)条目格式也被硬编码

mcdiff(1)mcedit(1)mcview(1) 根本更改 Xterm 窗口标题