##// END OF EJS Templates
Update interactive usage message (used by %quickref and others).
Fernando Perez -
Show More
@@ -1,535 +1,540 b''
1 1 # -*- coding: utf-8 -*-
2 2 """Usage information for the main IPython applications.
3 3 """
4 4 #-----------------------------------------------------------------------------
5 5 # Copyright (C) 2008-2011 The IPython Development Team
6 6 # Copyright (C) 2001-2007 Fernando Perez. <fperez@colorado.edu>
7 7 #
8 8 # Distributed under the terms of the BSD License. The full license is in
9 9 # the file COPYING, distributed as part of this software.
10 10 #-----------------------------------------------------------------------------
11 11
12 12 import sys
13 13 from IPython.core import release
14 14
15 15 cl_usage = """\
16 16 =========
17 17 IPython
18 18 =========
19 19
20 20 Tools for Interactive Computing in Python
21 21 =========================================
22 22
23 23 A Python shell with automatic history (input and output), dynamic object
24 24 introspection, easier configuration, command completion, access to the
25 25 system shell and more. IPython can also be embedded in running programs.
26 26
27 27
28 28 Usage
29 29
30 30 ipython [subcommand] [options] [files]
31 31
32 32 If invoked with no options, it executes all the files listed in sequence
33 33 and exits, use -i to enter interactive mode after running the files. Files
34 34 ending in .py will be treated as normal Python, but files ending in .ipy
35 35 can contain special IPython syntax (magic commands, shell expansions, etc.)
36 36
37 37 Almost all configuration in IPython is available via the command-line. Do
38 38 `ipython --help-all` to see all available options. For persistent
39 39 configuration, look into your `ipython_config.py` configuration file for
40 40 details.
41 41
42 42 This file is typically installed in the `IPYTHONDIR` directory, and there
43 43 is a separate configuration directory for each profile. The default profile
44 44 directory will be located in $IPYTHONDIR/profile_default. For Linux users,
45 45 IPYTHONDIR defaults to `$HOME/.config/ipython`, and for other Unix systems
46 46 to `$HOME/.ipython`. For Windows users, $HOME resolves to C:\\Documents
47 47 and Settings\\YourUserName in most instances.
48 48
49 49 To initialize a profile with the default configuration file, do::
50 50
51 51 $> ipython profile create
52 52
53 53 and start editing `IPYTHONDIR/profile_default/ipython_config.py`
54 54
55 55 In IPython's documentation, we will refer to this directory as
56 56 `IPYTHONDIR`, you can change its default location by creating an
57 57 environment variable with this name and setting it to the desired path.
58 58
59 59 For more information, see the manual available in HTML and PDF in your
60 60 installation, or online at http://ipython.org/documentation.html.
61 61 """
62 62
63 63 interactive_usage = """
64 64 IPython -- An enhanced Interactive Python
65 65 =========================================
66 66
67 67 IPython offers a combination of convenient shell features, special commands
68 68 and a history mechanism for both input (command history) and output (results
69 69 caching, similar to Mathematica). It is intended to be a fully compatible
70 70 replacement for the standard Python interpreter, while offering vastly
71 71 improved functionality and flexibility.
72 72
73 73 At your system command line, type 'ipython -h' to see the command line
74 74 options available. This document only describes interactive features.
75 75
76 76 MAIN FEATURES
77 77
78 78 * Access to the standard Python help. As of Python 2.1, a help system is
79 79 available with access to object docstrings and the Python manuals. Simply
80 80 type 'help' (no quotes) to access it.
81 81
82 82 * Magic commands: type %magic for information on the magic subsystem.
83 83
84 84 * System command aliases, via the %alias command or the configuration file(s).
85 85
86 86 * Dynamic object information:
87 87
88 88 Typing ?word or word? prints detailed information about an object. If
89 89 certain strings in the object are too long (docstrings, code, etc.) they get
90 90 snipped in the center for brevity.
91 91
92 92 Typing ??word or word?? gives access to the full information without
93 93 snipping long strings. Long strings are sent to the screen through the less
94 94 pager if longer than the screen, printed otherwise.
95 95
96 96 The ?/?? system gives access to the full source code for any object (if
97 97 available), shows function prototypes and other useful information.
98 98
99 99 If you just want to see an object's docstring, type '%pdoc object' (without
100 100 quotes, and without % if you have automagic on).
101 101
102 102 Both %pdoc and ?/?? give you access to documentation even on things which are
103 103 not explicitely defined. Try for example typing {}.get? or after import os,
104 104 type os.path.abspath??. The magic functions %pdef, %source and %file operate
105 105 similarly.
106 106
107 107 * Completion in the local namespace, by typing TAB at the prompt.
108 108
109 109 At any time, hitting tab will complete any available python commands or
110 110 variable names, and show you a list of the possible completions if there's
111 111 no unambiguous one. It will also complete filenames in the current directory.
112 112
113 113 This feature requires the readline and rlcomplete modules, so it won't work
114 114 if your Python lacks readline support (such as under Windows).
115 115
116 116 * Search previous command history in two ways (also requires readline):
117 117
118 118 - Start typing, and then use Ctrl-p (previous,up) and Ctrl-n (next,down) to
119 119 search through only the history items that match what you've typed so
120 120 far. If you use Ctrl-p/Ctrl-n at a blank prompt, they just behave like
121 121 normal arrow keys.
122 122
123 123 - Hit Ctrl-r: opens a search prompt. Begin typing and the system searches
124 124 your history for lines that match what you've typed so far, completing as
125 125 much as it can.
126 126
127 127 - %hist: search history by index (this does *not* require readline).
128 128
129 129 * Persistent command history across sessions.
130 130
131 131 * Logging of input with the ability to save and restore a working session.
132 132
133 133 * System escape with !. Typing !ls will run 'ls' in the current directory.
134 134
135 135 * The reload command does a 'deep' reload of a module: changes made to the
136 136 module since you imported will actually be available without having to exit.
137 137
138 138 * Verbose and colored exception traceback printouts. See the magic xmode and
139 139 xcolor functions for details (just type %magic).
140 140
141 141 * Input caching system:
142 142
143 143 IPython offers numbered prompts (In/Out) with input and output caching. All
144 144 input is saved and can be retrieved as variables (besides the usual arrow
145 145 key recall).
146 146
147 147 The following GLOBAL variables always exist (so don't overwrite them!):
148 148 _i: stores previous input.
149 149 _ii: next previous.
150 150 _iii: next-next previous.
151 151 _ih : a list of all input _ih[n] is the input from line n.
152 152
153 153 Additionally, global variables named _i<n> are dynamically created (<n>
154 154 being the prompt counter), such that _i<n> == _ih[<n>]
155 155
156 156 For example, what you typed at prompt 14 is available as _i14 and _ih[14].
157 157
158 158 You can create macros which contain multiple input lines from this history,
159 159 for later re-execution, with the %macro function.
160 160
161 161 The history function %hist allows you to see any part of your input history
162 162 by printing a range of the _i variables. Note that inputs which contain
163 163 magic functions (%) appear in the history with a prepended comment. This is
164 164 because they aren't really valid Python code, so you can't exec them.
165 165
166 166 * Output caching system:
167 167
168 168 For output that is returned from actions, a system similar to the input
169 169 cache exists but using _ instead of _i. Only actions that produce a result
170 170 (NOT assignments, for example) are cached. If you are familiar with
171 171 Mathematica, IPython's _ variables behave exactly like Mathematica's %
172 172 variables.
173 173
174 174 The following GLOBAL variables always exist (so don't overwrite them!):
175 175 _ (one underscore): previous output.
176 176 __ (two underscores): next previous.
177 177 ___ (three underscores): next-next previous.
178 178
179 179 Global variables named _<n> are dynamically created (<n> being the prompt
180 180 counter), such that the result of output <n> is always available as _<n>.
181 181
182 182 Finally, a global dictionary named _oh exists with entries for all lines
183 183 which generated output.
184 184
185 185 * Directory history:
186 186
187 187 Your history of visited directories is kept in the global list _dh, and the
188 188 magic %cd command can be used to go to any entry in that list.
189 189
190 190 * Auto-parentheses and auto-quotes (adapted from Nathan Gray's LazyPython)
191 191
192 192 1. Auto-parentheses
193 193 Callable objects (i.e. functions, methods, etc) can be invoked like
194 194 this (notice the commas between the arguments):
195 195 In [1]: callable_ob arg1, arg2, arg3
196 196 and the input will be translated to this:
197 197 ------> callable_ob(arg1, arg2, arg3)
198 198 This feature is off by default (in rare cases it can produce
199 199 undesirable side-effects), but you can activate it at the command-line
200 200 by starting IPython with `--autocall 1`, set it permanently in your
201 201 configuration file, or turn on at runtime with `%autocall 1`.
202 202
203 203 You can force auto-parentheses by using '/' as the first character
204 204 of a line. For example:
205 205 In [1]: /globals # becomes 'globals()'
206 206 Note that the '/' MUST be the first character on the line! This
207 207 won't work:
208 208 In [2]: print /globals # syntax error
209 209
210 210 In most cases the automatic algorithm should work, so you should
211 211 rarely need to explicitly invoke /. One notable exception is if you
212 212 are trying to call a function with a list of tuples as arguments (the
213 213 parenthesis will confuse IPython):
214 214 In [1]: zip (1,2,3),(4,5,6) # won't work
215 215 but this will work:
216 216 In [2]: /zip (1,2,3),(4,5,6)
217 217 ------> zip ((1,2,3),(4,5,6))
218 218 Out[2]= [(1, 4), (2, 5), (3, 6)]
219 219
220 220 IPython tells you that it has altered your command line by
221 221 displaying the new command line preceded by -->. e.g.:
222 222 In [18]: callable list
223 223 -------> callable (list)
224 224
225 225 2. Auto-Quoting
226 226 You can force auto-quoting of a function's arguments by using ',' as
227 227 the first character of a line. For example:
228 228 In [1]: ,my_function /home/me # becomes my_function("/home/me")
229 229
230 230 If you use ';' instead, the whole argument is quoted as a single
231 231 string (while ',' splits on whitespace):
232 232 In [2]: ,my_function a b c # becomes my_function("a","b","c")
233 233 In [3]: ;my_function a b c # becomes my_function("a b c")
234 234
235 235 Note that the ',' MUST be the first character on the line! This
236 236 won't work:
237 237 In [4]: x = ,my_function /home/me # syntax error
238 238 """
239 239
240 240 interactive_usage_min = """\
241 241 An enhanced console for Python.
242 242 Some of its features are:
243 243 - Readline support if the readline library is present.
244 244 - Tab completion in the local namespace.
245 245 - Logging of input, see command-line options.
246 246 - System shell escape via ! , eg !ls.
247 247 - Magic commands, starting with a % (like %ls, %pwd, %cd, etc.)
248 248 - Keeps track of locally defined variables via %who, %whos.
249 249 - Show object information with a ? eg ?x or x? (use ?? for more info).
250 250 """
251 251
252 252 quick_reference = r"""
253 253 IPython -- An enhanced Interactive Python - Quick Reference Card
254 254 ================================================================
255 255
256 256 obj?, obj?? : Get help, or more help for object (also works as
257 257 ?obj, ??obj).
258 258 ?foo.*abc* : List names in 'foo' containing 'abc' in them.
259 259 %magic : Information about IPython's 'magic' % functions.
260 260
261 Magic functions are prefixed by %, and typically take their arguments without
262 parentheses, quotes or even commas for convenience.
261 Magic functions are prefixed by % or %%, and typically take their arguments
262 without parentheses, quotes or even commas for convenience. Line magics take a
263 single % and cell magics are prefixed with two %%.
263 264
264 265 Example magic function calls:
265 266
266 267 %alias d ls -F : 'd' is now an alias for 'ls -F'
267 268 alias d ls -F : Works if 'alias' not a python name
268 269 alist = %alias : Get list of aliases to 'alist'
269 270 cd /usr/share : Obvious. cd -<tab> to choose from visited dirs.
270 271 %cd?? : See help AND source for magic %cd
272 %timeit x=10 : time the 'x=10' statement with high precision.
273 %%timeit x=2**100
274 x**100 : time 'x*100' with a setup of 'x=2**100'; setup code is not
275 counted. This is an example of a cell magic.
271 276
272 277 System commands:
273 278
274 279 !cp a.txt b/ : System command escape, calls os.system()
275 280 cp a.txt b/ : after %rehashx, most system commands work without !
276 281 cp ${f}.txt $bar : Variable expansion in magics and system commands
277 282 files = !ls /usr : Capture sytem command output
278 283 files.s, files.l, files.n: "a b c", ['a','b','c'], 'a\nb\nc'
279 284
280 285 History:
281 286
282 287 _i, _ii, _iii : Previous, next previous, next next previous input
283 288 _i4, _ih[2:5] : Input history line 4, lines 2-4
284 289 exec _i81 : Execute input history line #81 again
285 290 %rep 81 : Edit input history line #81
286 291 _, __, ___ : previous, next previous, next next previous output
287 292 _dh : Directory history
288 293 _oh : Output history
289 294 %hist : Command history. '%hist -g foo' search history for 'foo'
290 295
291 296 Autocall:
292 297
293 298 f 1,2 : f(1,2) # Off by default, enable with %autocall magic.
294 299 /f 1,2 : f(1,2) (forced autoparen)
295 300 ,f 1 2 : f("1","2")
296 301 ;f 1 2 : f("1 2")
297 302
298 303 Remember: TAB completion works in many contexts, not just file names
299 304 or python names.
300 305
301 306 The following magic functions are currently available:
302 307
303 308 """
304 309
305 310 gui_reference = """\
306 311 ===============================
307 312 The graphical IPython console
308 313 ===============================
309 314
310 315 This console is designed to emulate the look, feel and workflow of a terminal
311 316 environment, while adding a number of enhancements that are simply not possible
312 317 in a real terminal, such as inline syntax highlighting, true multiline editing,
313 318 inline graphics and much more.
314 319
315 320 This quick reference document contains the basic information you'll need to
316 321 know to make the most efficient use of it. For the various command line
317 322 options available at startup, type ``ipython qtconsole --help`` at the command line.
318 323
319 324
320 325 Multiline editing
321 326 =================
322 327
323 328 The graphical console is capable of true multiline editing, but it also tries
324 329 to behave intuitively like a terminal when possible. If you are used to
325 330 IPython's old terminal behavior, you should find the transition painless, and
326 331 once you learn a few basic keybindings it will be a much more efficient
327 332 environment.
328 333
329 334 For single expressions or indented blocks, the console behaves almost like the
330 335 terminal IPython: single expressions are immediately evaluated, and indented
331 336 blocks are evaluated once a single blank line is entered::
332 337
333 338 In [1]: print "Hello IPython!" # Enter was pressed at the end of the line
334 339 Hello IPython!
335 340
336 341 In [2]: for i in range(10):
337 342 ...: print i,
338 343 ...:
339 344 0 1 2 3 4 5 6 7 8 9
340 345
341 346 If you want to enter more than one expression in a single input block
342 347 (something not possible in the terminal), you can use ``Control-Enter`` at the
343 348 end of your first line instead of ``Enter``. At that point the console goes
344 349 into 'cell mode' and even if your inputs are not indented, it will continue
345 350 accepting arbitrarily many lines until either you enter an extra blank line or
346 351 you hit ``Shift-Enter`` (the key binding that forces execution). When a
347 352 multiline cell is entered, IPython analyzes it and executes its code producing
348 353 an ``Out[n]`` prompt only for the last expression in it, while the rest of the
349 354 cell is executed as if it was a script. An example should clarify this::
350 355
351 356 In [3]: x=1 # Hit C-Enter here
352 357 ...: y=2 # from now on, regular Enter is sufficient
353 358 ...: z=3
354 359 ...: x**2 # This does *not* produce an Out[] value
355 360 ...: x+y+z # Only the last expression does
356 361 ...:
357 362 Out[3]: 6
358 363
359 364 The behavior where an extra blank line forces execution is only active if you
360 365 are actually typing at the keyboard each line, and is meant to make it mimic
361 366 the IPython terminal behavior. If you paste a long chunk of input (for example
362 367 a long script copied form an editor or web browser), it can contain arbitrarily
363 368 many intermediate blank lines and they won't cause any problems. As always,
364 369 you can then make it execute by appending a blank line *at the end* or hitting
365 370 ``Shift-Enter`` anywhere within the cell.
366 371
367 372 With the up arrow key, you can retrieve previous blocks of input that contain
368 373 multiple lines. You can move inside of a multiline cell like you would in any
369 374 text editor. When you want it executed, the simplest thing to do is to hit the
370 375 force execution key, ``Shift-Enter`` (though you can also navigate to the end
371 376 and append a blank line by using ``Enter`` twice).
372 377
373 378 If you've edited a multiline cell and accidentally navigate out of it with the
374 379 up or down arrow keys, IPython will clear the cell and replace it with the
375 380 contents of the one above or below that you navigated to. If this was an
376 381 accident and you want to retrieve the cell you were editing, use the Undo
377 382 keybinding, ``Control-z``.
378 383
379 384
380 385 Key bindings
381 386 ============
382 387
383 388 The IPython console supports most of the basic Emacs line-oriented keybindings,
384 389 in addition to some of its own.
385 390
386 391 The keybinding prefixes mean:
387 392
388 393 - ``C``: Control
389 394 - ``S``: Shift
390 395 - ``M``: Meta (typically the Alt key)
391 396
392 397 The keybindings themselves are:
393 398
394 399 - ``Enter``: insert new line (may cause execution, see above).
395 400 - ``C-Enter``: *force* new line, *never* causes execution.
396 401 - ``S-Enter``: *force* execution regardless of where cursor is, no newline added.
397 402 - ``Up``: step backwards through the history.
398 403 - ``Down``: step forwards through the history.
399 404 - ``S-Up``: search backwards through the history (like ``C-r`` in bash).
400 405 - ``S-Down``: search forwards through the history.
401 406 - ``C-c``: copy highlighted text to clipboard (prompts are automatically stripped).
402 407 - ``C-S-c``: copy highlighted text to clipboard (prompts are not stripped).
403 408 - ``C-v``: paste text from clipboard.
404 409 - ``C-z``: undo (retrieves lost text if you move out of a cell with the arrows).
405 410 - ``C-S-z``: redo.
406 411 - ``C-o``: move to 'other' area, between pager and terminal.
407 412 - ``C-l``: clear terminal.
408 413 - ``C-a``: go to beginning of line.
409 414 - ``C-e``: go to end of line.
410 415 - ``C-u``: kill from cursor to the begining of the line.
411 416 - ``C-k``: kill from cursor to the end of the line.
412 417 - ``C-y``: yank (paste)
413 418 - ``C-p``: previous line (like up arrow)
414 419 - ``C-n``: next line (like down arrow)
415 420 - ``C-f``: forward (like right arrow)
416 421 - ``C-b``: back (like left arrow)
417 422 - ``C-d``: delete next character, or exits if input is empty
418 423 - ``M-<``: move to the beginning of the input region.
419 424 - ``M->``: move to the end of the input region.
420 425 - ``M-d``: delete next word.
421 426 - ``M-Backspace``: delete previous word.
422 427 - ``C-.``: force a kernel restart (a confirmation dialog appears).
423 428 - ``C-+``: increase font size.
424 429 - ``C--``: decrease font size.
425 430 - ``C-M-Space``: toggle full screen. (Command-Control-Space on Mac OS X)
426 431
427 432 The IPython pager
428 433 =================
429 434
430 435 IPython will show long blocks of text from many sources using a builtin pager.
431 436 You can control where this pager appears with the ``--paging`` command-line
432 437 flag:
433 438
434 439 - ``inside`` [default]: the pager is overlaid on top of the main terminal. You
435 440 must quit the pager to get back to the terminal (similar to how a pager such
436 441 as ``less`` or ``more`` works).
437 442
438 443 - ``vsplit``: the console is made double-tall, and the pager appears on the
439 444 bottom area when needed. You can view its contents while using the terminal.
440 445
441 446 - ``hsplit``: the console is made double-wide, and the pager appears on the
442 447 right area when needed. You can view its contents while using the terminal.
443 448
444 449 - ``none``: the console never pages output.
445 450
446 451 If you use the vertical or horizontal paging modes, you can navigate between
447 452 terminal and pager as follows:
448 453
449 454 - Tab key: goes from pager to terminal (but not the other way around).
450 455 - Control-o: goes from one to another always.
451 456 - Mouse: click on either.
452 457
453 458 In all cases, the ``q`` or ``Escape`` keys quit the pager (when used with the
454 459 focus on the pager area).
455 460
456 461 Running subprocesses
457 462 ====================
458 463
459 464 The graphical IPython console uses the ``pexpect`` module to run subprocesses
460 465 when you type ``!command``. This has a number of advantages (true asynchronous
461 466 output from subprocesses as well as very robust termination of rogue
462 467 subprocesses with ``Control-C``), as well as some limitations. The main
463 468 limitation is that you can *not* interact back with the subprocess, so anything
464 469 that invokes a pager or expects you to type input into it will block and hang
465 470 (you can kill it with ``Control-C``).
466 471
467 472 We have provided as magics ``%less`` to page files (aliased to ``%more``),
468 473 ``%clear`` to clear the terminal, and ``%man`` on Linux/OSX. These cover the
469 474 most common commands you'd want to call in your subshell and that would cause
470 475 problems if invoked via ``!cmd``, but you need to be aware of this limitation.
471 476
472 477 Display
473 478 =======
474 479
475 480 The IPython console can now display objects in a variety of formats, including
476 481 HTML, PNG and SVG. This is accomplished using the display functions in
477 482 ``IPython.core.display``::
478 483
479 484 In [4]: from IPython.core.display import display, display_html
480 485
481 486 In [5]: from IPython.core.display import display_png, display_svg
482 487
483 488 Python objects can simply be passed to these functions and the appropriate
484 489 representations will be displayed in the console as long as the objects know
485 490 how to compute those representations. The easiest way of teaching objects how
486 491 to format themselves in various representations is to define special methods
487 492 such as: ``_repr_html_``, ``_repr_svg_`` and ``_repr_png_``. IPython's display formatters
488 493 can also be given custom formatter functions for various types::
489 494
490 495 In [6]: ip = get_ipython()
491 496
492 497 In [7]: html_formatter = ip.display_formatter.formatters['text/html']
493 498
494 499 In [8]: html_formatter.for_type(Foo, foo_to_html)
495 500
496 501 For further details, see ``IPython.core.formatters``.
497 502
498 503 Inline matplotlib graphics
499 504 ==========================
500 505
501 506 The IPython console is capable of displaying matplotlib figures inline, in SVG
502 507 or PNG format. If started with the ``pylab=inline``, then all figures are
503 508 rendered inline automatically (PNG by default). If started with ``--pylab``
504 509 or ``pylab=<your backend>``, then a GUI backend will be used, but IPython's
505 510 ``display()`` and ``getfigs()`` functions can be used to view plots inline::
506 511
507 512 In [9]: display(*getfigs()) # display all figures inline
508 513
509 514 In[10]: display(*getfigs(1,2)) # display figures 1 and 2 inline
510 515 """
511 516
512 517
513 518 quick_guide = """\
514 519 ? -> Introduction and overview of IPython's features.
515 520 %quickref -> Quick reference.
516 521 help -> Python's own help system.
517 522 object? -> Details about 'object', use 'object??' for extra details.
518 523 """
519 524
520 525 gui_note = """\
521 526 %guiref -> A brief reference about the graphical user interface.
522 527 """
523 528
524 529 default_banner_parts = [
525 530 'Python %s\n' % (sys.version.split('\n')[0],),
526 531 'Type "copyright", "credits" or "license" for more information.\n\n',
527 532 'IPython %s -- An enhanced Interactive Python.\n' % (release.version,),
528 533 quick_guide
529 534 ]
530 535
531 536 default_gui_banner_parts = default_banner_parts + [gui_note]
532 537
533 538 default_banner = ''.join(default_banner_parts)
534 539
535 540 default_gui_banner = ''.join(default_gui_banner_parts)
General Comments 0
You need to be logged in to leave comments. Login now