LoginSignup
24

More than 5 years have passed since last update.

posted at

[備忘録]ターミナルでTabキーを押下することで入力補完してくれるように変更する方法

はじめに

Windowsのコマンドプロンプトで作業するときは、
入力補完をTabキーを押下することで行ってくれるのですが、
Macのターミナルでも同じことができないか。
それを調べたら分かったので備忘録として記述します。

<参考にしたサイト及びブログ>
Mac のターミナルで Windows のようにタブキーで入力補完する方法
7.8. /etc/inputrc ファイルの生成

結論

内容の結論としては、.inputrcというファイルを作成し、
そのファイルに以下の内容を記述することで実現できます。
(以下の内容は、「Mac のターミナルで Windows のようにタブキーで入力補完する方法」より)

.inputrc
set completion-ignore-case on
TAB: menu-complete

そして、このファイルをどこに作成するかで使用できるユーザが変わります。
1. 特定のユーザだけに使わせたい場合
そのユーザのホームディレクトリ/Users/(ユーザ名)に作成します。
2. 全ユーザに使わせたい場合
/etcディレクトリ内に作成します。

説明

まず、.inputrcというファイルは何者かということについて、
7.8. /etc/inputrc ファイルの生成」というサイトで以下のように説明されていました。

inputrc ファイルはキーボードに応じたキーボードマップを定めます。 このファイルは入力に関連するライブラリ Readline が利用するもので、このライブラリは Bash などのシェルから呼び出されます。

つまり、こいつを設定することによってキーボードからの入力によって
必要なプログラム(今回は入力補完)が動くという仕組みらしい。
(「キーバインド (key binding)」を設定するファイルということ。)


さて、次に.inputrcに書いた内容についてですが、
まず一行目

.inputrc(1行目)
set completion-ignore-case on

これは、GNUの公式サイトのドキュメント(Bash Reference Manual: Readline Init File)に書かれていました。

completion-ignore-case
If set to ‘on’, Readline performs filename matching and completion in a case-insensitive fashion. The default value is ‘off’.

つまり、簡単にいうと
completion-ignore-caseonに設定すると、大文字小文字を区別しないで入力補完をしてくれるとのこと。ただし、初期設定では、offだけどね。
(offだと大文字小文字を区別することになるとのこと。)

そして2行目、

.inputrc(2行目)
TAB: menu-complete

これで、TABキーに「メニューを使って補完する」ということを割り当てているらしい。

他にも補完方法については指定できるらしい。「Ubuntu Serverで最低限追記しておきたい設定」で書かれている方がいるのでそちらを参照してください。

おまけ

<.inputrcファイル関係について書いているサイトのリンク>
bash - .inputrcでキーバインドを編集する
.inputrc - teratermで日本語入力ができない場合
Bash Reference Manual: Readline Init File
Readline
Ubuntu Serverで最低限追記しておきたい設定

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
24