[Date Prev] [Date Index] [Date Next]
[Thread Prev] [Thread Index] [Thread Next]

[xyzzy:02564] Numeric Arguments



はじめまして。梅山です。

Numeric Arguments の動作についてです。

    ESC <数字> <コマンド>

の順番で入力すると、<コマンド>を<数字>回繰り返してくれますが、'-' を 
10個入力しようと思って

    ESC 1 0 -

と入力しても、'-' をコマンドだと思ってくれず、-10という数字として認識
されるようです。Emacs だと'-' が10個入力できます。

また、Emacsでは

    C-u 1 0 C-u 1

と入力すると、'1' が10個入力できますが、xyzzy ではそうなりません。

できれば Emacs と同じような動きにしていただけるとうれしいです。
あるいは、こうすれば同じ効果が得られるというのがあれば、それを教えてい
ただけないでしょうか?
特に、複数の '-' の入力はこんな(↓)風に個人的に良く使うので。

----------------------------------------------------------------------

以下、Emacs の info からの抜粋です。

Numeric Arguments
=================

   Any Emacs command can be given a "numeric argument" (also called a
"prefix argument").  Some commands interpret the argument as a
repetition count.  For example, `C-f' with an argument of ten moves
forward ten characters instead of one.  With these commands, no argument
is equivalent to an argument of one.  Negative arguments tell most such
commands to move or act in the opposite direction.

   If your terminal keyboard has a META key, the easiest way to specify
a numeric argument is to type digits and/or a minus sign while holding
down the the META key.  For example,
     M-5 C-n

would move down five lines.  The characters `Meta-1', `Meta-2', and so
on, as well as `Meta--', do this because they are keys bound to
commands (`digit-argument' and `negative-argument') that are defined to
contribute to an argument for the next command.

   Another way of specifying an argument is to use the `C-u'
(`universal-argument') command followed by the digits of the argument.
With `C-u', you can type the argument digits without holding down
modifier keys; `C-u' works on all terminals.  To type a negative
argument, type a minus sign after `C-u'.  Just a minus sign without
digits normally means -1.

   `C-u' followed by a character which is neither a digit nor a minus
sign has the special meaning of "multiply by four".  It multiplies the
argument for the next command by four.  `C-u' twice multiplies it by
sixteen.  Thus, `C-u C-u C-f' moves forward sixteen characters.  This
is a good way to move forward "fast", since it moves about 1/5 of a line
in the usual size screen.  Other useful combinations are `C-u C-n',
`C-u C-u C-n' (move down a good fraction of a screen), `C-u C-u C-o'
(make "a lot" of blank lines), and `C-u C-k' (kill four lines).

   Some commands care only about whether there is an argument, and not
about its value.  For example, the command `M-q' (`fill-paragraph') with
no argument fills text; with an argument, it justifies the text as well.
(*Note Filling::, for more information on `M-q'.)  Plain `C-u' is a
handy way of providing an argument for such commands.

   Some commands use the value of the argument as a repeat count, but do
something peculiar when there is no argument.  For example, the command
`C-k' (`kill-line') with argument N kills N lines, including their
terminating newlines.  But `C-k' with no argument is special: it kills
the text up to the next newline, or, if point is right at the end of
the line, it kills the newline itself.  Thus, two `C-k' commands with
no arguments can kill a nonblank line, just like `C-k' with an argument
of one.  (*Note Killing::, for more information on `C-k'.)

   A few commands treat a plain `C-u' differently from an ordinary
argument.  A few others may treat an argument of just a minus sign
differently from an argument of -1.  These unusual cases are described
when they come up; they are always for reasons of convenience of use of
the individual command.

   You can use a numeric argument to insert multiple copies of a
character.  This is straightforward unless the character is a digit; for
example, `C-u 6 4 a' inserts 64 copies of the character `a'.  But this
does not work for inserting digits; `C-u 6 4 1' specifies an argument
of 641, rather than inserting anything.  To separate the digit to
insert from the argument, type another `C-u'; for example, `C-u 6 4 C-u
1' does insert 64 copies of the character `1'.

   We use the term "prefix argument" as well as "numeric argument" to
emphasize that you type the argument before the command, and to
distinguish these arguments from minibuffer arguments that come after
the command.

--
梅山英昭 (umeyama@xxxxxxxxxxxxxxxxxx)

Index Home