跳转至内容

Midnight Commander

来自 ArchWiki
(从 Mcedit 重定向而来)


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

由于它基于多功能的文本界面——ncurses 或 S-Lang——它可以在 普通控制台X Window 终端内、通过 安全 Shell (SSH) 连接,以及所有类型的远程 Shell 上运行。

安装

安装 mc 包。

皮肤

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) § Skins

配置

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

此外,还会识别以下环境变量:MC_SKINMC_KEYMAPMC_XDG_OPENMC_COLOR_TABLEMC_DATADIRMC_PROFILE_ROOT(在 v4.8.19 之前为 MC_HOME)、KEYBOARD_KEY_TIMEOUT_USPAGEREDITORVIEWER

另请参阅 mc(1) § FILES

extfs

extfs 允许为 Midnight Commander 轻松创建新的虚拟文件系统。详情请参阅 /usr/lib/mc/extfs.d/README

用法

接口

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

下方可见一个命令提示符,连接到一个子 Shell。该 Shell 通常与 Midnight Commander 启动时所在的 Shell 类型相同,并且可以随时切换(Ctrl+o),请参阅 mc(1) § The subshell support。在此命令提示符下,cd 由 Midnight Commander 解释,而不是传递给 Shell 执行。因此,特殊的补全(例如来自 Zsh 的补全)不可用。面板中的文件会与命令提示符交互;例如,Alt+Enter 会将(选定)文件的名称复制到命令提示符。

按键绑定通常类似于 GNU Emacs。可以启用更严格的 Emacs 键映射(请参阅 mc(1) § Redefine hotkey bindings)。不过,新用户可以使用类似 Lynx 的(箭头)按键绑定(在 *选项 > 面板选项* 中启用)和鼠标点击进行导航。

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

模块

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

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

每个 Midnight Commander 实例都可以同时运行多个模块,您可以使用 Alt+` 在它们之间切换,请参阅 mc(1) § Screen selector。可以使用外部编辑器代替,并相应配置参数。

技巧与提示

从菜单启动

Midnight Commander(以及 mcedit(1) 及其其他子命令)可以从 应用程序启动器 运行,需要正确的 桌面条目。例如:

[Desktop Entry]
Type=Application
Version=1.5
Name=Midnight Commander
Comment=Visual file manager
Exec=mc %f
Icon=MidnightCommander
MimeType=inode/directory
Terminal=true
Categories=ConsoleOnly;FileManager;Utility;

随着许多 终端模拟器 获得 D-Bus 激活功能,还可以 创建一个 D-Bus 服务 来触发它们打开一个新标签页/面板并在那里调用 mc,并使用 Systemd 单元作为触发器的监听器。

回收站支持

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) § SYNTAX HIGHLIGHTING 部分 缺少 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) § Screen selector屏幕列表)文件管理器(面板:)条目的格式也是 硬编码 的。

mcdiff(1)mcedit(1)mcview(1) 完全 更改 Xterm 窗口标题

参见