Midnight Commander

提供: ArchWiki
2020年7月6日 (月) 15:02時点におけるKgx (トーク | 投稿記録)による版 (→‎urxvtで太字のテキストが表示されない: を追加)
ナビゲーションに移動 検索に移動

関連記事

Midnight Commander はビジュアルファイルマネージャです。ファイルやディレクトリー全体のコピー・移動・削除や、ファイルの検索、サブシェルでのコマンドの実行ができます。ビューアやエディタも内蔵しています。

Ncurses や S-Lang のような汎用のテキストインターフェイスを使っているため、通常のコンソール、X Window ターミナル、または SSH 接続を介してリモートシェルでも動作します。

インストール

mc パッケージをインストールしてください。開発版は AURmc-gitAUR でインストールできます。

スキン

Midnight Commander にはデフォルトで複数のスキンが付属しており、Options > Appearance でスキンを設定できます。

サードパーティ製のスキンは以下のパッケージでインストールできます:

  • 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-skin-candy — Candy カラースキーム (256color)
candy256.ini ||

mc(1)Skins も参照。

使用方法

以下のセクションでは Midnight Commander の簡単な使い方を説明しています。mc(1) やヘルプ (F1) への参照は Section で表します。

ヒント: 全てのヒントは /usr/share/mc/hints/ で見ることができます。

インターフェイス

プロミネントビューでは2つの縦ペインが存在します。ディレクトリの中身や、プレーンテキストのプレビュー、ファイルの詳細、あるいはディレクトリツリーを表示することが可能です (Directory Tree を参照)。ファンクションキーやマウスを使うことでファイルの操作ができます。ダイナミックユーザーメニュー (F2) やオプションメニュー (F9) には他のオプションも表示されます。F12 以上のメニュー (F13 から F20 まで) は Shift で使うことができます。メニューやダイアログのオプションは一文字だけハイライトされ、その文字を押すことで (あるいはテキストエントリで Alt+Letter を押下)、直接オプションを実行します。

下には、サブシェルに接続されたコマンドラインが表示されます。mc を起動するのに使ったシェルと同じタイプのシェルで、自由に切り替えることが可能です (Ctrl-O)。The subshell support を参照。このコマンドラインでは、cd は Midnight Commander によって解釈され、シェルには渡されません。従って、(Zsh のような) 特殊な補完 (such as from Zsh) は使えません。ペインのファイルはコマンドラインで操作することができます。例えば、Alt+Enter で(選択された)ファイルの名前をコマンドラインにコピーします。

キーバインドは GNU Emacs と似ています。さらに、厳格な emacs のキーマップを有効にすることも可能です (Redefine hotkey bindings を参照)。新規ユーザー向けの Lynx ライクな (方向キーを使用する) キーバインドを使ったり (Options > Panel options で有効化)、あるいはマウスで操作することもできます。

モジュール

以下のモジュールは mc のインターフェイスから呼び出すことができ (Options > ConfigurationUse internal を有効化)、または mc バイナリのシンボリックリンクとして独立しています。

  • mcedit - テキスト・バイナリファイルエディタ。正規表現による置換、シンタックスハイライト、マクロ、シェルパイプなどに対応。mcedit(1) を参照。
  • mcview - goto マークや regex 検索ができるテキスト・ヘックスビューア。
  • mcdiff - 2つのファイルを一度に比較・編集する (C-x d)。

