Update README
* Document commands, string syntax, shell expansion. * Style cleanup
This commit is contained in:
parent
e7153aacef
commit
46b8964bbb
112
README.asciidoc
112
README.asciidoc
|
@ -145,6 +145,48 @@ selection.
|
||||||
Registers are lists, instead of simply text in order to interact well with
|
Registers are lists, instead of simply text in order to interact well with
|
||||||
multiselection. Each selection have it's own captures, or yank buffer.
|
multiselection. Each selection have it's own captures, or yank buffer.
|
||||||
|
|
||||||
|
Basic Commands
|
||||||
|
--------------
|
||||||
|
|
||||||
|
Commands are entered using *:*.
|
||||||
|
|
||||||
|
* e[dit] <filename> [<line> [<column>]]: 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.
|
||||||
|
* w[rite] [<filename>]: write buffer to <filename> or use it's name if
|
||||||
|
filename is not given.
|
||||||
|
* q[uit]: exit Kakoune, use quit! to force quitting even if there is some
|
||||||
|
unsaved buffers remaining.
|
||||||
|
* wq: write current buffer and quit
|
||||||
|
* b[uffer] <name>: switch to buffer <name>
|
||||||
|
* d[el]b[uf] [<name>]: delete the buffer <name>
|
||||||
|
* source <filename>: execute commands in <filename>
|
||||||
|
* runtime <filename>: execute commands in <filename>, <filename>
|
||||||
|
is relative to kak executable path.
|
||||||
|
* exec <keys>: execute <keys> as if pressed in normal mode.
|
||||||
|
* echo <text>: show <text> in status line
|
||||||
|
* set[bwg] <option> <value>: set <option> to <value> in *b*uffer, *w*indow
|
||||||
|
or *g*lobal scope.
|
||||||
|
|
||||||
|
String syntax
|
||||||
|
-------------
|
||||||
|
|
||||||
|
When entering a command, parameters are separated by whitespace (shell like),
|
||||||
|
if you want to give parameters with spaces, you should quote them.
|
||||||
|
|
||||||
|
Kakoune support three string syntax:
|
||||||
|
|
||||||
|
* "strings" and 'strings': classic strings, use \' or \" to escape the
|
||||||
|
separator.
|
||||||
|
|
||||||
|
* %{strings}: these strings are very usefull when entering commands, first the '{' and '}'
|
||||||
|
delimiter is configurable: you can use any non alphanumeric character.
|
||||||
|
like %[string], %<string>, %(string), %~string~ or %!string!...
|
||||||
|
if the character following the % is one of {[(<, then the closing one is
|
||||||
|
the matching }])>, and these delimiters in the string need not to be
|
||||||
|
escaped if the contained delimiters are balanced.
|
||||||
|
for example %{ roger {}; } is a valid string.
|
||||||
|
|
||||||
Highlighters
|
Highlighters
|
||||||
------------
|
------------
|
||||||
|
|
||||||
|
@ -157,13 +199,19 @@ existing highlighters are:
|
||||||
* *highlight_selections*: used to make current selection visible
|
* *highlight_selections*: used to make current selection visible
|
||||||
* *expand_tabs*: expand tabs to next 8 multiple column (to make configurable)
|
* *expand_tabs*: expand tabs to next 8 multiple column (to make configurable)
|
||||||
* *number_lines*: show line numbers
|
* *number_lines*: show line numbers
|
||||||
* *regex*: highlight a regex, takes 3 parameters <regex> <fg_color> <bg_color>
|
|
||||||
* *group*: highlighter group, containing other highlighters. takes one
|
* *group*: highlighter group, containing other highlighters. takes one
|
||||||
parameter, <group_name>. useful when multiple highlighters work
|
parameter, <group_name>. useful when multiple highlighters work
|
||||||
together and need to be removed as one. Adding and removing from
|
together and need to be removed as one. Adding and removing from
|
||||||
a group can be done using
|
a group can be done using
|
||||||
:addhl -group <group> <highlighter_name> <highlighter_parameters...>
|
:addhl -group <group> <highlighter_name> <highlighter_parameters...>
|
||||||
:rmhl -group <group> <highlighter_name>
|
:rmhl -group <group> <highlighter_name>
|
||||||
|
* *regex*: highlight a regex, takes the regex as first parameter, followed by
|
||||||
|
any number of color spec parameters.
|
||||||
|
color spec format is: <capture_id>:<fg_color>[,<bg_color>]
|
||||||
|
For example:
|
||||||
|
:addhl regex //(\h+TODO:)?[^\n]+ 0:cyan 1:yellow,red
|
||||||
|
will highlight C++ style comments in cyan, with an eventual
|
||||||
|
'TODO:' in yellow on red background.
|
||||||
|
|
||||||
Filters
|
Filters
|
||||||
-------
|
-------
|
||||||
|
@ -178,6 +226,7 @@ exisiting filters are:
|
||||||
* *cleanup_whitespaces*: remove trailing whitespaces on the previous line
|
* *cleanup_whitespaces*: remove trailing whitespaces on the previous line
|
||||||
when inserting an end-of-line.
|
when inserting an end-of-line.
|
||||||
* *expand_tabulations*: insert spaces instead of tab characters
|
* *expand_tabulations*: insert spaces instead of tab characters
|
||||||
|
* *group*: same as highlighters group
|
||||||
|
|
||||||
Hooks
|
Hooks
|
||||||
-----
|
-----
|
||||||
|
@ -185,22 +234,69 @@ Hooks
|
||||||
commands can be registred to be executed when certain events arise.
|
commands can be registred to be executed when certain events arise.
|
||||||
to register a hook, use the hook command.
|
to register a hook, use the hook command.
|
||||||
|
|
||||||
:hook <scope> <hook_name> <filtering_regex> <command> <command_args>...
|
:hook <scope> <hook_name> <filtering_regex> <commands>
|
||||||
|
|
||||||
<scope> can be either global, buffer or window, the scope are hierarchical,
|
<scope> can be either global, buffer or window, the scope are hierarchical,
|
||||||
meaning that a Window calling a hook will execute it's own, the buffer ones
|
meaning that a Window calling a hook will execute it's own, the buffer ones
|
||||||
and the global ones.
|
and the global ones.
|
||||||
|
|
||||||
|
<command> is a string containing the commands to execute when the hook is
|
||||||
|
called.
|
||||||
|
|
||||||
for example, to automatically use line numbering with .cc files,
|
for example, to automatically use line numbering with .cc files,
|
||||||
use the following command:
|
use the following command:
|
||||||
|
|
||||||
:hook global WinCreate .*\.cc addhl number_lines
|
:hook global WinCreate .*\.cc %{ addhl number_lines }
|
||||||
|
|
||||||
Shell expension
|
Shell expansion
|
||||||
---------------
|
---------------
|
||||||
|
|
||||||
Commands support the shell backtick syntax, and kakoune internal state
|
A special string syntax is supported which replace it's content with the
|
||||||
can be accessed through environment variable. For example, if you are
|
output of the shell commands in it, it is similar to the shell $(...)
|
||||||
editing the editor.cc file, typing ':edit `echo ${kak_bufname/%.cc/.hh}`'
|
syntax and is evaluated only when needed.
|
||||||
will edit the editor.hh file.
|
for example: %sh{ ls } is replaced with the output of the ls command.
|
||||||
|
|
||||||
|
Some of kakoune state is available through environment variables:
|
||||||
|
|
||||||
|
* *kak_selection*: content of the last selection
|
||||||
|
* *kak_bufname*: name of the current buffer
|
||||||
|
* *kak_opt_name*: value of option name
|
||||||
|
* *kak_reg_x*: value of register x
|
||||||
|
|
||||||
|
for example you can print informations on the current file in the status
|
||||||
|
line using:
|
||||||
|
:echo %sh{ ls -l $kak_bufname }
|
||||||
|
|
||||||
|
Defining Commands
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
new commands can be defined using the *def* command.
|
||||||
|
|
||||||
|
:def <command_name> <commands>
|
||||||
|
|
||||||
|
<commands> is a string containing the commands to execute
|
||||||
|
|
||||||
|
def can also takes some flags:
|
||||||
|
* *-env-params*: pass parameters given to commands in the environement as
|
||||||
|
kak_paramN with N the parameter number
|
||||||
|
* *-shell-completion*: following string is a shell command which takes
|
||||||
|
parameters through the environemnt and output one
|
||||||
|
completion candidate per line.
|
||||||
|
* *-allow-override*: allow the new command to replace an exisiting one
|
||||||
|
with the same name.
|
||||||
|
|
||||||
|
Using shell expansion permits to define complex commands or to access
|
||||||
|
kakoune state:
|
||||||
|
|
||||||
|
:def print_selection %{ echo %sh{ ${kak_selection} } }
|
||||||
|
|
||||||
|
Some helper commands can be used to define composite commands:
|
||||||
|
|
||||||
|
* menu <label1> <commands1> <label2> <commands2>...: display a menu using
|
||||||
|
labels, the selected label's commands are executed.
|
||||||
|
* try <commands> catch <on_error_commands>: prevent an error in <commands>
|
||||||
|
from aborting the whole commands execution, execute <on_error_commands>
|
||||||
|
instead.
|
||||||
|
|
||||||
|
Note that these commands are available in interactive command mode, but are
|
||||||
|
not that useful in this context.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user