2021-05-16 03:49:59 +02:00
|
|
|
.Dd June 15, 2021
|
|
|
|
.Dt KAK 1
|
|
|
|
.Os
|
|
|
|
.Sh NAME
|
|
|
|
.Nm kak
|
|
|
|
.Nd a vim-inspired, selection oriented code editor
|
|
|
|
.
|
|
|
|
.Sh SYNOPSIS
|
|
|
|
.Nm
|
|
|
|
.Op Fl d
|
|
|
|
.Op Fl n
|
|
|
|
.Op Fl ro
|
|
|
|
.Op Fl c Ar session_id | Fl s Ar session_id
|
|
|
|
.Op Fl ui Ar ui_type
|
|
|
|
.Op Fl e Ar command
|
|
|
|
.Op Fl E Ar command
|
|
|
|
.Op Sy + Ns Ar line Ns Oo Sy \&: Ns Ar column Oc | Sy +:
|
|
|
|
.Op Ar file ...
|
|
|
|
.
|
|
|
|
.Nm
|
|
|
|
.Fl f Ar keys
|
|
|
|
.Op Fl q
|
|
|
|
.Op Fl i Ar suffix
|
|
|
|
.Op Ar file ...
|
|
|
|
.
|
|
|
|
.Nm
|
|
|
|
.Fl p Ar session_id
|
|
|
|
.
|
|
|
|
.Nm
|
|
|
|
.Fl l
|
|
|
|
.Nm
|
|
|
|
.Fl clear
|
|
|
|
.
|
|
|
|
.Nm
|
|
|
|
.Fl version
|
|
|
|
.
|
|
|
|
.Nm
|
|
|
|
.Fl help
|
|
|
|
.
|
|
|
|
.Sh DESCRIPTION
|
|
|
|
.Sy Kakoune
|
|
|
|
is a code editor heavily inspired by
|
|
|
|
.Xr vim 1
|
|
|
|
and
|
|
|
|
.Xr vi 1 .
|
|
|
|
As such, most of its commands are similar to
|
|
|
|
.Xr vi 1 Ap s,
|
|
|
|
sharing its
|
|
|
|
.Dq keystrokes as a text editing language
|
|
|
|
model.
|
|
|
|
.Pp
|
|
|
|
.Sy Kakoune
|
|
|
|
operates in two modes, normal and insertion.
|
|
|
|
In insertion mode, keys are directly inserted into the current buffer.
|
|
|
|
In normal mode, keys are used to manipulate the current selection and to
|
|
|
|
enter insertion mode.
|
|
|
|
.Pp
|
|
|
|
.Sy Kakoune
|
|
|
|
has a strong focus on interactivity.
|
|
|
|
Most commands provide immediate and incremental results, while still
|
|
|
|
being competitive in keystroke count with vim.
|
|
|
|
.Pp
|
|
|
|
.Sy Kakoune
|
|
|
|
works on selections, which are oriented, inclusive ranges of characters.
|
|
|
|
Selections have an anchor and a cursor.
|
|
|
|
Most commands move both of them except when extending selection, where
|
|
|
|
the anchor character stays fixed and the cursor moves around.
|
|
|
|
.Pp
|
|
|
|
The options are as follows:
|
|
|
|
.Bl -tag -width indent
|
|
|
|
.It Fl help
|
|
|
|
Display a help message and quit.
|
|
|
|
.
|
|
|
|
.It Fl version
|
|
|
|
Display Kakoune version and quit.
|
|
|
|
.
|
|
|
|
.It Fl n
|
|
|
|
Do not load the system's kakrc.
|
|
|
|
.Pq often, Pa /usr/share/kak/kakrc
|
|
|
|
.
|
|
|
|
.It Fl l
|
|
|
|
List existing sessions.
|
|
|
|
.
|
|
|
|
.It Fl d
|
|
|
|
Run as a headless session
|
|
|
|
.Pq requires Fl s .
|
|
|
|
.
|
|
|
|
.It Fl e Ar command
|
|
|
|
Execute
|
|
|
|
.Ar command
|
|
|
|
after the client initialization phase.
|
|
|
|
.
|
|
|
|
.It Fl E Ar command
|
|
|
|
Execute
|
|
|
|
.Ar command
|
|
|
|
after the server initialization phase.
|
|
|
|
.
|
|
|
|
.It Fl f Ar keys
|
2021-12-12 23:05:22 +01:00
|
|
|
Run Kakoune in
|
|
|
|
.Sq filter mode ,
|
|
|
|
like
|
|
|
|
.Xr sed 1 .
|
|
|
|
For standard input and each file named on the command line,
|
|
|
|
the whole buffer is selected
|
|
|
|
(as with
|
|
|
|
.Li % )
|
|
|
|
then
|
|
|
|
.Ar keys
|
|
|
|
are executed.
|
|
|
|
The filtered version of standard input
|
|
|
|
is written to standard output.
|
|
|
|
Any files mentioned on the command line
|
|
|
|
are modified in-place,
|
|
|
|
but if
|
|
|
|
.Fl i
|
|
|
|
is provided then Kakoune makes a backup of the original version.
|
2021-05-16 03:49:59 +02:00
|
|
|
.
|
|
|
|
.It Fl i Ar suffix
|
|
|
|
Backup the files on which a filter is applied, using the given suffix.
|
|
|
|
.
|
|
|
|
.It Fl q
|
|
|
|
When in
|
|
|
|
.Sq filter mode ,
|
|
|
|
don't print any errors
|
|
|
|
.
|
|
|
|
.It Fl p Ar session_id
|
|
|
|
Send the commands written on the standard input to session
|
|
|
|
.Ar session_id .
|
|
|
|
.
|
|
|
|
.It Fl c Ar session_id
|
|
|
|
Connect to the given session
|
|
|
|
.Ar session_id .
|
|
|
|
.
|
|
|
|
.It Fl s Ar session_id
|
|
|
|
Set the current session name to
|
|
|
|
.Ar session_id .
|
|
|
|
.
|
|
|
|
.It Fl ui Ar type
|
|
|
|
Select the user interface type, which can be
|
2019-11-16 11:27:06 +01:00
|
|
|
.Em terminal ,
|
2021-05-16 03:49:59 +02:00
|
|
|
.Em dummy ,
|
|
|
|
or
|
|
|
|
.Em json .
|
|
|
|
.
|
|
|
|
.It Fl clear
|
|
|
|
Remove sessions that were terminated in an incorrect state
|
|
|
|
.Pq e.g. after a crash .
|
|
|
|
.
|
|
|
|
.It Fl ro
|
|
|
|
Begin in
|
|
|
|
.Em readonly mode ,
|
|
|
|
all the buffers opened will not be written to disk.
|
|
|
|
.
|
|
|
|
.It Sy + Ns Ar line Ns Oo Sy \&: Ns Ar column Oc | Sy +:
|
|
|
|
Specify a target line and column for the first file.
|
|
|
|
When the plus sign is followed by only a colon, then the cursor is sent
|
|
|
|
to the last line of the file.
|
|
|
|
.
|
|
|
|
.It Ar file ...
|
|
|
|
One or more
|
|
|
|
.Ar file(s)
|
|
|
|
to edit.
|
|
|
|
.El
|
|
|
|
.
|
|
|
|
.Sh ENVIRONMENT
|
|
|
|
.Bl -tag -width 6n
|
|
|
|
.It Ev KAKOUNE_POSIX_SHELL
|
|
|
|
Overrides the POSIX shell used for
|
|
|
|
.Em %sh{...}
|
|
|
|
expansion, which is
|
|
|
|
.Pa /bin/sh
|
|
|
|
.Pq Xr sh 1
|
|
|
|
if unset.
|
|
|
|
.
|
|
|
|
.It Ev KAKOUNE_CONFIG_DIR
|
|
|
|
Overrides the location of the directory containing Kakoune user
|
|
|
|
configuration.
|
|
|
|
If unset,
|
|
|
|
.Pa $XDG_CONFIG_HOME/kak
|
|
|
|
is used.
|
|
|
|
.
|
|
|
|
.It Ev XDG_CONFIG_HOME
|
|
|
|
Path to the user's configuration directory.
|
|
|
|
If unset,
|
|
|
|
.Pa $HOME/.config
|
|
|
|
is used.
|
|
|
|
.
|
|
|
|
.It Ev XDG_RUNTIME_DIR
|
|
|
|
Path to the user's session's sockets.
|
|
|
|
If unset,
|
|
|
|
.Pa $TMPDIR/kakoune
|
|
|
|
is used.
|
|
|
|
.El
|
|
|
|
.
|
|
|
|
.Sh FILES
|
|
|
|
In the paths documented below,
|
|
|
|
.Pa <rtdir>
|
|
|
|
refers to the runtime directory, whose value is determined in relation
|
|
|
|
to the path to
|
|
|
|
.Nm Ap s
|
|
|
|
binary location:
|
|
|
|
.Pa <rtdir>
|
|
|
|
=
|
|
|
|
.Pa <path_to_kak_binary>/../share/kak .
|
|
|
|
.
|
|
|
|
.Pp
|
|
|
|
If not started with the
|
|
|
|
.Fl n
|
|
|
|
switch,
|
|
|
|
.Nm
|
|
|
|
will first load
|
|
|
|
.Pa <rtdir>/kakrc ,
|
|
|
|
which will in turn load the following additional files:
|
|
|
|
.
|
|
|
|
.Bl -bullet
|
|
|
|
.It
|
|
|
|
If the
|
|
|
|
.Pa $KAKOUNE_CONFIG_DIR/autoload
|
|
|
|
directory exists, recursively load every
|
|
|
|
.Pa *.kak
|
|
|
|
file in it, and its sub-directories.
|
|
|
|
.
|
|
|
|
.It
|
|
|
|
If it does not exist, fall back to the system-wide autoload directory in
|
|
|
|
.Pa <rtdir>/autoload ,
|
|
|
|
and recursively load all files in a similar way.
|
|
|
|
.
|
|
|
|
.It
|
|
|
|
.Pa <rtdir>/kakrc.local ,
|
|
|
|
if it exists; this is a user-defined system-wide configuration.
|
|
|
|
.
|
|
|
|
.It
|
|
|
|
.Pa $KAKOUNE_CONFIG_DIR/kakrc ,
|
|
|
|
if it exists; this is the user configuration.
|
|
|
|
.
|
|
|
|
.El
|
|
|
|
.
|
|
|
|
.Pp
|
|
|
|
Consequently, if the
|
|
|
|
.Pa $KAKOUNE_CONFIG_DIR/autoload
|
|
|
|
directory exists, only scripts stored within that directory will be
|
|
|
|
loaded \(em the built-in
|
|
|
|
.Pa *.kak
|
|
|
|
files will not be.
|
|
|
|
.
|
|
|
|
.Pp
|
|
|
|
Users who still want the built-in scripts to be loaded along their own
|
|
|
|
can create a symbolic link to
|
|
|
|
.Pa <rtdir>/autoload
|
|
|
|
.Pq or to individual scripts in it
|
|
|
|
in their user-configuration directory:
|
|
|
|
.
|
|
|
|
.Pp
|
|
|
|
.Dl ln -s \fI<rtdir>\fR/autoload "${XDG_CONFIG_HOME:-$HOME/.config}"/kak/autoload
|
|
|
|
.
|
|
|
|
.Sh EXAMPLES
|
|
|
|
.Bl -tag -width 6n
|
|
|
|
.It Edit a file:
|
|
|
|
.Nm
|
|
|
|
.Pa /path/to/file
|
|
|
|
.
|
|
|
|
.It Edit multiple files (multiple buffers will be created):
|
|
|
|
.Nm
|
|
|
|
.Pa ./file1.txt
|
|
|
|
.Pa /path/to/file2.c
|
|
|
|
.
|
|
|
|
.It Prepend a modeline that sets the tabstop to multiple files:
|
|
|
|
.Nm
|
|
|
|
.Fl f Qq ggO// kak: tabstop=8<esc>
|
|
|
|
.Pa *.c
|
|
|
|
.El
|
|
|
|
.
|
|
|
|
.Sh SEE ALSO
|
|
|
|
For the complete on-line documentation, use the
|
|
|
|
.Ic :doc
|
|
|
|
command after starting
|
|
|
|
.Nm .
|
|
|
|
.
|
|
|
|
.Pp
|
|
|
|
.Lk https://github.com/mawww/kakoune/wiki The Kakoune wiki .
|
|
|
|
.Pp
|
|
|
|
.Lk https://kakoune.org The main Kakoune web site .
|
|
|
|
.Pp
|
|
|
|
.Xr vi 1 ,
|
|
|
|
.Xr vim 1 ,
|
|
|
|
.Xr sam 1plan9 .
|
|
|
|
.
|
|
|
|
.Sh AUTHORS
|
|
|
|
.An Maxime Coste Aq Mt frrrwww@gmail.com
|
|
|
|
and many others.
|