<?xml version="1.0" encoding="UTF-8"?>
<appendix id="shortcuts">
    <title>Keyboard Shortcuts</title>

    <!-- jEdit buffer-local properties: -->

    <!-- :tabSize=1:indentSize=1:noTabs=true: -->

    <!-- :xml.root=users-guide.xml: -->

    <para>This appendix documents the default set of keyboard shortcuts. They
    can be customized to suit your taste in the <guibutton>Shortcuts</guibutton>
    pane of the <guimenu>Utilities</guimenu>&gt;<guimenuitem>Global
    Options</guimenuitem> dialog box; see <xref linkend="global-opts" />.</para>

    <bridgehead renderas="sect1">Files</bridgehead>

    <para>For details, see <xref linkend="buffers" />, <xref linkend="views" />
    and <xref linkend="files" />.</para>

    <informaltable frame="none">
        <tgroup cols="2">
            <colspec colnum="1" colwidth="2.2in" />

            <tbody>
                <row>
                    <entry><keycap>C+n</keycap></entry>

                    <entry>New file.</entry>
                </row>

                <row>
                    <entry><keycap>C+o</keycap></entry>

                    <entry>Open file.</entry>
                </row>

                <row>
                    <entry><keycap>C+w</keycap></entry>

                    <entry>Close buffer.</entry>
                </row>

                <row>
                    <entry><keycap>C+e C+w</keycap></entry>

                    <entry>Close all buffers.</entry>
                </row>

                <row>
                    <entry><keycap>C+s</keycap></entry>

                    <entry>Save buffer.</entry>
                </row>

                <row>
                    <entry><keycap>C+e C+s</keycap></entry>

                    <entry>Save all buffers.</entry>
                </row>

                <row>
                    <entry><keycap>C+p</keycap></entry>

                    <entry>Print buffer.</entry>
                </row>

                <row>
                    <entry><keycap>C+PAGE_UP</keycap></entry>

                    <entry>Go to previous buffer.</entry>
                </row>

                <row>
                    <entry><keycap>C+PAGE_DOWN</keycap></entry>

                    <entry>Go to next buffer.</entry>
                </row>

                <row>
                    <entry><keycap>C+`</keycap></entry>

                    <entry>Go to recent buffer.</entry>
                </row>

                <row>
                    <entry><keycap>A+`</keycap></entry>

                    <entry>Show buffer switcher.</entry>
                </row>

                <row>
                    <entry><keycap>C+q</keycap></entry>

                    <entry>Exit jEdit.</entry>
                </row>
            </tbody>
        </tgroup>
    </informaltable>

    <bridgehead renderas="sect1">Views</bridgehead>

    <para>For details, see <xref linkend="views" />.</para>

    <informaltable frame="none">
        <tgroup cols="2">
            <colspec colnum="1" colwidth="2.2in" />

            <tbody>
                <row>
                    <entry><keycap>C+e C+t</keycap></entry>

                    <entry>Turn gutter (line numbering) on and off.</entry>
                </row>

                <row>
                    <entry><keycap>C+0</keycap></entry>

                    <entry>Remove split containing current text area
                    only.</entry>
                </row>

                <row>
                    <entry><keycap>C+1</keycap></entry>

                    <entry>Remove all splits.</entry>
                </row>

                <row>
                    <entry><keycap>C+2</keycap></entry>

                    <entry>Split view horizontally.</entry>
                </row>

                <row>
                    <entry><keycap>C+3</keycap></entry>

                    <entry>Split view vertically.</entry>
                </row>

                <row>
                    <entry><keycap>A+PAGE_UP</keycap></entry>

                    <entry>Send keyboard focus to previous text area.</entry>
                </row>

                <row>
                    <entry><keycap>A+PAGE_DOWN</keycap></entry>

                    <entry>Send keyboard focus to next text area.</entry>
                </row>

                <row>
                    <entry><keycap>C+e UP</keycap>; <keycap>LEFT</keycap>;
                    <keycap>DOWN</keycap>; <keycap>RIGHT</keycap></entry>

                    <entry>Send keyboard focus to top; bottom; left; right
                    docking area.</entry>
                </row>

                <row>
                    <entry><keycap>C+e C+`</keycap></entry>

                    <entry>Close currently focused docking area.</entry>
                </row>
            </tbody>
        </tgroup>
    </informaltable>

    <bridgehead renderas="sect1">Action Bar</bridgehead>

    <para>For details, see <xref linkend="action-bar" />.</para>

    <informaltable frame="none">
        <tgroup cols="2">
            <colspec colnum="1" colwidth="2.2in" />

            <tbody>
                <row>
                    <entry><keycap>C+ENTER</keycap></entry>

                    <entry>Display the action bar and give it keyboard
                    focus.</entry>
                </row>

                <row>
                    <entry><keycap>C+SPACE</keycap></entry>

                    <entry>Repeat last editor action.</entry>
                </row>
            </tbody>
        </tgroup>
    </informaltable>

    <bridgehead renderas="sect1">Moving the Caret</bridgehead>

    <para>For details, see <xref linkend="caret" />, <xref linkend="words" />,
    <xref linkend="lines" />, <xref linkend="paragraphs" /> and <xref
    linkend="bracket-matching" />.</para>

    <informaltable frame="none">
        <tgroup cols="2">
            <colspec colnum="1" colwidth="2.2in" />

            <tbody>
                <row>
                    <entry><keycap><replaceable>Arrow</replaceable></keycap></entry>

                    <entry>Move caret one character or line.</entry>
                </row>

                <row>
                    <entry><keycap>C+<replaceable>Arrow</replaceable></keycap></entry>

                    <entry>Move caret one word or paragraph.</entry>
                </row>

                <row>
                    <entry><keycap>PAGE_UP</keycap>;
                    <keycap>PAGE_DOWN</keycap></entry>

                    <entry>Move caret one screenful.</entry>
                </row>

                <row>
                    <entry><keycap>HOME</keycap></entry>

                    <entry>First non-whitespace character of line, beginning of
                    line, first visible line (repeated presses).</entry>
                </row>

                <row>
                    <entry><keycap>END</keycap></entry>

                    <entry>Last non-whitespace character of line, end of line,
                    last visible line (repeated presses).</entry>
                </row>

                <row>
                    <entry><keycap>C+HOME</keycap></entry>

                    <entry>Beginning of buffer.</entry>
                </row>

                <row>
                    <entry><keycap>C+END</keycap></entry>

                    <entry>End of buffer.</entry>
                </row>

                <row>
                    <entry><keycap>C+]</keycap></entry>

                    <entry>Go to matching bracket.</entry>
                </row>

                <row>
                    <entry><keycap>C+e [</keycap>; <keycap>]</keycap></entry>

                    <entry>Go to previous; next bracket.</entry>
                </row>

                <row>
                    <entry><keycap>C+l</keycap></entry>

                    <entry>Go to line.</entry>
                </row>
            </tbody>
        </tgroup>
    </informaltable>

    <bridgehead renderas="sect1">Selecting Text</bridgehead>

    <para>For details, see <xref linkend="selection" />, <xref
    linkend="words" />, <xref linkend="lines" />, <xref linkend="paragraphs" />
    and <xref linkend="bracket-matching" />.</para>

    <informaltable frame="none">
        <tgroup cols="2">
            <colspec colnum="1" colwidth="2.2in" />

            <tbody>
                <row>
                    <entry><keycap>S+<replaceable>Arrow</replaceable></keycap></entry>

                    <entry>Extend selection by one character or line.</entry>
                </row>

                <row>
                    <entry><keycap>CS+<replaceable>Arrow</replaceable></keycap></entry>

                    <entry>Extend selection by one word or paragraph.</entry>
                </row>

                <row>
                    <entry><keycap>S+PAGE_UP</keycap>;
                    <keycap>S+PAGE_DOWN</keycap></entry>

                    <entry>Extend selection by one screenful.</entry>
                </row>

                <row>
                    <entry><keycap>S+HOME</keycap></entry>

                    <entry>Extend selection to first non-whitespace character of
                    line, beginning of line, first visible line (repeated
                    presses).</entry>
                </row>

                <row>
                    <entry><keycap>S+END</keycap></entry>

                    <entry>Extend selection to last non-whitespace character of
                    line, end of line, last visible line (repeated
                    presses).</entry>
                </row>

                <row>
                    <entry><keycap>CS+HOME</keycap></entry>

                    <entry>Extend selection to beginning of buffer.</entry>
                </row>

                <row>
                    <entry><keycap>CS+END</keycap></entry>

                    <entry>Extend selection to end of buffer.</entry>
                </row>

                <row>
                    <entry><keycap>C+[</keycap></entry>

                    <entry>Select code block.</entry>
                </row>

                <row>
                    <entry><keycap>C+e w</keycap>; <keycap>l</keycap>;
                    <keycap>p</keycap></entry>

                    <entry>Select word; line; paragraph.</entry>
                </row>

                <row>
                    <entry><keycap>C+e C+l</keycap></entry>

                    <entry>Select line range.</entry>
                </row>

                <row>
                    <entry><keycap>C+a</keycap></entry>

                    <entry>Select all.</entry>
                </row>

                <row>
                    <entry><keycap>ESCAPE</keycap></entry>

                    <entry>Select none.</entry>
                </row>

                <row>
                    <entry><keycap>A+\</keycap></entry>

                    <entry>Switch between range and rectangular selection
                    mode.</entry>
                </row>

                <row>
                    <entry><keycap>C+\</keycap></entry>

                    <entry>Switch between single and multiple selection
                    mode.</entry>
                </row>

                <row>
                    <entry><keycap>C+e i</keycap></entry>

                    <entry>Invert selection.</entry>
                </row>
            </tbody>
        </tgroup>
    </informaltable>

    <bridgehead renderas="sect1">Scrolling</bridgehead>

    <para>For details, see <xref linkend="views" />.</para>

    <informaltable frame="none">
        <tgroup cols="2">
            <colspec colnum="1" colwidth="2.2in" />

            <tbody>
                <row>
                    <entry><keycap>C+e C+j</keycap></entry>

                    <entry>Ensure current line is visible, and send focus to the
                    text area.</entry>
                </row>

                <row>
                    <entry><keycap>C+e C+n</keycap></entry>

                    <entry>Center caret on screen.</entry>
                </row>

                <row>
                    <entry><keycap>C+'</keycap>; <keycap>C+/</keycap></entry>

                    <entry>Scroll up; down one line.</entry>
                </row>

                <row>
                    <entry><keycap>A+'</keycap>; <keycap>A+/</keycap></entry>

                    <entry>Scroll up; down one page.</entry>
                </row>
            </tbody>
        </tgroup>
    </informaltable>

    <bridgehead renderas="sect1">Text Editing</bridgehead>

    <para>For details, see <xref linkend="undo-redo" />, <xref
    linkend="entering-text" />, <xref linkend="words" />, <xref
    linkend="lines" /> and <xref linkend="paragraphs" />.</para>

    <informaltable frame="none">
        <tgroup cols="2">
            <colspec colnum="1" colwidth="2.2in" />

            <tbody>
                <row>
                    <entry><keycap>C+z</keycap></entry>

                    <entry>Undo.</entry>
                </row>

                <row>
                    <entry><keycap>C+e C+z</keycap></entry>

                    <entry>Redo.</entry>
                </row>

                <row>
                    <entry><keycap>BACK_SPACE</keycap>;
                    <keycap>DELETE</keycap></entry>

                    <entry>Delete character before; after caret.</entry>
                </row>

                <row>
                    <entry><keycap>C+BACK_SPACE</keycap>;
                    <keycap>C+DELETE</keycap></entry>

                    <entry>Delete word before; after caret.</entry>
                </row>

                <row>
                    <entry><keycap>C+d</keycap>; <keycap>C+e d</keycap></entry>

                    <entry>Delete line; paragraph.</entry>
                </row>

                <row>
                    <entry><keycap>CS+BACK_SPACE</keycap>;
                    <keycap>CS+DELETE</keycap></entry>

                    <entry>Delete from caret to beginning; end of line.</entry>
                </row>

                <row>
                    <entry><keycap>C+e r</keycap></entry>

                    <entry>Remove trailing whitespace from the current line (or
                    all selected lines).</entry>
                </row>

                <row>
                    <entry><keycap>C+j</keycap></entry>

                    <entry>Join lines.</entry>
                </row>

                <row>
                    <entry><keycap>C+b</keycap></entry>

                    <entry>Complete word.</entry>
                </row>

                <row>
                    <entry><keycap>C+e f</keycap></entry>

                    <entry>Format paragraph (or selection).</entry>
                </row>
            </tbody>
        </tgroup>
    </informaltable>

    <bridgehead renderas="sect1">Clipboard and Registers</bridgehead>

    <para>For details, see <xref linkend="text-transfer" />.</para>

    <informaltable frame="none">
        <tgroup cols="2">
            <colspec colnum="1" colwidth="2.2in" />

            <tbody>
                <row>
                    <entry><keycap>C+x</keycap> or
                    <keycap>S+DELETE</keycap></entry>

                    <entry>Cut selected text to clipboard.</entry>
                </row>

                <row>
                    <entry><keycap>C+c</keycap> or
                    <keycap>C+INSERT</keycap></entry>

                    <entry>Copy selected text to clipboard.</entry>
                </row>

                <row>
                    <entry><keycap>C+e C+u</keycap></entry>

                    <entry>Append selected text to clipboard, removing it from
                    the buffer.</entry>
                </row>

                <row>
                    <entry><keycap>C+e C+a</keycap></entry>

                    <entry>Append selected text to clipboard, leaving it in the
                    buffer.</entry>
                </row>

                <row>
                    <entry><keycap>C+v</keycap> or
                    <keycap>S+INSERT</keycap></entry>

                    <entry>Paste clipboard contents.</entry>
                </row>

                <row>
                    <entry><keycap>C+e C+p</keycap></entry>

                    <entry>Vertically paste clipboard contents.</entry>
                </row>

                <row>
                    <entry><keycap>C+r C+x
                    <replaceable>key</replaceable></keycap></entry>

                    <entry>Cut selected text to register
                    <replaceable>key</replaceable>.</entry>
                </row>

                <row>
                    <entry><keycap>C+r C+c
                    <replaceable>key</replaceable></keycap></entry>

                    <entry>Copy selected text to register
                    <replaceable>key</replaceable>.</entry>
                </row>

                <row>
                    <entry><keycap>C+r C+u
                    <replaceable>key</replaceable></keycap></entry>

                    <entry>Append selected text to register
                    <replaceable>key</replaceable>, removing it from the
                    buffer.</entry>
                </row>

                <row>
                    <entry><keycap>C+r C+a
                    <replaceable>key</replaceable></keycap></entry>

                    <entry>Append selected text to register
                    <replaceable>key</replaceable>, leaving it in the
                    buffer.</entry>
                </row>

                <row>
                    <entry><keycap>C+r C+v
                    <replaceable>key</replaceable></keycap></entry>

                    <entry>Paste contents of register
                    <replaceable>key</replaceable>.</entry>
                </row>

                <row>
                    <entry><keycap>C+r C+p
                    <replaceable>key</replaceable></keycap></entry>

                    <entry>Vertically paste contents of register
                    <replaceable>key</replaceable>.</entry>
                </row>

                <row>
                    <entry><keycap>C+e C+v</keycap></entry>

                    <entry>Paste previous.</entry>
                </row>

                <row>
                    <entry><keycap>C+e C+y</keycap></entry>

                    <entry>Paste deleted.</entry>
                </row>
            </tbody>
        </tgroup>
    </informaltable>

    <bridgehead renderas="sect1">Markers</bridgehead>

    <para>For details, see <xref linkend="markers" />.</para>

    <informaltable frame="none">
        <tgroup cols="2">
            <colspec colnum="1" colwidth="2.2in" />

            <tbody>
                <row>
                    <entry><keycap>C+e C+m</keycap></entry>

                    <entry>If current line doesn't contain a marker, one will be
                    added. Otherwise, the existing marker will be removed. Use
                    the <guimenu>Markers</guimenu> menu to return to markers
                    added in this manner.</entry>
                </row>

                <row>
                    <entry><keycap>C+t
                    <replaceable>key</replaceable></keycap></entry>

                    <entry>Add marker with shortcut
                    <replaceable>key</replaceable>.</entry>
                </row>

                <row>
                    <entry><keycap>C+y
                    <replaceable>key</replaceable></keycap></entry>

                    <entry>Go to marker with shortcut
                    <replaceable>key</replaceable>.</entry>
                </row>

                <row>
                    <entry><keycap>C+u
                    <replaceable>key</replaceable></keycap></entry>

                    <entry>Select to marker with shortcut
                    <replaceable>key</replaceable>.</entry>
                </row>

                <row>
                    <entry><keycap>C+k
                    <replaceable>key</replaceable></keycap></entry>

                    <entry>Go to marker with shortcut
                    <replaceable>key</replaceable>, and move the marker to the
                    previous caret position.</entry>
                </row>

                <row>
                    <entry><keycap>C+e C+,</keycap>; <keycap>C+e
                    C+.</keycap></entry>

                    <entry>Move caret to previous; next marker.</entry>
                </row>
            </tbody>
        </tgroup>
    </informaltable>

    <bridgehead renderas="sect1">Search and Replace</bridgehead>

    <para>For details, see <xref linkend="search-replace" />.</para>

    <informaltable frame="none">
        <tgroup cols="2">
            <colspec colnum="1" colwidth="2.2in" />

            <tbody>
                <row>
                    <entry><keycap>C+f</keycap></entry>

                    <entry>Open search and replace dialog box.</entry>
                </row>

                <row>
                    <entry><keycap>C+g</keycap></entry>

                    <entry>Find next.</entry>
                </row>

                <row>
                    <entry><keycap>C+h</keycap></entry>

                    <entry>Find previous.</entry>
                </row>

                <row>
                    <entry><keycap>C+e C+b</keycap></entry>

                    <entry>Search in open buffers.</entry>
                </row>

                <row>
                    <entry><keycap>C+e C+d</keycap></entry>

                    <entry>Search in directory.</entry>
                </row>

                <row>
                    <entry><keycap>C+e C+r</keycap></entry>

                    <entry>Replace in selection.</entry>
                </row>

                <row>
                    <entry><keycap>C+e C+g</keycap></entry>

                    <entry>Replace in selection and find next.</entry>
                </row>

                <row>
                    <entry><keycap>C+,</keycap></entry>

                    <entry>Incremental search bar.</entry>
                </row>

                <row>
                    <entry><keycap>A+,</keycap></entry>

                    <entry>HyperSearch bar.</entry>
                </row>

                <row>
                    <entry><keycap>C+.</keycap></entry>

                    <entry>Incremental search for word under the caret.</entry>
                </row>

                <row>
                    <entry><keycap>A+.</keycap></entry>

                    <entry>HyperSearch for word under the caret.</entry>
                </row>

                <row>
                    <entry><keycap>C+e C+i</keycap></entry>

                    <entry>Toggle ignore case.</entry>
                </row>

                <row>
                    <entry><keycap>C+e C+x</keycap></entry>

                    <entry>Toggle regular expressions.</entry>
                </row>
            </tbody>
        </tgroup>
    </informaltable>

    <bridgehead renderas="sect1">Source Code Editing</bridgehead>

    <para>For details, see <xref linkend="abbrevs" />, <xref linkend="indent" />
    and <xref linkend="commenting" />.</para>

    <informaltable frame="none">
        <tgroup cols="2">
            <colspec colnum="1" colwidth="2.2in" />

            <tbody>
                <row>
                    <entry><keycap>C+;</keycap></entry>

                    <entry>Expand abbreviation.</entry>
                </row>

                <row>
                    <entry><keycap>A+LEFT</keycap>;
                    <keycap>A+RIGHT</keycap></entry>

                    <entry>Shift current line (or all selected lines) left;
                    right.</entry>
                </row>

                <row>
                    <entry><keycap>S+TAB</keycap>; <keycap>TAB</keycap></entry>

                    <entry>Shift selected lines left; right. Note that pressing
                    <keycap>TAB</keycap> with no selection active will insert a
                    tab character at the caret position.</entry>
                </row>

                <row>
                    <entry><keycap>C+i</keycap></entry>

                    <entry>Indent current line (or all selected lines).</entry>
                </row>

                <row>
                    <entry><keycap>C+e C+c</keycap></entry>

                    <entry>Range comment selection.</entry>
                </row>

                <row>
                    <entry><keycap>C+e C+k</keycap></entry>

                    <entry>Line comment selection.</entry>
                </row>
            </tbody>
        </tgroup>
    </informaltable>

    <bridgehead renderas="sect1">Folding and Narrowing</bridgehead>

    <para>For details, see <xref linkend="folding" /> and <xref
    linkend="narrowing" />.</para>

    <informaltable frame="none">
        <tgroup cols="2">
            <colspec colnum="1" colwidth="2.2in" />

            <tbody>
                <row>
                    <entry><keycap>A+BACK_SPACE</keycap></entry>

                    <entry>Collapse fold containing caret.</entry>
                </row>

                <row>
                    <entry><keycap>A+ENTER</keycap></entry>

                    <entry>Expand fold containing caret one level only.</entry>
                </row>

                <row>
                    <entry><keycap>AS+ENTER</keycap></entry>

                    <entry>Expand fold containing caret fully.</entry>
                </row>

                <row>
                    <entry><keycap>C+e x</keycap></entry>

                    <entry>Expand all folds.</entry>
                </row>

                <row>
                    <entry><keycap>C+e a</keycap></entry>

                    <entry>Add explicit fold.</entry>
                </row>

                <row>
                    <entry><keycap>C+e s</keycap></entry>

                    <entry>Select fold.</entry>
                </row>

                <row>
                    <entry><keycap>C+e ENTER
                    <replaceable>key</replaceable></keycap></entry>

                    <entry>Expand folds with level less than
                    <replaceable>key</replaceable>, collapse all others.</entry>
                </row>

                <row>
                    <entry><keycap>C+e n n</keycap></entry>

                    <entry>Narrow to fold.</entry>
                </row>

                <row>
                    <entry><keycap>C+e n s</keycap></entry>

                    <entry>Narrow to selection.</entry>
                </row>

                <row>
                    <entry><keycap>A+UP</keycap>;
                    <keycap>A+DOWN</keycap></entry>

                    <entry>Moves caret to previous; next fold.</entry>
                </row>

                <row>
                    <entry><keycap>C+e u</keycap></entry>

                    <entry>Moves caret to the parent fold of the one containing
                    the caret.</entry>
                </row>
            </tbody>
        </tgroup>
    </informaltable>

    <bridgehead renderas="sect1">Macros</bridgehead>

    <para>For details, see <xref linkend="using-macros" />.</para>

    <informaltable frame="none">
        <tgroup cols="2">
            <colspec colnum="1" colwidth="2.2in" />

            <tbody>
                <row>
                    <entry><keycap>C+m C+r</keycap></entry>

                    <entry>Record macro.</entry>
                </row>

                <row>
                    <entry><keycap>C+m C+m</keycap></entry>

                    <entry>Record temporary macro.</entry>
                </row>

                <row>
                    <entry><keycap>C+m C+s</keycap></entry>

                    <entry>Stop recording.</entry>
                </row>

                <row>
                    <entry><keycap>C+m C+p</keycap></entry>

                    <entry>Run temporary macro.</entry>
                </row>
            </tbody>
        </tgroup>
    </informaltable>

    <bridgehead renderas="sect1">Alternative Shortcuts</bridgehead>

    <para>A few frequently-used commands have alternative shortcuts intended to
    help you keep your hands from moving all over the keyboard.</para>

    <informaltable frame="none">
        <tgroup cols="2">
            <colspec colnum="1" colwidth="2.2in" />

            <tbody>
                <row>
                    <entry><keycap>A+j</keycap>; <keycap>A+l</keycap></entry>

                    <entry>Move caret to previous, next character.</entry>
                </row>

                <row>
                    <entry><keycap>A+i</keycap>; <keycap>A+k</keycap></entry>

                    <entry>Move caret up, down one line.</entry>
                </row>

                <row>
                    <entry><keycap>A+q</keycap>; <keycap>A+a</keycap></entry>

                    <entry>Move caret up, down one screenful.</entry>
                </row>

                <row>
                    <entry><keycap>A+z</keycap></entry>

                    <entry>First non-whitespace character of line, beginning of
                    line, first visible line (repeated presses).</entry>
                </row>

                <row>
                    <entry><keycap>A+x</keycap></entry>

                    <entry>Last non-whitespace character of line, end of line,
                    last visible line (repeated presses).</entry>
                </row>
            </tbody>
        </tgroup>
    </informaltable>
</appendix>