aboutsummaryrefslogtreecommitdiffhomepage
path: root/doc_src/bind.txt
blob: 442d7e99ab6ad268d35d1ca939ac1ea5a11f282c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
\section bind bind - handle fish key bindings

\subsection bind-synopsis Synopsis
\fish{syn}
bind [OPTIONS] SEQUENCE COMMAND
\endfish

\subsection bind-description Description

`bind` adds a binding for the specified key sequence to the
specified command.

SEQUENCE is the character sequence to bind to. These should be written as <a
href="index.html#escapes">fish escape sequences</a>. For example, because
pressing the Alt key and another character sends that character prefixed with
an escape character, Alt-based key bindings can be written using the `\e`
escape. For example, @key{Alt,w} can be written as `\ew`. The control
character can be written in much the same way using the `\c` escape, for
example @key{Control,X} (^X) can be written as `\cx`. Note
that Alt-based key bindings are case sensitive and Control-based key bindings
are not. This is a constraint of text-based terminals, not `fish`.

The default key binding can be set by specifying a `SEQUENCE` of the empty
string (that is, ```''``` ). It will be used whenever no other binding
matches. For most key bindings, it makes sense to use the `self-insert`
function (i.e. ```bind '' self-insert```) as the default keybinding. This
will insert any keystrokes not specifically bound to into the editor. Non-
printable characters are ignored by the editor, so this will not result in
control sequences being printable.

If the `-k` switch is used, the name of the key (such as 'down', 'up' or 'backspace')
is used instead of a sequence. The names used are the same as the
corresponding curses variables, but without the 'key_' prefix. (See
`terminfo(5)` for more information, or use `bind --key-names` for a list of all
available named keys.)

`COMMAND` can be any fish command, but it can also be one of a set of special
input functions. These include functions for moving the cursor, operating on
the kill-ring, performing tab completion, etc. Use `bind --function-names` for
a complete list of these input functions.

When `COMMAND` is a shellscript command, it is a good practice to put the actual
code into a <a href="#function">function</a> and simply bind to the function
name. This way it becomes significantly easier to test the function while
editing, and the result is usually more readable as well.

If such a script produces output, the script needs to finish by calling
`commandline -f repaint` in order to tell fish that a repaint is in order.

Key bindings are not saved between sessions by default. To save custom
keybindings, edit the `fish_user_key_bindings` function and insert the
appropriate `bind` statements.

The following parameters are available:

- `-k` or `--key` Specify a key name, such as 'left' or 'backspace' instead of a character sequence
- `-K` or `--key-names` Display a list of available key names
- `-f` or `--function-names` Display a list of available input functions

The following special input functions are available:

- `backward-char`, moves one character to the left
- `backward-delete-char`, deletes one character of input to the left of the cursor
- `backward-kill-line`, move everything from the beginning of the line to the cursor to the killring
- `backward-kill-word`, move the word to the left of the cursor to the killring
- `backward-word`, move one word to the left
- `beginning-of-history`, move to the beginning of the history
- `beginning-of-line`, move to the beginning of the line
- `capitalize-word`, make the current word begin with a capital letter
- `complete`, guess the remainder of the current token
- `delete-char`, delete one character to the right of the cursor
- `delete-line`, delete the entire line
- `downcase-word`, make the current word lowercase
- `dump-functions`, print a list of all key-bindings
- `end-of-history`, move to the end of the history
- `end-of-line`, move to the end of the line
- `explain`, print a description of possible problems with the current command
- `forward-char`, move one character to the right
- `forward-word`, move one word to the right
- `history-search-backward`, search the history for the previous match
- `history-search-forward`, search the history for the next match
- `kill-line`, move everything from the cursor to the end of the line to the killring
- `kill-whole-line`, move the line to the killring
- `kill-word`, move the next word to the killring
- `upcase-word`, make the current word uppercase
- `yank`, insert the latest entry of the killring into the buffer
- `yank-pop`, rotate to the previous entry of the killring

\subsection bind-example Examples

`bind \cd 'exit'` causes `fish` to exit when @key{Control,D} is pressed.

`bind -k ppage history-search-backward` performs a history search when the @key{Page Up} key is pressed.