ターミナルにまつわるちょっとした不満
原文は Julia Evans により に公開されました。 このブログを購読する
数週間前、ターミナルに関するアンケートを実施しました(結果はこちらから読めます)。最後にこんな質問をしました。
あなたにとって、ターミナルを使う上で最もイライラすることは何ですか?
1600人が回答してくれて、数日かけてすべての回答を分類することにしました。その過程で、定性データを分類するのがいかに難しいかを実感しましたが、できる限り頑張ってみました。最終的には、分類作業を速くするための自作のツールまで作ることになりました。
いつもの私のアンケートと同じく、手法は特に科学的なものではありません。MastodonとTwitterにアンケートを投稿して、数日間公開し、たまたま見かけて答えたいと思った人たちから回答を得ただけです。
では、不満の上位カテゴリーを見ていきましょう!
これらのコメントを読むにあたって、念頭に置いておきたいことがあります。
- 回答者の40%はターミナル歴が21年以上です
- 回答者の95%はターミナル歴が少なくとも4年以上です
これらのコメントは、まったくの初心者によるものではないということです。
以下が不満のカテゴリーです!括弧内の数字は、その不満を挙げた人数です。これは主に自分のためにまとめているものです。ターミナルについてのZINEを書こうとしていて、みんながどんなことで困っているのかを把握したかったのです。
構文を覚えるのが大変 (115)
次のような構文を覚えるのに苦労しているという声がありました。
- awk、jq、sedなどのCLIツールの構文
- リダイレクトの構文
- tmuxやテキスト編集などのキーボードショートカット
コメントの一例:
フルに使いこなすには、覚えておかなければならない些細な「トリビア」が多すぎます。これだけ長年使っていても、stderrが2だったか1だったかを忘れたり、
>と>>のどちらがどちらだったかを忘れたりすることがあります。
環境の切り替えが大変 (91)
システムを切り替える際(例えば自宅と職場のPC、あるいはSSHで接続したときなど)に、次のような問題に直面して苦労するという声がありました。
- キーボードショートカットのOS間の違い(LinuxとMacなど)
- 好みのテキストエディタが入っていないシステム(「vimがない」あるいは「vimしかない」)
- 同じコマンドでもバージョンの違い(MacのgrepとGNU grepなど)
- タブ補完が使えない
- 使い慣れていないシェル(「zshとbashの微妙な違い」)
また、同じシステム内でも、ページャ同士で挙動が統一されていない(git diffのページャと他のページャなど)といった違いも挙げられていました。
コメントの一例:
fishやviモードに慣れてしまったので、サーバーやコンテナにSSHで入ると使えなくて困ります。
色 (85)
色に関する問題も多く挙げられました。例えば:
- 明るい背景色だと読めなくなる色をプログラムが設定してしまう
- 気に入るカラースキームを見つけるのが大変(しかもそれを複数のアプリで一貫して機能させるのが大変)
- SSHやtmuxなどを何重にも重ねた中で色が正しく表示されない
- デフォルトの配色が気に入らない
- そもそも色を付けたくないのに、オフにするのに苦労する
このコメントには共感しました:
ターミナルエミュレータとfishの間で、ターミナルのテーマをまともに設定すること(何年も前にやったのですが、面倒で細かい調整が必要だったのを覚えていて、今はなんとか動いている今のテーマに縛られている感じで、あの設定を二度と触りたくないと思っています)。
キーボードショートカット (84)
キーボードショートカットに関するコメントの半数は、Linux/Windowsでターミナルでのコピー&ペーストのショートカットがOSの他の場所と違うことについてでした。
コピー&ペースト以外で挙げられたキーボードショートカットの問題には、次のようなものがあります。
- ブラウザベースのターミナルで
Ctrl-Wを使うとウィンドウが閉じてしまう - ターミナルが対応しているキーボードショートカットが限られている(
Ctrl-Shift-が使えない、SuperやHyperが使えない、Ctrl-,のような多くのctrl-ショートカットが使えない) - OSがターミナルのキーボードショートカットを邪魔する(例えばMacではデフォルトで
Ctrl+left arrowが別の機能に割り当てられている) - ターミナル内でemacsを使う際の問題
- バックスペースが効かない(2)
コピー&ペーストに関するその他の問題 (75)
「コピー&ペーストのキーボードショートカットが違う」以外にも、コピー&ペーストに関しては他にもたくさんの問題が挙げられました。例えば:
- SSH越しでのコピー
- tmuxとターミナルエミュレータがそれぞれ異なる方法でコピー&ペーストを扱っていること
- 多数のクリップボード(システムのクリップボード、vimのクリップボード、Linuxの「中クリック」クリップボード、tmuxのクリップボードなど)への対処や、それらの同期
- ターミナルからコピーすると余計な空白が入る
- 複数行のコマンドをペーストすると勝手に実行されてしまう恐ろしい挙動
- マウスを使わずにテキストをコピーしたい
発見しにくさ (55)
これについてもたくさんのコメントがありましたが、どれも根本的には同じ不満に集約されます——便利なツールや機能を見つけるのが難しい!ということです。このコメントがそれをよくまとめていました:
独学で学ぶのがどれだけ難しいかということです。私が知っていることのほとんどは、長年にわたってたまたま人から教えてもらったことの寄せ集めです。
学習曲線が急すぎる (44)
全体的に学習曲線が急だというコメントも多くありました。例えば次のようなものです:
15年使っていても、5年前、あるいは10年前と比べても、使うスピードはあまり速くなっていません。
そして
ショートカットやコマンドをもっと学んだり、ターミナルを設定したりすれば楽になるのは分かっているのですが、圧倒されてしまって時間をかけられずにいます。
履歴 (42)
シェルの履歴に関するいくつかの問題:
- 履歴がターミナルのタブ間で共有されない(16)
- 履歴の上限が短すぎる(4)
- ターミナルのタブを復元しても履歴が復元されない
- ターミナルがクラッシュして履歴が失われる
- 履歴の検索方法がわからない
コメントの一例:
分かるまでかなり時間を無駄にしたし、今でもzshの「history」のバッファがあんなに小さいことにはイライラします。まともな長さの履歴を得るには「history 0」と打たなければならないのです。
ドキュメントがひどい (37)
次のような声がありました:
- ドキュメントが全体的に分かりにくい
- manページに使用例が少ない
- manページがないプログラムがある
代表的なコメント:
良い例やドキュメントを見つけるのが大変です。manページだけでは足りないことが多く、Stack Overflowをかき分けなければなりません。
スクロールバック (36)
スクロールバックに関するいくつかの問題:
- プログラムが大量のデータを出力してスクロールバックの履歴が消えてしまう
- ターミナルのサイズを変更するとスクロールバックが崩れる
- タイムスタンプがない
- バックグラウンドで起動したGUIプログラムが出力を表示して、他のプログラムの出力の邪魔をする
コメントの一例:
ターミナルのサイズを変更したとき(特に幅を狭くしたとき)に、コマンドがターミナルウィンドウの幅に合わせて出力を整形していたために、スクロールバックの内容の折り返しが崩れてしまうことです。
「時代遅れに感じる」(33)
ターミナルが過去の決定に縛られて不便に感じられることや、非常に難解に感じられる実装の詳細を結局学ばなければならなくなることについて、たくさんのコメントがありました。コメントの一例:
ほとんどのレガシーな残骸です。CLIインターフェースを一から作り直した実装があれば素晴らしいと思います。
シェルスクリプト (32)
POSIXシェルスクリプトに関する不満も多くありました。シェルスクリプトは難しいというのが一般的な感想ですが、同時に、別のあまり標準的でないスクリプト言語(fish、nushellなど)に切り替えると、それはそれで別の問題が生じるという感覚もあります。
シェルスクリプトです。シェルスクリプトを捨ててスクリプト言語に切り替えるまでの我慢の閾値はかなり低いです。あまりにもごちゃごちゃしていて、かつ強力すぎます。失敗すると代償が大きいので、そもそも手を出さないようにしています。
その他の問題
少なくとも10回以上言及された、その他の問題:
- (31) コマンドライン引数の一貫性のなさ:-hなのかhelpなのか--helpなのか?
- (24) 異なるシステム間でdotfilesを同期させておくこと
- (23) パフォーマンス(例:「シェルの起動に時間がかかりすぎる」)
- (20) ウィンドウ管理(tmuxのタブ、ターミナルのタブ、複数のターミナルウィンドウの組み合わせ。あのシェルセッションはどこに行った?)
- (17) 全般的に怖い・不安を感じる(「何か謎の『悪いこと』をコマンドでやってしまい、どう直せばいいのか、どう元に戻せばいいのか、そもそも何が起きたのかさえ全く分からなくなるのではないかという、麻痺するほどの恐怖」)
- (16) terminfoの問題(「新しいターミナルエミュレータを試して別の場所にSSHするときにterminfoについて学ばなければならないこと」)
- (16) 画像サポートの欠如(sixelなど)
- (15) SSHの問題(SSH接続が切れるとやり直さなければならないなど)
- (15) さまざまなtmux/screenの問題(例えばtmuxとターミナルエミュレータ間の連携不足)
- (15) タイプミスと入力の遅さ
- (13) さまざまな理由でターミナルがめちゃくちゃになること(
Ctrl-Sを押す、バイナリをcatするなど) - (12) シェルにおけるクォート/エスケープ
- (11) さまざまなWindows/PowerShellの問題
特になし (122)
また、「特にない」あるいは「ターミナルですべてのことができないことだけが不満」といった趣旨の回答も122件ありました。
コメントの一例:
ほとんどの/すべての不満に対して回避策を見つけたと思います
以上です!
これらの結果について多くを語るつもりはありませんが、個人的に関連していると感じたカテゴリーをいくつか挙げておきます。
- 構文を覚えることと履歴(覚える必要があるものは、たいてい以前に実行したことのあるものです!)
- 発見しにくさと学習曲線(発見しにくいことが、学習を難しくしている大きな要因であることは間違いありません)
- 「環境の切り替えが大変」と「時代遅れに感じる」(30年、40年とほとんど変わっていないツールには多くの問題がありますが、どんなシステムにも必ず存在しているという点では非常に有用であり、それが使うのをやめにくくしている要因でもあります)
これらすべての結果をきちんとした形で分類しようとしてみて、社会科学の研究者のスキルには本当に頭が下がる思いがしました。
記事をランダムに読む
コメント
ログインしてコメントする