Midnight Commander

出自 ArchWiki
(重定向自 Mcedit)


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

因为它基于通用的文本界面 — ncurses 或 S-Lang — 它可以工作在 常规控制台X Window 终端 内、通过 安全外壳 (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) § Skins

配置

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

此外,以下环境变量会被识别:MC_SKINMC_KEYMAPMC_XDG_OPENMC_COLOR_TABLEMC_DATADIRMC_HOMEKEYBOARD_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) — 文本和十六进制查看器,具有 goto 标记和正则表达式搜索
  • mcdiff(1) — 就地比较和编辑两个文件 (Ctrl+x d)

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

技巧与提示

从菜单启动

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 初始化文件中创建一个 mc 别名 (例如,~/.bashrc~/.zshrc)

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 when

如果 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 窗口标题