はじめに
Windowsのコマンドプロンプトで作業するときは、
入力補完をTabキーを押下することで行ってくれるのですが、
Macのターミナルでも同じことができないか。
それを調べたら分かったので備忘録として記述します。
<参考にしたサイト及びブログ>
・ Mac のターミナルで Windows のようにタブキーで入力補完する方法
・ 7.8. /etc/inputrc ファイルの生成
結論
内容の結論としては、.inputrc
というファイルを作成し、
そのファイルに以下の内容を記述することで実現できます。
(以下の内容は、「Mac のターミナルで Windows のようにタブキーで入力補完する方法」より)
set completion-ignore-case on
TAB: menu-complete
そして、このファイルをどこに作成するかで使用できるユーザが変わります。
1. 特定のユーザだけに使わせたい場合
そのユーザのホームディレクトリ/Users/(ユーザ名)
に作成します。
2. 全ユーザに使わせたい場合
/etc
ディレクトリ内に作成します。
説明
まず、.inputrc
というファイルは何者かということについて、
「7.8. /etc/inputrc ファイルの生成」というサイトで以下のように説明されていました。
inputrc ファイルはキーボードに応じたキーボードマップを定めます。 このファイルは入力に関連するライブラリ Readline が利用するもので、このライブラリは Bash などのシェルから呼び出されます。
つまり、こいつを設定することによってキーボードからの入力によって
必要なプログラム(今回は入力補完)が動くという仕組みらしい。
(「キーバインド (key binding)」を設定するファイルということ。)
さて、次に.inputrc
に書いた内容についてですが、
まず一行目
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-case
をon
に設定すると、大文字小文字を区別しないで入力補完をしてくれるとのこと。ただし、初期設定では、off
だけどね。
(off
だと大文字小文字を区別することになるとのこと。)
そして2行目、
TAB: menu-complete
これで、TABキーに「メニューを使って補完する」ということを割り当てているらしい。
他にも補完方法については指定できるらしい。「Ubuntu Serverで最低限追記しておきたい設定」で書かれている方がいるのでそちらを参照してください。
おまけ
<`.inputrc`ファイル関係について書いているサイトのリンク>
・ bash - .inputrcでキーバインドを編集する
・ .inputrc - teratermで日本語入力ができない場合
・ Bash Reference Manual: Readline Init File
・ Readline
・ Ubuntu Serverで最低限追記しておきたい設定