# Appendix
## Key Bindings
Linux / Win32 | Mac OSX | Command |
--------------|---------|---------|
**File** |||
Ctrl+N |⌘N |New file
Ctrl+O |⌘O |Open file
Ctrl+Alt+O |⌘⌥O |Open recent file...
Ctrl+Shift+O|⌘⇧O |Reload file
Ctrl+S |⌘S |Save file
Ctrl+Shift+S|⌘⇧S |Save file as..
Ctrl+W |⌘W |Close file
Ctrl+Shift+W|⌘⇧W |Close all files
None |None|Load session...
None |None|Load session...
Alt+Q |⌘Q |Quit
**Edit** |||
Ctrl+Z
Alt+Backspace|⌘Z |Undo
Ctrl+Y
Ctrl+Shift+Z |⌘⇧Z |Redo
Ctrl+X
Shift+Del |⌘X
⇧⌦|Cut
Ctrl+C
Ctrl+Ins |⌘C |Copy
Ctrl+V
Shift+Ins |⌘V |Paste
Ctrl+D |⌘D |Duplicate line
Del |⌦
^D |Delete
Ctrl+A |⌘A |Select all
Ctrl+M |^M |Match brace
Ctrl+Enter |^⎋ |Complete word
None |None |Delete word
Ctrl+Shift+H |⌘⇧H |Highlight word
Ctrl+/ |^/ |Toggle block comment
Ctrl+T |^T |Transpose characters
Ctrl+Shift+J |^J |Join lines
Ctrl+Shift+M |^⇧M |Select to matching brace
Ctrl+< |⌘< |Select between XML tags
Ctrl+> |⌘> |Select in XML tag
Ctrl+" |⌘" |Select in double quotes
Ctrl+' |⌘' |Select in single quotes
Ctrl+( |⌘( |Select in parentheses
Ctrl+[ |⌘[ |Select in brackets
Ctrl+{ |⌘{ |Select in braces
None |None |Select word
Ctrl+Shift+L |⌘⇧L |Select line
Ctrl+Shift+P |⌘⇧P |Select paragraph
Ctrl+Shift+I |⌘⇧I |Select indented block
None |None |Select style
None |None |Upper case selection
None |None |Lower case selection
Alt+< |^< |Enclose as XML tags
Alt+> |^> |Enclose as single XML tag
Alt+" |^" |Enclose in double quotes
Alt+' |^' |Enclose in single quotes
Alt+( |^( |Enclose in parentheses
Alt+[ |^[ |Enclose in brackets
Alt+{ |^{ |Enclose in braces
Ctrl++ |⌘+ |Grow selection by 1 on either side
Ctrl+\_ |⌘\_ |Shrink selection by 1 on either side
Ctrl+Shift+Up |^⇧⇡ |Move selected lines up
Ctrl+Shift+Down |^⇧⇣ |Move selected lines down
**Search** |||
Ctrl+F |⌘F |Find
Ctrl+G
F3 |⌘G |Find next
Ctrl+Shift+G
Shift+F3|⌘⇧G |Find previous
Ctrl+R |⌘R |Replace
Ctrl+Shift+R |⌘⇧R |Replace all
Ctrl+Alt+F |⌘⌥F |Find incremental
Ctrl+Shift+F |⌘⇧F |Find in files
Ctrl+Alt+G |⌘⌥G |Goto next file found
Ctrl+Alt+Shift+G |⌘⌥⇧G|Goto previous file found
Ctrl+J |⌘J |Jump to line
**Tools** |||
Ctrl+E |⌘E |Command entry
Ctrl+Shift+E |⌘⇧E |Select command
Ctrl+Alt+R |^R |Run
Ctrl+Alt+Shift+R|^⇧R |Compile
Ctrl+| |⌘||Filter text through
Ctrl+Space |⌥⎋ |Complete symbol
Ctrl+H |^H |Show documentation
Tab |⇥ |Expand snippet or next placeholder
Ctrl+K |⌥⇥ |Insert snippet...
Shift+Tab |⇧⇥ |Previous snippet placeholder
Ctrl+Shift+K |⌥⇧⇥ |Cancel snippet
Ctrl+F2 |⌘F2 |Toggle bookmark
Ctrl+Shift+F2 |⌘⇧F2 |Clear bookmarks
F2 |F2 |Next bookark
Shift+F2 |⇧F2 |Previous bookmark
Alt+F2 |⌥F2 |Goto bookmark...
Ctrl+U |⌘U |Snapopen `_USERHOME`
Ctrl+Alt+U |⌘⌥U |Snapopen `_HOME`
Ctrl+Alt+Shift+O|⌘⌥⇧O |Snapopen current directory
Ctrl+I |⌘I |Show style
**Buffer** |||
Ctrl+Tab
Ctrl+PageDown |^\` |Next buffer
Ctrl+Shift+Tab
Ctrl+PageUp|^~ |Previous buffer
Ctrl+B |⌘B |Switch to buffer...
None |None |Tab width: 2
None |None |Tab width: 3
None |None |Tab width: 4
None |None |Tab width: 8
Ctrl+Alt+Shift+T |^⇧T |Toggle use tabs
None |None |Convert indentation
None |None |`CRLF` EOL mode
None |None |`CR` EOL mode
None |None |`LF` EOL mode
None |None |`UTF-8` encoding
None |None |`ASCII` encoding
None |None |`ISO-8859-1` encoding
None |None |`UTF-16` encoding
Ctrl+Alt+L |⌘⌥L |Select lexer...
F5 |F5 |Refresh syntax highlighting
**View** |||
Ctrl+Alt+Tab |^⇥ |Next view
Ctrl+Alt+Shift+Tab |^⇧⇥ |Previous view
Ctrl+Alt+Shift+S |^⇧S |Split view vertical
Ctrl+Alt+S |^S |Split view horizontal
Ctrl+Alt+W |^W |Unsplit view
Ctrl+Alt+Shift+W |^⇧W |Unsplit all views
Ctrl+Alt++
Ctrl+Alt+=|^+
^=|Grow view
Ctrl+Alt+- |^- |Shrink view
None |None |Toggle current fold
Ctrl+Alt+Enter |^↩ |Toggle view EOL
Ctrl+Alt+\\ |^\\ |Toggle wrap mode
Ctrl+Alt+Shift+I |^⇧I |Toggle show indent guides
Ctrl+Alt+Space |^Space |Toggle view whitespace
Ctrl+Alt+Shift+V |^⇧V |Toggle virtual space
Ctrl+= |⌘= |Zoom in
Ctrl+- |⌘- |Zoom out
Ctrl+0 |⌘0 |Reset zoom
**Help** |||
F1 |F1 |Open manual
Shift+F1|⇧F1 |Open LuaDoc
None |None|About
**Movement** |||
Down |⇣
^N |Line down
Shift+Down |⇧⇣
^⇧N |Line down extend selection
Ctrl+Down |⌘↘ |Scroll line down
Alt+Shift+Down |⌥⇧⇣ |Line down extend rect. selection
Up |⇡
^P |Line up
Shift+Up |⇧⇡
^⇧P |Line up extend selection
Ctrl+Up |⌘↖ |Scroll line up
Alt+Shift+Up |⌥⇧⇡ |Line up extend rect. selection
Left |⇠
^B |Char left
Shift+Left |⇧⇠
^⇧B |Char left extend selection
Ctrl+Left |^⇠
^⌥B |Word left
Ctrl+Shift+Left |^⇧⇠
^⌥⇧B|Word left extend selection
Alt+Shift+Left |⌥⇧⇠ |Char left extend rect. selection
Right |⇢
^F |Char right
Shift+Right |⇧⇢
^⇧F |Char right extend selection
Ctrl+Right |^⇢
^⌥F |Word right
Ctrl+Shift+Right |^⇧⇢
^⌥⇧F|Word right extend selection
Alt+Shift+Right |⌥⇧⇢ |Char right extend rect. selection
Home |⌘⇠
^A |Line start
Shift+Home |⌘⇧⇠
^⇧A |Line start extend selection
Ctrl+Home |⌘⇡
↖ |Document start
Ctrl+Shift+Home |⌘⇧⇡
⇧↖ |Document start extend selection
Alt+Shift+Home |⌥⇧↖ |Line start extend rect. selection
End |⌘⇢
^E |Line end
Shift+End |⌘⇧⇢
^⇧E |Line end extend selection
Ctrl+End |⌘⇣
↘ |Document end
Ctrl+Shift+End |⌘⇧⇣
⇧↘ |Document end extend selection
Alt+Shift+End |⌥⇧↘ |Line end extend rect. selection
PageUp |⇞ |Page up
Shift+PageUp |⇧⇞ |Page up extend selection
Alt+Shift+PageUp |⌥⇧⇞ |Page up extend rect. selection
PageDown |⇟ |Page down
Shift+PageDown |⇧⇟ |Page down extend selection
Alt+Shift+PageDown |⌥⇧⇟ |Page down extend rect. selection
Ctrl+Del |⌥⌦ |Delete word right
Ctrl+Shift+Del |⌘⌦ |Delete line right
Ins |Ins |Toggle overtype
Backspace
Shift+Backspace|⌫
⇧⌫ |Delete back
Ctrl+Backspace |⌥⌫ |Delete word left
Ctrl+Shift+Backspace |⌘⌫ |Delete line left
Tab |⇥ |Insert tab or indent
Shift+Tab |⇧⇥ |Dedent
None |^K |Cut to line end
None |^L |Center line vertically
## Lua Patterns
The following is taken from the
[Lua 5.1 Reference Manual](http://www.lua.org/manual/5.1/manual.html#5.4.1).
_Character Class:_
A character class is used to represent a set of characters. The following
combinations are allowed in describing a character class:
* **_`x`_:** (where _x_ is not one of the magic characters `^$()%.[]*+-?`)
represents the character _x_ itself.
* **`.`:** (a dot) represents all characters.
* **`%a`:** represents all letters.
* **`%c`:** represents all control characters.
* **`%d`:** represents all digits.
* **`%l`:** represents all lowercase letters.
* **`%p`:** represents all punctuation characters.
* **`%s`:** represents all space characters.
* **`%u`:** represents all uppercase letters.
* **`%w`:** represents all alphanumeric characters.
* **`%x`:** represents all hexadecimal digits.
* **`%z`:** represents the character with representation 0.
* **`%`_`x`_:** (where _x_ is any non-alphanumeric character) represents the
character _x_. This is the standard way to escape the magic characters. Any
punctuation character (even the non magic) can be preceded by a '`%`' when
used to represent itself in a pattern.
* **`[set]`:** represents the class which is the union of all characters in set.
A range of characters can be specified by separating the end characters of the
range with a '`-`'. All classes `%`_x_ described above can also be used as
components in set. All other characters in set represent themselves. For
example, `[%w_]` (or `[_%w]`) represents all alphanumeric characters plus the
underscore, `[0-7]` represents the octal digits, and `[0-7%l%-]` represents
the octal digits plus the lowercase letters plus the '`-`' character.
The interaction between ranges and classes is not defined. Therefore, patterns
like `[%a-z]` or `[a-%%]` have no meaning.
* **`[^set]`:** represents the complement of _set_, where _set_ is interpreted
as above.
For all classes represented by single letters (`%a`, `%c`, etc.), the
corresponding uppercase letter represents the complement of the class. For
instance, `%S` represents all non-space characters.
The definitions of letter, space, and other character groups depend on the
current locale. In particular, the class `[a-z]` may not be equivalent to `%l`.
_Pattern Item:_
A _pattern item_ can be
* a single character class, which matches any single character in the class;
* a single character class followed by '`*`', which matches 0 or more
repetitions of characters in the class. These repetition items will always
match the longest possible sequence;
* a single character class followed by '`+`', which matches 1 or more
repetitions of characters in the class. These repetition items will always
match the longest possible sequence;
* a single character class followed by '`-`', which also matches 0 or more
repetitions of characters in the class. Unlike '`*`', these repetition items
will always match the _shortest_ possible sequence;
* a single character class followed by '`?`', which matches 0 or 1 occurrence of
a character in the class;
* `%n`, for _n_ between 1 and 9; such item matches a substring equal to the
_n_-th captured string (see below);
* `%bxy`, where _x_ and _y_ are two distinct characters; such item matches
strings that start with _x_, end with _y_, and where the _x_ and _y_ are
balanced. This means that, if one reads the string from left to right,
counting +_1_ for an _x_ and -_1_ for a _y_, the ending _y_ is the first _y_
where the count reaches 0. For instance, the item `%b()` matches expressions
with balanced parentheses.
_Pattern:_
A _pattern_ is a sequence of pattern items. A '`^`' at the beginning of a
pattern anchors the match at the beginning of the subject string. A '`$`' at the
end of a pattern anchors the match at the end of the subject string. At other
positions, '`^`' and '`$`' have no special meaning and represent themselves.
_Captures:_
A pattern can contain sub-patterns enclosed in parentheses; they describe
_captures_. When a match succeeds, the substrings of the subject string that
match captures are stored (_captured_) for future use. Captures are numbered
according to their left parentheses. For instance, in the pattern
`"(a*(.)%w(%s*))"`, the part of the string matching `"a*(.)%w(%s*)"` is stored
as the first capture (and therefore has number 1); the character matching "`.`"
is captured with number 2, and the part matching "`%s*`" has number 3.
As a special case, the empty capture `()` captures the current string position
(a number). For instance, if we apply the pattern `"()aa()"` on the string
`"flaaap"`, there will be two captures: 3 and 5.
A pattern cannot contain embedded zeros. Use `%z` instead.