In the following, C-
stands for "the Control
key combined with
another" and the same for M-
with the Meta
key; generally
C-
combinations act on characters, while the M-
ones operate on
words. The Meta
key might be called Alt
on some keyboards, will
display a black diamond on most others, and can safely be replaced by
Esc
in any case.
Typing any ordinary key inserts text where the cursor stands, the arrow keys
enabling you to move in the line. There are many more movement commands,
which will be familiar to the Emacs user, for instance C-a
/C-e
will take you to the start/end of the line, M-b
/M-f
move the
cursor backward/forward by a word, etc. Just press the <Return>
key at
any point to send your command to gp
.
All the commands you type at the gp
prompt are stored in a history,
a multiline command being saved as a single concatenated line. The Up and Down
arrows (or C-p
/C-n
) will move you through the history,
M- <
/M- >
sending you to the start/end of the history.
C-r
/C-s
will start an incremental backward/forward search. You
can kill text (C-k
kills till the end of line, M-d
to the end of
current word) which you can then yank back using the C-y
key (M-y
will rotate the kill-ring). C-_
will undo your last changes
incrementally (M-r
undoes all changes made to the current line).
C-t
and M-t
will transpose the character (word) preceding the
cursor and the one under the cursor.
Keeping the M-
key down while you enter an integer (a minus sign
meaning reverse behavior) gives an argument to your next readline command
(for instance M-- C-k
will kill text back to the start of line). If you
prefer Vi-style editing, M-C-j
will toggle you to Vi mode.
Of course you can change all these default bindings. For that you need to
create a file named .inputrc
in your home directory. For instance
(notice the embedding conditional in case you would want specific bindings
for gp
):
$if Pari-GP set show-all-if-ambiguous "\C-h": backward-delete-char "\e\C-h": backward-kill-word "\C-xd": dump-functions (: "\C-v()\C-b" # can be annoying when copy-pasting! [: "\C-v[]\C-b" $endif
C-x C-r
will re-read this init file, incorporating any
changes made to it during the current session.
Note. By default, (
and [
are bound to the function
pari-matched-insert
which, if "electric parentheses" are enabled
(default: off) will automatically insert the matching closure (respectively
)
and ]
). This behavior can be toggled on and off by giving
the numeric argument -2 to (
(M–2(
), which is useful if you
want, e.g to copy-paste some text into the calculator. If you do not want a
toggle, you can use M–0
/ M–1
to specifically switch it on or
off).
Note. In some versions of readline (2.1 for instance), the
Alt
or Meta
key can give funny results (output 8-bit accented
characters for instance). If you do not want to fall back to the Esc
combination, put the following two lines in your .inputrc
:
set convert-meta on set output-meta off
Command completion and online help. Hitting
<TAB>
will complete words for you. This mechanism is context-dependent:
gp
will strive to only give you meaningful completions in a given
context (it will fail sometimes, but only under rare and restricted
conditions).
For instance, shortly after a ~
, we expect a user name, then a
path to some file. Directly after default(
has been typed, we would
expect one of the default
keywords. After a '.', we expect a member
keyword. And generally of course, we expect any GP symbol which may be found
in the hashing lists: functions (both yours and GP's), and variables.
If, at any time, only one completion is meaningful, gp
will provide it
together with
* an ending comma if we are completing a default,
* a pair of parentheses if we are completing a function name. In
that case hitting <TAB>
again will provide the argument list as given
by the online help. (Recall that you can always undo the effect
of the preceding keys by hitting C-_
; this applies here.)
Otherwise, hitting <TAB>
once more will give you the list of possible
completions. Just experiment with this mechanism as often as possible,
you will probably find it very convenient. For instance, you can obtain
default(seriesprecision,10)
, just by hitting def <TAB> se <TAB> 10
,
which saves 18 keystrokes (out of 27).
Hitting M-h
will give you the usual short online help concerning the
word directly beneath the cursor, M-H
will yield the extended help
corresponding to the help
default program (usually opens a dvi
previewer, or runs a primitive tex-to-ASCII program). None of these disturb
the line you were editing.