次: , 前: Position Info, 上: Basic


3.10 数引数

数学や計算機の用語では、引数(argument)という単語は 『関数や操作に与えるデータ』を意味します。 Emacsのすべてのコマンドには、数引数(numeric argument) (前置引数(prefix argument)とも呼ぶ)を指定できます。 コマンドによっては、引数を反復回数として解釈します。 たとえば、引数10をC-fに指定すると、 カーソルを通常の1文字ではなく、10文字分前向きに移動します。 これらのコマンドでは、引数を指定しないと引数1を指定したのと同等になります。 この種のコマンドの多くでは、負の引数を指定すると、 逆向きの移動や逆の操作を指示することになります。

端末のキーボードに<META>キーがある場合、 数引数を入力するもっとも簡単な方法は、 <META>キーを押し下げたままで、数字やマイナス記号を打ちます。 たとえば、

     M-5 C-n

は、カーソルを5行下に移動します。 Meta-1Meta-2Meta--などの文字がこのように動作するのは、 これらのキーが、後続のコマンドに引数を与えるように定義されたコマンド (digit-argumentnegative-argument)に バインドされているからです。 コントロールやコントロールとメタで修飾した数字と-も、 同様に数引数を指定します。

引数を指定する別の方法は、 C-uuniversal-argument)コマンドに続けて 引数の数字を入力することです。 C-uでは、修飾キーを押し下げ続けることなく引数の数字を打てます。 C-uはすべての端末で使えます。 負の引数を指定するには、C-uのあとにまずマイナス記号を打ちます。 マイナス記号だけだと−1を意味します。

C-uのあとに数字でもマイナス記号でもない文字を打つと、 『4倍する』という特別な意味になります。 つまり、後続のコマンドに渡す引数を4倍します。 C-uを2回打つと、引数を16倍します。 したがって、C-u C-u C-fは、カーソルを前向きに16文字分移動します。 16文字は通常の画面で約1/5行に相当するので、 カーソルを『速く』移動させたい場合に便利な方法です。 便利な他の組み合せは、 C-u C-nC-u C-u C-n(画面の下方への移動に便利)、 C-u C-u C-o(『数多く』の空行を作る)、 C-u C-k(4行キルする)です。

コマンドによっては、引数の値ではなく、引数の有無だけを問題にします。 たとえば、コマンドM-qfill-paragraph)に引数を指定しないと テキストの詰め込みのみを行います。 引数を指定すると、さらに幅揃えも行います。 (M-qに関する詳細は、see Filling。) C-uだけを使えば、このようなコマンドに簡単に引数を指定できます。

引数の値を反復回数として使うにも関わらず、 引数がないと特別な動作をするコマンドもあります。 たとえば、C-kkill-line)に引数nを指定すると、 行区切りの改行も含めてn行をキルします。 これに対し、引数を指定しない場合は特別な動作となります。 つまり、つぎの改行文字までのテキストをキルするか、 行末にポイントがある場合は改行そのものをキルします。 したがって、引数を指定せずにC-kを2回実行すると、 引数1を指定したC-kと同様に、空行でない1行をキルします。 (C-kの詳細については、see Killing。)

いくつかのコマンドは、C-uだけの引数を通常の引数とは 異なるものとして扱います。 また、マイナス記号のみの引数を−1と区別するコマンドもあります。 これらの例外については、必要になったときに説明します。 これらの例外は、それぞれのコマンドを使いやすくするためにあります。

数引数を使って、文字のコピーを複数個挿入することもできます。 この操作は、数字以外の文字ならば簡単です。 たとえば、C-u 6 4 aで、文字`a'を64個挿入できます。 しかし、数字では機能しません。 C-u 6 4 1は、引数が641であることを意味し、何も挿入しません。 引数と挿入したい数字を区切るには、もう1つC-uを打ちます。 たとえば、C-u 6 4 C-u 1で、数字`1'を64個挿入できます。

コマンドのまえに引数を打つということを強調するために、また、 コマンドのあとのミニバッファ引数と区別するために、 『数引数』と同様に用語『前置引数』を使います。