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

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

また、 DeleteBackspaceEscapeさらにはEnterなど、届きにくいキーを避けようとすると、次のレベルの「マインドDelete 」な体験があります。

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

画像

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

まず、比較表:
役職典型的なキー便利な代替品
スタートラインHomeCtrl-a
行末EndCtrl-e
前方に1文字Right ArrowCtrl-f
1文字戻るLeft ArrowCtrl-b
カーソルの下の文字を削除DeleteCtrl-d
カーソルの前の文字を削除BackspaceCtrl-h
歴史上の前のチームUp ArrowCtrl-p
歴史上の次のチームDown ArrowCtrl-n
コマンド入力EnterCtrl-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-hCtrl-mCtrl-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に感謝します

Source: https://habr.com/ru/post/J266933/


All Articles