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
新增話題