野沢菜

TCSH

About

tcshはUNIXで一般的に利用されているshellの一つです. FreeBSDでは標準のshellとして設定されています. 他のUNIX/Linuxのシステムでもほとんどのもので最初からインストールされています.

補完機能

補完とは, ファイル名やコマンド名の一部のみを入力した場合に, 一定の規則に従って該当するものに対して残りの部分を補ってくれる機能のことです. tcshでは, 通常[TAB]を入力することで補完機能を使用することができます. また, 補完対象が複数存在する場合は[Ctrl+D]を入力することで補完の候補を全て表示します.
ここでは, 補完機能をより便利に利用するための設定について紹介します.

シェル変数

シェル変数とはシェルの設定を保存するためのもので, setコマンドで設定することができます. いくつかのシェル変数を設定することで, 補完機能をより便利に使うことができるようになります.

autolist
set autolist
と設定しておくと, 補完対象が複数存在する場合に[TAB]でも候補を表示します.
fignore
補完対象から外したい内容を指定することができます. 例えば
set fignore=(*~)
と設定すると, 最後が"~"で終るファイルは補完の対象になりません.

completeコマンド

completeコマンドを利用すると, 特定のコマンドに対しての細かい設定が可能です. 例えば, 補完の条件を次のように限定するには,

  • cdコマンドはディレクトリ
  • platex, latex, texコマンドは'.tex'で終るファイル
  • gvコマンドは'.eps','.ps','.pdf'で終るファイル
  • xdviコマンドは'.dvi'で終るファイル

次のように設定すれば良いわけです.

complete cd 'p/l/d/'
complete {platex,latex,tex}     'n/*/f:*.tex/'
complete gv     'n/*/f:*.{eps,ps,pdf}/'
complete xdvi   'n/*/f:*.dvi/

completeコマンドについては, .cshrcにあらかじめ記述しておくと便利です.

completeコマンドのより詳しい解説

completeコマンドはtcshの組み込みコマンドで, 複雑な設定をすることが可能です. また, zshではcompctrlコマンドというコマンドで同様の設定を行うことが可能らしいです.

書式

complete (コマンド名) '[pcn]/(検索対象)/(補完対象)/'

補完の種類, 検索対象

補完の種類は三種類あります. 種類によって, 指定する検索対象が変化します.

p
検索対象で指定した箇所の引数の補完対象を限定します. cdコマンドの一番目の引数をディレクトリに限定するには,
complete cd 'p/1/d/'
となります.
c
検索対象で指定した文字列に続く文字列の補完対象を限定します. これは, オプションを指定する場合に有効です. gccコマンドで'-L'のあとディレクトリを補完するようにするには,
complete gcc 'c/-L/d/'
と指定すれば良いです.
n
検索対象で指定した文字列の次の引数の補完対象を限定します. これは, オプションによって, 引数が変化する場合に有効です. gccコマンドで'-c'のあと'.c'で終るファイルを補完するようにするには,
complete gcc 'n/-c/f:*.c/
と指定すれば良いです.

補完対象