一つの mc インスタンスで、複数のモジュールを同時に起動することができます (Ctrl-`)。Screen selector を参照してください。外部エディタを使うこともでき、パラメータを設定します。

設定

ほとんどの Midnight Commander の設定はメニューから変更できます。ただし、クリップボードのコマンドやコードセットの検知、外部エディタのパラメータなどは ~/.config/mc/ini でしか設定を変更できません。利用可能なオプションの説明は Special Settingsを参照してください。

さらに、以下の環境変数を使うことができます: MC_SKIN, MC_KEYMAP, MC_XDG_OPEN, MC_COLOR_TABLE, MC_DATADIR, MC_HOME, KEYBOARD_KEY_TIMEOUT_US, PAGER, EDITOR, VIEWER

Files を見てください。

extfs

extfs を利用することで簡単に mc 用に仮想ファイルシステムを作成することができます。詳しくは /usr/lib/mc/extfs.d/README を参照。

ヒントとテクニック

メニューから起動

デスクトップエントリを使うことでメニューから 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 をインストールしてシェルの初期設定ファイル (例: ~/.bashrc または ~/.zshrc) に mc エイリアスを作ってください:

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

変更を適用するには、シェルのセッションを再起動するかシェルの設定ファイルを source してください。

デフォルト設定は /etc/libtrash.conf.sys に定義されています。~/.libtrash を使ってユーザーごとに設定を上書きすることができます。例:

TRASH_CAN = .Trash
INTERCEPT_RENAME = NO
IGNORE_EXTENSIONS= o;exe;com
UNCOVER_DIRS=/dev

これで (mc で起動した) Midnight Commander によって削除されたファイルは ~/.Trash ディレクトリに移動します。

警告:
  • mc から起動したアプリケーションは LD_PRELOAD を継承するため、一部のアプリケーションでは問題が発生します [1]
  • GLOBAL_PROTECTION = YES が設定されている場合 (デフォルト)、ホームディレクトリに存在しないファイルは、たとえ別のパーティションにあったときでも削除するとゴミ箱に移動されます。ファイルによっては、削除にかなり時間がかかるようになります。

[2] も参照。

トラブルシューティング

終了したときにカレントディレクトリが移動する

終了時、最後に使用したディレクトリではなく、Midnight Commander が起動したときに開いていたディレクトリにシェルが戻ります。~/.bashrc~/.zshrc に以下の行を追加することで利用することができる、ラッパースクリプトが存在します:

source /usr/lib/mc/mc.sh

上記の設定で mc がラッパースクリプトにエイリアスされます。

サブシェルを使用するという方法もあります (Ctrl+o)。ただし、他のターミナルアプリケーションと干渉する可能性があります。

画面が化ける

Ctrl+l を押して画面を再描写してください。再描写を行うだけでファイルリストの更新 (Ctrl+r) は行われません。

ファイルを開く

mc はファイルを開くときに MC_XDG_OPEN 環境変数を使います。デフォルトでは xdg-open になっています [3]

作成されたプロセスが終了するまで mc がブロックされたり、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 を追加してください。

ファイル検索で何も表示されない

Find file ダイアログ (Alt+?) で結果が表示されない場合、カレントディレクトリに存在するシンボリックリンクを確認してください。ファイル検索ではシンボリックリンクを処理できないため、代わりにバインドマウントを使用してください (man mount を参照)。あるいは External panelize コマンドを使ってください。

ショートカットが機能しない

screen-256colorxterm-termite など特定のターミナル定義を使用している場合、Shift+F6 などのショートカットが機能しなかったりおかしかったりすることがあります。問題を解決するには、Learn keys ダイアログを使って手動でターミナルシーケンスを割り当ててください。

設定は ~/.config/mc/ini ファイルに保存されます。例えば screen-256color の場合:

ノート: 以下の例では F13F20Shift+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=^?

urxvtで太字のテキストが表示されない

デフォルトのTERM設定でurxvtの下で起動した場合、他の多くの端末では通常太字であるテキストは表示されません。この問題の原因は、xtermが明るいテキストの色と太字の属性を組み合わせているためです(したがって、xtermでは明るい色が常に太字として表示されます)。 urxvtにはこの制限がありません。Slang(mcがデフォルトでテキスト表示に使用するライブラリ)はこの制限を満たしています。 Slangは太字属性をurxvtの明るい色から分離できるため、mcは必要に応じて太字属性を明示的に指定する必要があります。 解決策は、必要に応じて太字を明示的に使用するようにmcを設定することです。デフォルトのスキンを次のように編集します。

$ mkdir ~/.local/share/mc/skins 
$ cp /usr/share/mc/skins/default.ini ~/.local/share/mc/skins/
$ sed -i -E 's/^(.* = (gray|brightred|brightgreen|yellow|brightblue|brightmagenta|brightcyan|white);.*)$/\0;bold/' ~/.local/share/mc/skins/default.ini

上記はデフォルトのスキンのコピーを作成しますが、すべての明るい色に明示的なボールド属性が追加されています。 別の一般的な回避策はTERM = xtermを設定することですが、これにより、特定のキーが機能しないなど、termcap / terminfoの不一致が原因で他の問題が発生します。

参照