コンソールのスキルを磨く

職場に新しいモニターを設置した後、「 マウスレス 」体験を改善する新しいイテレーションを開始しました。 あなたはそれが何を意味するか知っていますか? つまり、キーボードから手を離しながらマウスをつかむたびに、少しの時間とエネルギーを費やすことになります。 大量のテキストを入力する必要がある場合(および大量のコードを作成する場合)、これは不可欠になります。



また、 Delete



Backspace



Escape



さらにはEnter



など、届きにくいキーを避けようとすると、次のレベルの「マインドDelete



」な体験があります。



10本指のタッチタイピングの標準位置に手をかざす場合、小指で小指に手を伸ばすよりもCtrl-m



を押す方が便利です。



画像



この記事では、他の多くの場所で機能しますが、どの端末でも使用できる便利なキーボードショートカットについて説明します。



まず、比較表:

役職 典型的なキー 便利な代替品
スタートライン Home



Ctrl-a



行末 End



Ctrl-e



前方に1文字 Right Arrow



Ctrl-f



1文字戻る Left Arrow



Ctrl-b



カーソルの下の文字を削除 Delete



Ctrl-d



カーソルの前の文字を削除 Backspace



Ctrl-h



歴史上の前のチーム Up Arrow



Ctrl-p



歴史上の次のチーム Down Arrow



Ctrl-n



コマンド入力 Enter



Ctrl-j



またはCtrl-m



ボーナスとして、便利な組み合わせの別のリストを次に示します。
役職 キーボードショートカット
前の単語をカット Ctrl-w



行末まですべてカット Ctrl-k



行頭まですべてカット Ctrl-u



貼り付けカット Ctrl-y



ロールバック変更 Ctrl-_ (Ctrl+Shift+-)



画面をクリア Ctrl-l



他のアプリケーションでこれらの組み合わせを試すことを忘れないでください。 それらがどれほど広くサポートされているかに驚かれると思います。



なぜ機能するのか



まず、広く使用されているreadline



ライブラリがあります。 システムから削除してみてください。これに依存するアプリケーションの数がわかります( これは悪い冗談でした。やってはいけません )。 公式ホームページから:



GNU Readlineライブラリは、ユーザーが入力場所で入力コマンドを直接編集できる一連の関数を提供します。


これは、アプリケーションがユーザー入力にこのライブラリを単純に使用できることを意味し、すべての「グッズ」を処理します。 公式ドキュメントから、デフォルトでemacsモードとviモードがサポートされていることがわかります。 Viモードは、ウィマーにはより馴染みのあるものですが、1つの重大な欠点があります。現在のモードのインジケーターがないことです。



readline



はほとんどの組み合わせを提供しますが、すべてではありません。 それらの中には、 Ctrl-h



Ctrl-m



Ctrl-j



ます。 しかし、なぜ機能するのでしょうか? あなたは答えを好きになると思います。



ASCII文字テーブルを覚えていますか? テーブルの先頭には、32の古い不要な制御文字があります。 そして、 xev



ユーティリティとCtrl-m



組み合わせを見ると、



  <code> KeyReleaseイベント、シリアル34、合成NO、ウィンドウ0x1800001、
    ルート0x103、サブ0x0、時間17907461、(780,924)、ルート:(3342,946)、
    状態0x4、キーコード58(keysym 0x6d、m)、same_screen YES、
 「XLookupStringは1バイトを与えます:(0d)」
     XFilterEventは以下を返します:False
 </ code> 


このXLookupString



は、この組み合わせに対して0x0dバイトを返します。 また、 0x0dバイトは、 キャリッジリターン制御文字( \r



とも呼ばれる)にすぎません。 この制御文字は、コマンドを受け入れるように端末に指示し、 Enter



と同じように機能Enter



ます。 したがって、制御文字はそれほど不要ではありません(少なくとも、それらの一部)。



別の興味深い質問は、 Ctrl-m



組み合わせと復帰文字の関係をシステムがどのように決定するかです。 答えはそれほど興味深いものではありません- キャレット表記法 :印刷を使用して制御文字を記述する方法。 ルールは非常に単純です。制御文字コードの7番目のビットをインベントリし、対応する印刷物を取得するだけです。 一方では、すべてがシンプルです。 他方では、再割り当てできません。 しかし、私を信じないで、 ここで自分自身をチェックしてください



以上です。 この資料がお役に立てば幸いです。 自分自身を改善する!



PSバージョン6.3以降、 readline



のモードインジケータは引き続き存在します。 これを行うには、 set show-mode-in-prompt On



を〜/ .inputrcに追加しset show-mode-in-prompt On



。 ありがとうxaizek

PSS asciiコード表は、コマンドman ascii



表示できます。 繰り返しますが、 xaizekに感謝します



All Articles