2016-02-03 20:15:35 +03:00
|
|
|
|
KAKOUNE(1)
|
|
|
|
|
==========
|
|
|
|
|
|
|
|
|
|
NAME
|
|
|
|
|
----
|
|
|
|
|
commands - a
|
|
|
|
|
|
|
|
|
|
Primitives
|
|
|
|
|
----------
|
2016-03-12 12:13:49 +03:00
|
|
|
|
|
2016-04-08 19:00:24 +03:00
|
|
|
|
Some commands take an exclamation mark (*!*), which can be used to force
|
2016-03-12 12:13:49 +03:00
|
|
|
|
the execution of the command (i.e. to quit a modified buffer, the
|
|
|
|
|
command *q!* has to be used).
|
|
|
|
|
|
2016-10-11 10:28:45 +03:00
|
|
|
|
*cd* [<directory>]::
|
|
|
|
|
change the current directory to *directory*, or the home directory if
|
|
|
|
|
unspecified
|
2016-03-12 12:13:49 +03:00
|
|
|
|
|
|
|
|
|
*e[dit][!]* <filename> [<line> [<column>]]::
|
2016-02-11 00:03:49 +03:00
|
|
|
|
open buffer on file, go to given line and column. If file is already
|
|
|
|
|
opened, just switch to this file. Use edit! to force reloading
|
2016-02-03 20:15:35 +03:00
|
|
|
|
|
|
|
|
|
*w[rite]* [<filename>]::
|
|
|
|
|
write buffer to <filename> or use it's name if filename is not given
|
|
|
|
|
|
|
|
|
|
*w[rite]a[ll]*::
|
|
|
|
|
write all buffers that are associated to a file
|
|
|
|
|
|
2016-03-12 12:13:49 +03:00
|
|
|
|
*q[uit][!]*::
|
2016-02-11 00:03:49 +03:00
|
|
|
|
exit Kakoune, use quit! to force quitting even if there is some
|
|
|
|
|
unsaved buffers remaining
|
2016-02-03 20:15:35 +03:00
|
|
|
|
|
2016-03-12 12:13:49 +03:00
|
|
|
|
*kill*::
|
|
|
|
|
terminate the current session, all the clients as well as the server
|
|
|
|
|
|
|
|
|
|
*w[a]q[!]*::
|
|
|
|
|
write the current buffer (or all buffers when *waq* is used) and quit
|
2016-02-03 20:15:35 +03:00
|
|
|
|
|
|
|
|
|
*b[uffer]* <name>::
|
|
|
|
|
switch to buffer <name>
|
|
|
|
|
|
2016-03-12 12:13:49 +03:00
|
|
|
|
*b[uffer]n[ext]*::
|
|
|
|
|
switch to the next buffer
|
|
|
|
|
|
|
|
|
|
*b[uffer]p[rev]*::
|
|
|
|
|
switch to the previous buffer
|
|
|
|
|
|
|
|
|
|
*d[el]b[uf][!]* [<name>]::
|
|
|
|
|
delete the buffer <name>
|
2016-02-03 20:15:35 +03:00
|
|
|
|
|
|
|
|
|
*source* <filename>::
|
|
|
|
|
execute commands in <filename>
|
|
|
|
|
|
|
|
|
|
*runtime* <filename>::
|
2016-02-11 00:03:49 +03:00
|
|
|
|
execute commands in <filename>, <filename> is relative to kak
|
|
|
|
|
executable path
|
2016-02-03 20:15:35 +03:00
|
|
|
|
|
|
|
|
|
*colorscheme* <name>::
|
|
|
|
|
load named colorscheme
|
|
|
|
|
|
2016-11-14 03:27:14 +03:00
|
|
|
|
*rename-client* <name>::
|
2016-02-03 20:15:35 +03:00
|
|
|
|
set current client name
|
|
|
|
|
|
2016-11-14 03:27:14 +03:00
|
|
|
|
*rename-buffer* <name>::
|
2016-02-03 20:15:35 +03:00
|
|
|
|
set current buffer name
|
|
|
|
|
|
2016-11-14 03:27:14 +03:00
|
|
|
|
*rename-session* <name>::
|
2016-07-28 02:17:55 +03:00
|
|
|
|
set current session name
|
|
|
|
|
|
2016-03-12 12:13:49 +03:00
|
|
|
|
*echo* [options] <text>::
|
|
|
|
|
show *text* in status line, with the following *options*:
|
|
|
|
|
|
|
|
|
|
*-color* <face>:::
|
|
|
|
|
print the given text with *face*, most commonly *Error* or *Information*
|
|
|
|
|
|
|
|
|
|
*-markup*:::
|
|
|
|
|
expand the markup strings in *text* (c.f. the 'expansions' documentation page)
|
|
|
|
|
|
|
|
|
|
*-debug*:::
|
|
|
|
|
print the given text to the *\*debug** buffer
|
2016-02-03 20:15:35 +03:00
|
|
|
|
|
|
|
|
|
*nop*::
|
|
|
|
|
does nothing, but arguments will be evaluated (e.g. shell expansion)
|
|
|
|
|
|
|
|
|
|
*set* <scope> <name> <value>::
|
2016-10-13 11:55:09 +03:00
|
|
|
|
change the value of an option (c.f. the 'options' documentation page),
|
|
|
|
|
note that the name of a particular buffer can be specified when the
|
2016-10-18 15:36:43 +03:00
|
|
|
|
target *scope* is 'buffer', e.g. set buffer=/path/to/buffer foo "bar";
|
|
|
|
|
the scope can also take the `current` special value, which will automatically
|
|
|
|
|
point to the narrowest scope available in the current context
|
2016-02-03 20:15:35 +03:00
|
|
|
|
|
2016-03-12 12:13:49 +03:00
|
|
|
|
*unset* <scope> <name>::
|
|
|
|
|
unset the value of an option (c.f. the 'options' documentation page)
|
|
|
|
|
|
2016-02-03 20:15:35 +03:00
|
|
|
|
*alias* <scope> <name> <command>::
|
|
|
|
|
define a new alias, within the context of a scope
|
|
|
|
|
|
|
|
|
|
*unalias* <scope> <name> [<command>]::
|
2016-02-11 00:03:49 +03:00
|
|
|
|
remove an alias if its current value is the same as the one passed
|
|
|
|
|
as an optional parameter, remove it unconditionally otherwise
|
2016-02-03 20:15:35 +03:00
|
|
|
|
|
2016-11-14 03:27:14 +03:00
|
|
|
|
*declare-option* [-hidden] <type> <name> [<value>]::
|
2016-02-11 00:03:49 +03:00
|
|
|
|
declare a new option, the -hidden hides the option in completion
|
|
|
|
|
suggestions (c.f. the 'options' documentation page)
|
2016-02-03 20:15:35 +03:00
|
|
|
|
|
|
|
|
|
*face* <name> <facespec>::
|
|
|
|
|
define a face (c.f. the 'faces' documentation page)
|
|
|
|
|
|
|
|
|
|
*exec* [<flags>] <key> ...::
|
2016-02-11 00:03:49 +03:00
|
|
|
|
execute a series of keys, as if they were hit (c.f. the 'execeval'
|
|
|
|
|
documentation page)
|
2016-02-03 20:15:35 +03:00
|
|
|
|
|
|
|
|
|
*eval* [<flags>] <command> ...::
|
2016-02-11 00:03:49 +03:00
|
|
|
|
execute commands, as if they were entered in the command prompt
|
|
|
|
|
(c.f. the 'execeval' documentation page)
|
2016-02-03 20:15:35 +03:00
|
|
|
|
|
2016-11-14 03:27:14 +03:00
|
|
|
|
*define-command* [<flags>] <name> <command>::
|
2016-02-03 20:15:35 +03:00
|
|
|
|
define a new command (c.f. the 'Declaring new commands' section below)
|
|
|
|
|
|
|
|
|
|
*map* <scope> <mode> <key> <keys>::
|
2016-09-19 11:10:41 +03:00
|
|
|
|
make *key* behave as if *keys* were typed. with *scope*
|
|
|
|
|
being one of *global*, *buffer* or *window*, *mode* being
|
|
|
|
|
*insert*, *normal*, *prompt*, *menu* or *user*.
|
|
|
|
|
|
|
|
|
|
*user* mode allows for user mapping behind the *,* key. Keys
|
|
|
|
|
will be executed in normal mode.
|
|
|
|
|
|
|
|
|
|
*unmap* <scope> <mode> <key> [<expected>]::
|
|
|
|
|
remove the mapping of *key* in given *scope* and *mode*, if
|
|
|
|
|
expected is specified, only remove the mapping it if matches
|
|
|
|
|
the expected keys.
|
2016-02-03 20:15:35 +03:00
|
|
|
|
|
|
|
|
|
*hook* [-group <group>] <scope> <hook_name> <filtering_regex> <command>::
|
2016-02-11 00:03:49 +03:00
|
|
|
|
execute a command whenever an event is triggered (c.f. the 'hooks'
|
|
|
|
|
documentation page)
|
2016-02-03 20:15:35 +03:00
|
|
|
|
|
2016-11-14 03:27:14 +03:00
|
|
|
|
*remove-hooks* <scope> <group>::
|
2016-02-11 00:03:49 +03:00
|
|
|
|
remove every hooks in *scope* that are part of the given *group*
|
|
|
|
|
(c.f. the 'hooks' documentation page)
|
2016-02-03 20:15:35 +03:00
|
|
|
|
|
2016-11-14 03:27:14 +03:00
|
|
|
|
*add-highlighter* [<flags>] <highlighter_name> <highlighter_parameters> ...::
|
2016-02-11 00:03:49 +03:00
|
|
|
|
add a highlighter to the current window (c.f. the 'highlighters'
|
|
|
|
|
documentation page)
|
2016-02-03 20:15:35 +03:00
|
|
|
|
|
2016-11-14 03:27:14 +03:00
|
|
|
|
*remove-highlighter* <highlighter_id>::
|
2016-02-11 00:03:49 +03:00
|
|
|
|
remove the highlighter whose id is *highlighter_id* (c.f. the
|
|
|
|
|
'highlighters' documentation page)
|
2016-02-03 20:15:35 +03:00
|
|
|
|
|
|
|
|
|
Helpers
|
|
|
|
|
-------
|
2016-02-11 00:03:49 +03:00
|
|
|
|
Kakoune provides some helper commands that can be used to define composite
|
|
|
|
|
commands:
|
2016-02-03 20:15:35 +03:00
|
|
|
|
|
2016-11-27 23:57:04 +03:00
|
|
|
|
*prompt* <prompt> <command>::
|
|
|
|
|
prompt the user for a string, when the user validates, executes the
|
|
|
|
|
command. The entered text is available in the `text` value accessible
|
|
|
|
|
through `$kak_text` in shells or `%val{text}` in commands.
|
|
|
|
|
|
|
|
|
|
The *-init <str>* switch allows setting initial content, the
|
|
|
|
|
*-password* switch hides the entered text and clears the register
|
|
|
|
|
after command execution.
|
|
|
|
|
|
|
|
|
|
*on-key* <command>::
|
|
|
|
|
wait for next key from user, then execute <command>, the key is
|
2016-12-01 23:14:31 +03:00
|
|
|
|
available through the `key` value, accessible through `$kak_key`
|
2016-11-27 23:57:04 +03:00
|
|
|
|
in shells, or `%val{key}` in commands.
|
2016-02-03 20:15:35 +03:00
|
|
|
|
|
|
|
|
|
*menu* <label1> <commands1> <label2> <commands2> ...::
|
2016-02-11 00:03:49 +03:00
|
|
|
|
display a menu using labels, the selected label’s commands are
|
|
|
|
|
executed. menu can take an *-auto-single* argument, to automatically
|
|
|
|
|
run commands when only one choice is provided, and a *-select-cmds*
|
|
|
|
|
argument, in which case menu takes three argument per item, the
|
|
|
|
|
last one being a command to execute when the item is selected (but
|
|
|
|
|
not validated)
|
2016-02-03 20:15:35 +03:00
|
|
|
|
|
2016-03-12 12:13:49 +03:00
|
|
|
|
*info* [options] <text>::
|
|
|
|
|
display text in an information box with the following *options*:
|
|
|
|
|
|
|
|
|
|
*-anchor* <line>.<column>:::
|
|
|
|
|
print the text at the given coordinates
|
|
|
|
|
|
|
|
|
|
*-placement* {above,below}:::
|
|
|
|
|
set the placement relative to the anchor
|
|
|
|
|
|
|
|
|
|
*-title* <text>:::
|
|
|
|
|
set the title of the message box
|
2016-02-03 20:15:35 +03:00
|
|
|
|
|
|
|
|
|
*try* <commands> catch <on_error_commands>::
|
2016-02-11 00:03:49 +03:00
|
|
|
|
prevent an error in *commands* from aborting the whole commands
|
|
|
|
|
execution, execute *on_error_commands* instead. If nothing is to be
|
2016-04-08 19:00:24 +03:00
|
|
|
|
done on error, the catch part can be omitted
|
2016-02-03 20:15:35 +03:00
|
|
|
|
|
|
|
|
|
*reg* <name> <content>::
|
|
|
|
|
set register *name* to *content*
|
2016-02-02 22:15:12 +03:00
|
|
|
|
|
2016-03-12 12:13:49 +03:00
|
|
|
|
*select* <anchor_line>.<anchor_column>,<cursor_line>.<cursor_column>:...::
|
|
|
|
|
replace the current selections with the one described in the argument
|
|
|
|
|
|
|
|
|
|
*debug* {info,buffers,options,memory,shared-strings}::
|
|
|
|
|
print some debug information in the *\*debug** buffer
|
|
|
|
|
|
2016-02-11 00:03:49 +03:00
|
|
|
|
Note that those commands are also available in the interactive mode, but
|
|
|
|
|
are not really useful in that context.
|
2016-02-02 22:15:12 +03:00
|
|
|
|
|
2016-02-03 20:15:35 +03:00
|
|
|
|
Multiple commands
|
|
|
|
|
-----------------
|
2016-02-11 00:03:49 +03:00
|
|
|
|
Commands (c.f. previous sections) can be chained, by being separated either
|
|
|
|
|
by new lines or by semicolons, as such a semicolon must be escaped with a
|
|
|
|
|
backslash (\;) to be considered as a literal semicolon argument
|
2016-02-03 20:15:35 +03:00
|
|
|
|
|
|
|
|
|
Declaring new commands
|
|
|
|
|
----------------------
|
2016-11-14 03:27:14 +03:00
|
|
|
|
New commands can be defined using the *define-command* command:
|
2016-02-03 20:15:35 +03:00
|
|
|
|
|
2016-11-14 03:27:14 +03:00
|
|
|
|
*define-command* [flags] <command_name> <commands>::
|
2016-02-11 00:03:49 +03:00
|
|
|
|
*commands* is a string containing the commands to execute, and *flags*
|
|
|
|
|
can be any combination of the following parameters:
|
2016-02-03 20:15:35 +03:00
|
|
|
|
|
2016-03-12 12:13:49 +03:00
|
|
|
|
*-params* <num>:::
|
2016-02-11 00:03:49 +03:00
|
|
|
|
the command accepts a *num* parameter, which can be either a number,
|
|
|
|
|
or of the form <min>..<max>, with both <min> and <max> omittable
|
2016-02-03 20:15:35 +03:00
|
|
|
|
|
2016-03-12 12:13:49 +03:00
|
|
|
|
*-file-completion*:::
|
2016-02-03 20:15:35 +03:00
|
|
|
|
try file completion on any parameter passed to this command
|
|
|
|
|
|
2016-03-12 12:13:49 +03:00
|
|
|
|
*-client-completion*:::
|
2016-02-03 20:15:35 +03:00
|
|
|
|
try client name completion on any parameter passed to this command
|
|
|
|
|
|
2016-03-12 12:13:49 +03:00
|
|
|
|
*-buffer-completion*:::
|
2016-02-03 20:15:35 +03:00
|
|
|
|
try buffer name completion on any parameter passed to this command
|
|
|
|
|
|
2016-03-12 12:13:49 +03:00
|
|
|
|
*-shell-completion*:::
|
2016-02-11 00:03:49 +03:00
|
|
|
|
following string is a shell command which takes parameters as
|
|
|
|
|
positional params and output one completion candidate per line
|
2016-02-03 20:15:35 +03:00
|
|
|
|
|
2016-03-12 12:13:49 +03:00
|
|
|
|
*-allow-override*:::
|
2016-04-08 19:00:24 +03:00
|
|
|
|
allow the new command to replace an existing one with the same name
|
2016-02-03 20:15:35 +03:00
|
|
|
|
|
2016-03-12 12:13:49 +03:00
|
|
|
|
*-hidden*:::
|
2016-02-03 20:15:35 +03:00
|
|
|
|
do not show the command in command name completions
|
|
|
|
|
|
2016-03-12 12:13:49 +03:00
|
|
|
|
*-docstring*:::
|
2016-02-03 20:15:35 +03:00
|
|
|
|
define the documentation string for the command
|
2016-02-02 22:15:12 +03:00
|
|
|
|
|
2016-02-11 00:03:49 +03:00
|
|
|
|
Using shell expansion allows to define complex commands or to access Kakoune
|
|
|
|
|
state:
|
2016-02-02 22:15:12 +03:00
|
|
|
|
|
2016-02-03 20:15:35 +03:00
|
|
|
|
--------------------------------------------------------
|
|
|
|
|
def " print_selection %{ echo %sh{ ${kak_selection} } }"
|
|
|
|
|
--------------------------------------------------------
|