Bashプログラミング
 Computer >> コンピューター >  >> プログラミング >> Bashプログラミング

.inputrcファイルでLinuxのマクロ・関数キーバインドを自作する方法

Readline(リードライン)では、ホームディレクトリにある「.inputrc」という設定ファイルを編集することで、独自のカスタムキーバインドを自由に割り当てられます。

定義できるカスタムキーバインドには、次の2種類があります。

  1. マクロ(Macros)
  2. 関数(Functions)

マクロの定義方法

マクロを使うと、キー操作を実行したときに、カーソルの現在位置へ任意の文字列を自動入力させることができます。設定するには、.inputrcファイル(存在しない場合は新規作成)に、次の形式で1行追加します。

<キーの組み合わせ>: "<挿入したい文字列>"

たとえば、「~/debug_output.txt」への出力リダイレクトを何度も入力しているなら、.inputrcに次の1行を追加してマクロを定義できます。

Control-g: " > ~/debug_output.txt"

これ以降、Control-gを押すたびにカーソル位置の後ろへリダイレクト文が挿入され、他のコマンドの末尾に簡単に付け足せるようになります。

マクロを作成する際は、以下の点に注意しましょう。

  • キーの組み合わせは英語表記で指定できます。詳細はbashのmanページにある「Readline Key Bindings」のセクションを参照してください。
  • マクロで挿入する文字列は、必ずダブルクォート(")で囲みます。
  • ここでControl-gを選んだのはあくまで一例です。自分が覚えやすく、他と干渉しない組み合わせを自由に選べます。
  • 既定のキーバインドを上書きすることも可能です。独自に定義する際はこの点に留意してください。
  • .inputrcはシェルの起動時に読み込まれるため、設定を反映させるには新しいシェルインスタンスを起動する必要があります。

関数の割り当て方法

キー操作に関数を呼び出すバインドを作ることも可能です。Readlineには多数の事前定義済み関数が用意されており、次の形式でキーとの対応を記述します。

<キーの組み合わせ>: <関数名>

利用できる関数の一覧については、GNU Readlineのマニュアルを確認してください。

なお、独自のカスタム関数を定義することも理論上は可能ですが、C言語での実装が必要となるため、本チュートリアルの範囲外です。機会があれば別の記事で取り上げるかもしれません。

便利な関数の例:menu-complete

有用な事前定義関数のひとつが「menu-complete」です。これは、標準の補完とは異なる動作を提供します。

TABキーに割り当てられている標準のオートコンプリートは、次のように動作します。

  • 候補が1つだけなら、そのコマンド・ディレクトリ名・ファイル名を自動入力する
  • 候補が複数ある場合は、候補の一覧を表示する

一方「menu-complete」は、候補リストを順番に巡回し、呼び出されるたびに次の候補を順次入力していきます。特に長いファイル名を補完する場合などに便利な動作です。TABキーをこの動作に再割り当てするには、.inputrcに次の1行を追加します。

TAB: menu-complete

この新しいキーバインドは現在開いているシェルには即時適用されない点に注意してください。.inputrcを再読み込みさせるには、新しいシェルインスタンスを起動します。

まとめ

本記事では、LinuxのコマンドラインのキーバインドがReadlineによって制御されていることを学びました。キーバインドには次の2種類があります。

  • マクロ: 文字列を展開して挿入する
  • 関数: 特定のアクションを実行する

Readlineは既定のキーバインドを提供していますが、.inputrc設定ファイルを使えば独自のバインドも柔軟に作成できます。また、現在有効になっているすべてのキーバインドを確認したい場合は、「bind」コマンドを使用します。

bind -p
  1. Linuxはユーザーパスワードをどう保存・管理しているのか?仕組みを徹底解説

    Linuxはどのようにして複数ユーザーが存在する環境を効率的に管理しているのでしょうか?本記事では、Linuxがユーザーのパスワードやログイン情報をどのように保存・管理しているのかを詳しく解説します。 /etc/passwd ファイルの中身を見てみよう ユーザーがユーザー名とパスワードを入力すると、Linuxは「/etc」ディレクトリ内の複数のファイルと照合し、入力されたパスワードが正しいかどうかを確認します。 「/etc/passwd」はユーザー情報を保存する最も重要なファイルの一つです。 このファイルの最後のエントリは「carbon」というユーザーに対応するものです。各項目は

  2. ドットファイルとは何か?MacとLinuxでの作成・管理方法を徹底解説

    ドットファイル(dotfiles)は、ソフトウェア開発者としてのキャリアにおいて重要な役割を果たすファイルです。 まず、ドットファイルを活用することで作業効率が大幅に向上します。さらに、自分好みにカスタマイズした快適な開発環境を、どのマシンでも再現できるようになります。 この記事では、ドットファイルの入門として、その概要、システム上での探し方、簡単なドットファイルの作成方法を学びます。加えて、設定のカスタマイズや知識を深めるためのおすすめリソースも紹介します。 それでは始めましょう! ドットファイルとは? 多くのコンピュータソフトウェアは、設定情報をプレーンなテキスト形式のファイルやディレクト