Midnight Commander - Arch Linux 中文维基

跳转到内容

# Midnight Commander

来自 Arch Linux 中文维基

相关文章

- 文件管理器功能
- lf
- nnn
- ranger
- Vifm

翻译状态：

- 本文（或部分内容）译自 Midnight Commander，最近一次同步于 2024-11-16，若英文版本有所更改，则您可以帮助同步与翻译更改的内容。
- 您可以在 ArchWiki 的对应页面找到本文翻译的原始修订历史。
- 本文可能与英文原文存在出入。

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

基于多功能的文本接口⸺ncurses 或 S-Lang，它可以运行在常规控制台、终端模拟器、通过安全外壳协议（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-debian — modarin 主题的精简版

  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_SKIN`, `MC_KEYMAP`, `MC_XDG_OPEN`, `MC_COLOR_TABLE`, `MC_DATADIR`, `MC_HOME`, `KEYBOARD_KEY_TIMEOUT_US`, `PAGER`, `EDITOR`, `VIEWER`。

另见 mc(1) § FILES。

### extfs

extfs 允许为 Midnight Commander 创建新的虚拟文件系统。详情见 `/usr/lib/mc/extfs.d/README`。

## 使用方法

### 界面

主要视图为两个垂直窗格。窗格可以显示目录内容、文本预览、文件详细信息或目录树（详见 mc(1) § Directory Tree）。文件操作可以通过功能键或鼠标访问。更多选项可通过动态用户菜单（`F2`）和选项菜单（`F9`）查看。高于 `F12` 的键（如 `F13` 到 `F20`）可通过 `Shift` 访问。菜单和对话框选项有一个字母高亮，按下该字母（或在文本框中按 `Alt+字母`）即可直接激活相关选项。

底部显示的是与子 Shell 连接的命令行。此 Shell 通常与启动 Midnight Commander 时使用的类型相同，可以随时切换（`Ctrl+o`），详见 mc(1) § The subshell support。在该命令行上，cd 由 Midnight Commander 解释，而不是传递给 Shell 执行。因此，某些特殊补全功能（如 Zsh 提供的功能）不可用。窗格中的文件可与命令行交互，例如，按 `Alt+Enter` 可将（选中的）文件名复制到命令行。

按键绑定通常类似于 GNU Emacs。可以启用更严格的 emacs 键映射（详见 mc(1) § Redefine hotkey bindings）。新用户也可以使用 Lynx 样式（箭头）键绑定和鼠标点击进行导航。

在 Linux 虚拟控制台中，可以通过 General purpose mouse 启用鼠标支持。

### 模块

可以通过 Midnight Commander 界面调用这些模块（需在“选项 > 配置”中启用“使用内部模块”），或作为 mc 可执行文件的符号链接单独运行。

- mcedit(1)——文本和二进制文件编辑器，支持正则替换、语法高亮、宏和 Shell 管道
- mcview(1)——文本和十六进制查看器，带有转到标记和正则搜索
- 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 的初始化文件（如 `~/.bashrc` 或 `~/.zshrc`）中创建一个 mc 的别名：

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

应用更改后，重新打开 Shell 会话或使用 `source` 重新加载初始化文件。

默认设置定义在 `/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` 中对应部分。建议同时阅读 mcedit 和 cooledit 的手册页，或应用补丁。

## 故障排除

### 退出到当前目录

退出时，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 [2]。

如果 Midnight Commander 被阻塞直到进程结束，或者进程与 mc 一同退出，可使用 `nohup &`：

    ~/bin/nohup-open

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

并设置 `MC_XDG_OPEN`：

    $ export MC_XDG_OPEN=~/bin/nohup-open

提示：当#使用 libtrash时，在脚本中添加 `unset LD_PRELOAD` 以避免冲突。

### 查找文件无结果

如果“查找文件”对话框（快捷键 `Alt+?`, `Esc+?`, 或 F9 菜单 > 命令 > 查找文件）未返回结果，检查当前目录下是否存在“符号链接”。“查找文件”不会跟随符号链接，可使用绑定挂载（参见 mount(8)）或“外部面板化”命令替代。

### 快捷键失效

某些终端定义（如 `screen-256color` 或 `xterm-termite`）下，快捷键（如 `Shift+F6`）可能失效或表现异常。可以通过“学习按键”对话框手动分配终端序列。

设置会存储在 `~/.config/mc/ini` 文件中，例如对 `screen-256color` 的设置：

注意：以下示例假设 `F13`–`F20` 绑定为 `Shift+F3`–`Shift+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 [username@hostname]:current/path`，参见对应问题条目。

mc(1) § Screen selector（“屏幕列表”）文件管理器（“窗格：”）的条目格式也被固定。

mcdiff(1)、mcedit(1) 和 mcview(1) 不会更改 Xterm 窗口标题。

分类：​

- 文件管理器
- 终端应用程序
- GNU

Midnight Commander
添加话题