CLIでファイル操作がはかどる!GNU Midnight Commanderがプロに愛されるワケ
引用元:https://news.ycombinator.com/item?id=45271481
Midnight Commanderが大好きで、どのシステムにも入れてるよ。ファイルシステムのナビゲートや基本操作では、はるかに効率的で快適なんだ。特にショートカットを覚えて、他のコマンドラインツールと組み合わせる(ヒント: MCでCtrl+Oを押すと、そのディレクトリで通常のシェルプロンプトに切り替わり、もう一度Ctrl+OでMCに戻れる)と、マジで最高だよ。
特にNASでファイルを移動する時にMCがめちゃくちゃ役立ってるよ。GUIファイルマネージャーなら、Dolphinに勝るものはないね。現在のディレクトリに統合シェルがあるし、ビューを分割できる。SSHやSFTPのURLも直接開けるんだ。ローカルではDolphinとシェルの組み合わせが最強だよ。
ショートカット一つで、僕が最後に変更したファイルを参照できるかな?シェルで一番欲しい機能なんだ。
MCでリモートURLをブラウズできないのが不満だよ。この問題に対処するために、GoでMCのクローンを作りたいとさえ思っちゃう。いつかrsyncやrcloneのコマンドを手作業で作るのが本当に嫌になったら、やる気になるかもね。
zshだとprint -rl -- *(om[1].)
みたいな感じのこと?
’99年からずっとMCを愛用してるよ。当時、友達が「Linuxの管理者になるには夜更かししないとダメだよ。Midnight Commanderは真夜中しか動かないからね!」って言ってたのを思い出すよ。Slackware 7 <3
DolphinよりKrusaderを試してみてよ。同じKDEの基盤だけど、もっと正統派なインターフェースだよ。URL: https://krusader.org
いや、グローバルに(僕のホームディレクトリ以下全部から)だよ。もちろん、最新のファイルが目的じゃない場合でも、その前のファイルに簡単に移動できるといいんだけどね。
Krusaderを何年も使ったけど、(Kubuntuの代わりにUbuntuをインストールしてから)Double Commanderを発見したんだ。これもフリーソフトウェアだけど、もっとクロスプラットフォームだよ(そしてFree Pascal/Lazarusを使って開発されてるから、いろんな意味で古風なんだ。昔はSourceForgeでホストされてたけど、今はGitHubに移ったみたいだね)。URL: https://github.com/doublecmd/doublecmd
唯一の不満は、vimキーバインドがデフォルトじゃないってこと。システムやTUIツール全体でキーバインドを統一したいんだよね。
mcの左右メニューでFTP、SFTP、SSHのURLを選べるじゃん。これじゃ駄目ってこと?
私はpcmanfm-qtが好きだな。これスプリットにも対応してるし、FZFみたいな検索機能が最高なんだ。ディレクトリを開いて入力するとファイルがフィルタリングされるんだよ。Dolphinより依存が少ないし、軽量環境にはいいよ。
https://github.com/lxqt/pcmanfm-qt
Nautilusだって昔は分割表示できたのに、GNOMEの開発者は偉そうにその機能を削除しちゃったんだよね。
面白いことに、最新のGNOMEではそれに似た機能が追加されたんだよ。
「Ctrl + .」で現在のディレクトリをターミナルで開くショートカットだよ。
https://9to5linux.com/gnome-49-brescia-desktop-environment-o…
Yazi[0]もいいかもしれないね。Rangerやnnnみたいにモダンなレイアウトで、複数のビュー用にタブを使えるよ。
[0]: https://yazi-rs.github.io/
今試したんだけど、Dockerのボリュームが全部ディスクドライブとしてペインの上に表示されるのを止められないかな?ファイルマネージャーの領域がほとんどないんだけど。
MCでのCtrl+Oで通常のプロンプトに切り替えられるけど、もっといい方法があるよ!
(一行)シェルプロンプトは常に利用可能で、Ctrl+X経由でいくつかの気の利いた連携ができるんだ。
例えば、現在のパネルで視覚的にタグ付け(選択)されたファイルがたくさんあって、それらを”/tmp/foo.tgz”としてtarしたいとする。
その場合は ”tar czf /tmp/foo.tgz Ctrl+X T” ってするんだ。
このリポジトリに完成品のスクリーンショットがないのが残念だよ!QTアプリは環境が整ってないとビルドが大変なんだよね。ところで、macOSでビルドできるか知ってる?それとも無理かな?
リバースシェルコマンドで、例えば*.txtみたいに検索すると、最近参照したテキストファイルが見つけられるんだって!
あ、なるほど、ヒントありがとう!助かるよ。kittyでファイルプレビューもできるって完璧じゃん!俺もデフォルトのターミナルにkitty使ってるんだ。
俺は君よりMCを愛してると思う。確信してるね。俺のワークフローやファイルに対する考え方に染み付いてるんだ。
俺も同じだよ。MS-DOS時代に成人したことと関係あるのかな?デザインがめちゃくちゃ洗練されてて効率的だなって感じる。
WebDAVみたいな他のプロトコルでも、マウントすればmcでファイル操作できるんだよ。
おお、すごいね!ありがとう!いつもAlt+Enterでハイライトしてるファイルにやってたけど、複数ファイルでもできるって知らなかったよ。
90年代からの素晴らしいプロジェクトだよね。1992年に大学で使ってたのを覚えてるよ。
それだけじゃなくて、大量のファイルを移動させたいなら、クラッシュしたり遅くなったりせずに処理してくれるのはDolphinだけだよ。
これってDolphinみたいに、Konsoleの設定をそのまま使って同じウィンドウにターミナルパネルが出て、Dolphinのナビゲーションと一緒にディレクトリが変わるの?Beetsで音楽ライブラリに追加する時とかにすごく便利なんだよね…。
昔Linuxを触り始めた頃に見つけたTkDeskが懐かしいな。無限に分割できるのが良かった。サブディレクトリに移動すると新しい分割画面で開くのがデフォルトだったから、最終的には全パス表示の分割画面でいっぱいになったよ。分割画面が増えすぎたら横スクロールできたんだ。詳細はこちら:https://tkdesk.sourceforge.net/
Midnight Commanderは素晴らしいツールだけど、若いユーザーはかつて失われたものに気づいてないかもね。Norton Commanderはデュアルペインだけでなく、ハードウェアを考慮した設計でファイル操作がめちゃくちゃ速かったんだ。
IBM PCのクラシックなテンキー(大きい+や0、トップ行の[num]/*-)や、キーボード上部のファンクションキーを使う前提で、ESCも遅延なく即座に効くべきだった。MCで全部できるから関係ないって言う人もいるけど、僕は違うと思う。数ミリ秒が大事なんだ。
上記の設定なら、全ファイルを選択して他のペインに移動するのは、テンキーの+とEnterを右手でサッと押し、F6を左手で押して、またEnterを右手で即座に押すだけ。今のキーボードの=キー上の+で同じことできるか試してみてよ。
>ESCは遅延なくすぐに効くべきだった。
それはMCのせいじゃなくて、エスケープシーケンスを正しく処理するためにターミナルエミュレータが遅延を追加してるんだ。設定で変えられるだろうけど、どこでも使える一番ポータブルな方法は、ESCを素早く2回押すことだよ。DOSでのやり方よりほんの少し遅いだけだし、1秒待つよりずっと速いよ。
もっとコメントを表示(1)
これは過去30年でLinuxコンソール、Xターミナルエミュレータ、そしてSSHを通じて解決されてるべきだった問題だよね。
これはほとんど『念のため』の措置だね。今どきTCP経由でエスケープシーケンスの一部だけが数ミリ秒以上遅れて届くリスクなんてほとんどないよ。それなのに、多くのシステムがまるでダイヤルアップ時代みたいに0.5秒以上の遅延を入れてるのがね…。もし気になったら、遅延を100~200msに調整するオプションが欲しいな。
kittyキープロトコルがこの問題を解決してくれるよ。でも、アプリとターミナルが対応してる必要があるけどね。多くのものが対応してるよ。
gnome-terminalだと、ESCキーが個別に解釈されずにエスケープシーケンスを手動で入力できた試しがないんだよね。
そもそも問題が理解できないんだけど?ESCとそれに続くキーは、たいていALT+キーのエイリアスだよね。
『全ファイルを選択』は『*』キー一つだったよね(実際は選択反転だったけど、事前にファイルが何も選択されていなければ結果的に全選択になる)。+とEnterを押すと1つのファイルが選択されて、次にそれを編集/実行しようとするんじゃない?
『+』キーで『Select files』ダイアログが開いて全ファイルが選択されるはずなんだ。でも、俺のMidnight Commander 4.8.33だと、以前のマスクを覚えてるか、マスクが入力されてないと何も選択しないんだよな。ちょっと不便だぜ。
ちゃんとしたキーボードとモニターがあれば、Stuffはまだ使えるだろ。ラップトップに長時間猫背になってるなら、テンキーの『+』が使えないことより他にデカい問題抱えてるはずだぜ…。
ああ、Norton Commanderか。Intel Pentium時代を思い出すぜ。今は左右の俯瞰ビューでのサクサク操作にはBeyond Compareを使ってるよ。
『一瞬たりとも無駄にできない』ってのは違うな。それなら、ホームポジションから手を動かす非人間工学的なキーは使わないはずだ。『全ファイル選択は右手一振り』って言うけど、一般的なCtrl+Aの方が親指動かすだけで良いし、F6とEnterのコンボよりCtrl+Shift+Xとかの方が片手で済んでマシだぜ。
『ホームポジションから手を動かす非人間工学的なキー』って、タッチタイピストはいつも言うよな。俺はVimを5年使ってても、矢印キー(up/dn/lf/rt)の方が触覚的に分かりやすいし、hjklより脳に合ってる。せいぜい80msの移動だろ。ゲーミングコミュニティだって、WASDが脳に理にかなってるって理解してるぜ。
『触覚的に見つけやすい』ってのは違うね。ホームポジションは探す必要がないから、そっちが常に簡単だ。『hjklより脳に合う』とか『WASDの方が正しい』って言うけど、この反論に君の脳はどう答える?テンキーの『+』やF6のナンセンスが、文字キーの改善とどう関係するんだ?80ms移動ってのも測ってないだろ。そもそも『一瞬たりとも無駄にできない』ってヤツをまず説得してくれ。俺にはデザインの論理と利便性がないってだけで十分だよ。
『ホームポジションのキーは探す必要ないから簡単』って言うけど、手が固定されてないと探す必要あるし、Vim以外じゃhjklはカーソル動かないだろ。Vimが意識せずに使えるヤツは、Vimで得た時間より学習に使った時間の方が長いって俺は確信してるぜ。フフフ。
『手がホームポジションに固定されてない限り』って?固定されてるんだよ、名前にヒントがあるだろ!『ホームポジションがhjklじゃないかも』って?他のキーを使えばいい。大事なのはホームポジションであってラベルじゃない。『Vim以外ではhjklがカーソル動かさない』って?君のソフト知識が浅すぎるぜ。ファイルマネージャーとか他にもあるし、右Altで片手で全アプリで使えるようにできるんだ。だからVimで得られるものは、カーソルキー使う全アプリに及ぶんだよ。
『ホームポジションに手が固定されてる』って言うけど、俺はホームポジションから届かない記号をよく使うから、手が離れたら矢印キーの方が探しやすくなるぜ。一般的なユーザーはVim以外だとhjklが動かないから、結局矢印キーを使う羽目になる。これは長年hjklを使い込んでも残る精神的摩擦だ。viの作者がhjklを選んだのは、優れてるからじゃなく、彼が使ってたPCに矢印キーがなかったからだって知ってたか?
『ホームポジションから届かない記号を使う』って?もっと良い設定使えよ!標準設定でも指で届くし、指が少し動くだけでホームポジションを離すわけじゃないだろ。なんでF6やテンキーの『+』の動きは無視して矢印キーだけ気にするんだ?一般的なユーザーはVim使わないし、Vim使うヤツはキーバインド変更くらいできるだろ。『長年使っても精神的摩擦が残る』って?数分でシステムいじれば消えるぜ。それに、システム全体で一回設定変えれば済む話だ。現実は君の空想よりシンプルだよ!viの作者がhjklを選んだ理由なんて、それが設定であって強制じゃないって理解できない君だけが固執してるんだろ。
設定をいじるのは罠だよ!デフォルトに慣れるのが一番だ。ギターを弾くみたいにね。カスタマイズするなら、筋肉記憶を変えるんじゃなくて、エイリアスやプラグインみたいな機能追加に留めるべきだ。あと、@みたいな記号の入力難易度は国によって違うんだ。hjklが矢印キーより良いって主張に反論してたんだけど、もう議論はやめるね!
設定を変えないなんて defeatist な考え方だよ。Vim や MC だって、どこでも使えるわけじゃないけどみんな使ってるだろ?人間は柔軟なんだから大丈夫だよ。F6 に筋肉記憶なんてないし、hjkl はもう手の動きとして慣れてるじゃないか。@ の入力だって手はホームポジションから離れないし。そもそも hjkl の話は君が持ち出したんじゃないか!
面白い話だけど、Dance Dance Revolution の画面上の矢印って hjkl と同じ並びなんだぜ。
ゲーマーも Wasdesdf の方が指に負担がかからなくて良いって言ってるよ。hjkl は好きじゃないから、リバインドするなら ijkl にしたいな。Apple ][ のゲームではよく ijkm が使われてたのを覚えてるよ。
WASD ナビゲーションでは F に人差し指を置かないよ。WASD が選ばれたのは、Ctrl, Alt, Space へのアクセスのしやすさなんだ。D に人差し指なら親指で Alt/Space、小指で Ctrl/Shift に簡単に届くからね。Vim が hjkl を使った理由はこのリンクを見てね: https://catonmat.net/why-vim-uses-hjkl-as-arrow-keys
WASD で F に人差し指は置かないけど、テキスト編集なら置くよね。今回はテキストエディタの UI の話だから。キーラベルに既存の慣習があったみたいだけど、記事には詳しく書いてないんだ。
昔 Doom をやってた頃は Ctrl/Shift を上下、ZX を左右に使ってたんだけど、RSI にならなくて快適だったよ。でも、毎回設定を変えるのが面倒になったし、他の人が俺の PC を使うと文句を言うから、結局 WASD に変えちゃったんだ。
ゲームが WASD になったのは片手で操作するからだよ。hjkl は J キー に突起があるから、矢印キーより理にかなってるんだ。移動も速いし、ホームポジションにも戻りやすいからね。もしかして、君は rage baiting してるだけ?
デュアルペインファイルマネージャーって「Orthodox File Manager」って言うんだ。これって東欧とか旧ソ連で人気だったから、文化的なジョークだと思ってたよ。詳しくはこちらの記事を見てね: https://softpanorama.org/Articles/introduction_to_orthodox_f…
「Orthodox」ってのは、GUI が裏側でコマンドを動かしてるって意味なんだ。UI はコマンドを起動するだけだから、手動でも自動でも実行できる。Vim とか Emacs みたいな Lisp ベースのソフトみたいに、強力な UI を作るのに最高の方法だね。プラグイン API じゃなくて、機能を直接アプリに組み込むんだ。参照記事にもっと詳しく書いてあるよ。
Blenderも該当する?ホバーで各UI要素の裏にあるPython関数名が表示されるのは、スクリプトを書くのに発見しやすくてすごく便利だったんだよね。それとも、今はもう見えないのかな?
ELMアーキテクチャに似たようなもの?ただ、ここで言うコマンドは、標準のUI操作の外でも実行できる「文字通りのコマンド」ってところが違うね。
これってlazygitみたいなツールが使ってるのと同じじゃない?
少なくともロシアでは、「orthodox」には教会とは厳密に結びつかない別の意味合いがあって、「唯一の正しい方法」って感じなんだ。例えば「テックスタックを学ぶ正統な方法」みたいにね。否定形になると「間違ってる」とか「異端」って意味になるよ、例えるなら「パイナップルピザ」って感じかな。
もっとコメントを表示(2)
君が説明してるのは英語での言葉の意味だよ。たぶん、この意味でロシア語の「православный」を使うようになったのは、英語での意味をロシア語の対応する単語に冗談で移植したのが始まりだと思うな。
実は、これはギリシャ語での意味だよ。>「正しいと見なされるもの」という意味で、後期ラテン語の「orthodoxus」から来てて、それはギリシャ語の「orthodoxos(正しい意見を持つ)」に由来するんだ。「orthos(右、真実、まっすぐ)」と「doxa(意見、賞賛)」から来てるよ(https://www.etymonline.com/word/orthodox)。でも、デュアルペインのファイルマネージャーに言及する場合、それは「唯一の正しい方法」と「昔ながら」の両方の意味が混ざってるだろうね。
うん、ロシア語で「Orthodox」は「pravoslavny」で、文字通り「正しい信仰(pravyj=右、正しい)」を意味するんだ。これも意味に貢献してると思うよ。「正しい方法」って意味にね。
イエス・アンド・ノーだよ。正教会は「православная церковь」って呼ばれるけど、「ортодоксальный」って言葉は例えば正統派ユダヤ教徒を説明するためにもまだ存在するんだ。「православный」が何らかのオブジェクトや技術、方法が良いとか正しいという意味で使われ始めたのは2000年代のインターネット文化で、今でもスラング/ジョークとして使われてるよ。
アイルランドでも同じ意味だよ!僕の理解では、ギリシャ語の「普通の教え」から来てるんだ。異なる思考を奨励する文化的環境には「heterodox」って言葉も使うし、「paradox」は挑戦的で矛盾したアイデアだね。あと、右利きボクサーは「orthodox」って言うよ。「southpaw」は非正統派の左利きのことだ。
ギリシャ人だけど、Orthodoxってのは orthos (まっすぐ/正しい) と doxasia (信じる) が合わさった言葉だよ。
だから orthodoxos は「正しい信念」って意味だね。
これは間違ってるよ。
ロシア語の「Ортодоксальный」はそういう意味合いは全然ないんだ。
むしろ、古くさいとか、意味もなく融通が利かないものを指す言葉だよ。
このスレッド、ちょっと混乱するなあ。
2つ上のコメントは、「Orthodox」を「唯一の正しい道」って意味でロシア語として説明してたけど、英語でもそういう意味合いがあるよね。
君は「唯一の正しい道」っていう意味合いはないって言ってるけど、「意味もなく融通が利かない」っていう意味合いがあるって言ってるよね。英語だと両方の意味合いがあると思うな。
まあ、「唯一の正しい道」って意味合いがある言葉は、ほとんどどれも「意味もなく融通が利かない」っていう二重の意味を持つことになるんじゃないかな?
もちろん、文脈によるんだけどね。
「православный」は、まさにその意味で専門用語として使われてるよ。
ソースは、45年間ロシア語を話しているネイティブスピーカーだよ。
じゃあ、それは最近の出来事なんだね。
インターネットのミームとか、креведкоみたいなものから来たのかな?
英語でも同じ意味合いだと思うな。主にギリシャ語から来たんだよね?
「正しい信念」みたいな意味だと思ってたよ。
「正しき実践」を意味する Orthopraxy と対比できるよね。Orthopraxy では信念や意図より行動が重要なんだ。
他のコメントを見ると、Orthodox ファイルブラウザは、ある種の基盤となる言語に基づいているらしいね。
https://news.ycombinator.com/item?id=45271878
「Orthodox」は、コマンドによって駆動される特定のタイプの GUI から来てるんだって。
UI 要素は、実際にはコマンドをトリガーするだけで、これらのコマンドは手動で実行したり、より複雑なコマンドに自動化したりできるんだ。
ちょっと定義を広げれば、これって結構理にかなってる気がするな。
Orthodox UI にはボタンがあって、それはユーザーの意図を表すコマンドのシーケンスに変換される。
別の方法は、ボタンが直接何かを行うだけで、ボタンがすること以外にユーザーの意図の記述がないってことだね。
かなり無理があるけど、これを Orthoprax UI と呼んでもいいかもね。
それに対する英語の言葉は「canonical」だよ。
僕にとっては、「canonical」はより記述的な感じがするけど、「Orthodox」は規範的な意味合いがあるな。
でも、僕は ESL だから、それが僕だけの感覚なのか、英語圏全体で一般的なのかは分からないけどね。
どちらの言葉も宗教用語や宗教的な比喩から来てるんだ。
僕(アメリカの英語ネイティブスピーカー)にとって、「Orthodox」の宗教的な参照はより分かりやすいけど、「canonical」の方はもっと曖昧に感じるな。
だから、「canonical」の方がなんだか技術的というか、もっと中立的な響きがあるね。
賛成だね。
でも、「canon law」は常に教会法を意味してきたよ。
「canonical」はその言葉から派生していて、ここでの「Orthodox」の使い方と同じように、「リファレンスデザイン」という似たような意味合いを持っているんだ。
数学では「canonical」って言葉は、だいたい「標準的な」とか「好ましい」やり方を意味するんだって。
でも本命の2ペインファイルマネージャーはTotal Commanderであって、このTUI Linuxクローンじゃないよね。
「Orthodox File Manager」って呼び方は、この記事の作者が広めようとしてる造語じゃないかな。(昔の記事へのリンクもあるしね)20~25年前、こういうファイルマネージャーが人気だった頃、俺はFidonet/Usenetの討論グループにいて、ヘビーユーザーたちと話してたけど、「Orthodox」なんて言葉は使われてなかったよ。たまに冗談で揶揄する時に使うくらいだった。でも、Dr. Nikolaiが本気で広めようとすれば、いつかは定着するってことか :D
良くも悪くも、そういう名前で呼ばれてるんだよね: https://en.wikipedia.org/wiki/File_manager#Orthodox_file_man…
いいものなのに、ずいぶん大げさな名前だよね。
それらが人気だったのは、当時東ヨーロッパにはUnix文化がなかったからだよ。ほぼ全てのコンピューター好きはDOSユーザーだったんだ。個人的には、多くの人がちゃんとシェル言語を学ぼうとしなかったから、ちょっと残念に感じてたな。
この起源についてはここで詳しく説明されてるよ: https://softpanorama.org/Articles/introduction_to_orthodox_f…
あと、これも: https://en.wikipedia.org/wiki/Orthodox_file_manager
Orthodox File Managerが登場したばかりの頃は、OS/2やUnix、Linux、Windows NTでは特定機能が動かないって説明に苦労したんだ。MS/PC/DR-DOSだけが、PSPの直接操作とかビデオRAM、キーボードバッファへの直接アクセスを許してたからね。当時はファイル名に拡張子がないことや、リンクの存在、ディレクトリサイズなんかのOSごとの違いを理解させるのが大変だったんだ。今ではDOS的な考え方は減って、Midnight Commanderの見た目は昔のユーザーには少し違和感があったかもだけど、今じゃMS/PC/DR-DOSのツールの方が初心者には奇妙に見えるだろうね。
俺はmcを使いこなせなかったよ。長年いろんなGUIファイルマネージャーを使ってきたから、キーボードショートカットが全然直感的じゃなかったんだ。SSHをよく使うから、CLIでファイル操作するのはめちゃくちゃ面倒でエラーも多いし、残念だったな…でも最近探したら、nnnファイルマネージャーを見つけたんだ。期待通りの基本的なキーボードコマンドでちゃんと動くし、ワークフローがすごく改善されたよ: https://en.wikipedia.org/wiki/Nnn_(file_manager)
同感だよ…でも、俺にとって一番速くて簡単なファイル管理方法はcoreutilsを使うことだね(rsync/zmv/zcpの助けを借りることもあるけど)。そうすれば、ローカルPC、サーバー、ルーターとか、どこにログインしてもいつも全く同じツールセットを使えるんだ。GUIファイルマネージャーはマルチメディア(写真、動画、PDFファイル)のためだけに使うよ。