跳至內容

Midnight Commander

出自 Arch Linux 中文维基


Midnight Commander 是適用於類 Unix 系統的可視化 Shell。它是一種傳統(雙窗格)文件管理器,支持標準文件操作、虛擬文件系統、外部命令面板化以及用戶菜單。它還包含內部查看器 mcview(1)、編輯器 mcedit(1) 和可視化差異工具 mcdiff(1)

基於多功能的文本接口⸺ncurses 或 S-Lang,它可以運行在常規控制台終端模擬器、通過安全外殼協議(SSH)連接的遠程 Shell 中。

文檔目前仍處於草稿狀態。

安裝[編輯 | 編輯原始碼]

安裝 mc,或安裝 mc-gitAUR 開發版本。

皮膚[編輯 | 編輯原始碼]

Midnight Commander 默認附帶多種皮膚。可以在「選項 > 外觀」中設置皮膚。

另外也可單獨安裝第三方皮膚:

  • mc-solarized-gitMidnight 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_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 的鍵(如 F13F20)可通過 Shift 訪問。菜單和對話框選項有一個字母高亮,按下該字母(或在文本框中按 Alt+字母)即可直接激活相關選項。

底部顯示的是與子 Shell 連接的命令行。此 Shell 通常與啟動 Midnight Commander 時使用的類型相同,可以隨時切換(Ctrl+o),詳見 mc(1) § The subshell support。在該命令行上,cdMidnight 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 中對應部分。建議同時閱讀 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 [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-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 [username@hostname]:current/path,參見對應問題條目

mc(1) § Screen selector(「屏幕列表」)文件管理器(「窗格:」)的條目格式也被固定

mcdiff(1)mcedit(1)mcview(1) 不會更改 Xterm 窗口標題