Title : Kakoune editor cheatsheet
Author: Solène
Date  : 02 December 2020
Tags  : kakoune editor cheatsheet

This is a simple kakoune cheat sheet to help me (and readers) remember some very useful features.

To see kakoune in action.

=> https://asciinema.org/a/370168 Video showing various features in made with asciinema.
=> https://kakoune.org Official kakoune website (it has a video)

# Commands (in command mode)

## Select from START to END position.

Use `Z` to mark start and `alt+z i` to select unti current position.

## Add a vertical cursor (useful to mimic rectangle operation)

Type `C` to add a new cursor below your current cursor.

## Clear all cursors

Type `space` to remove all cursors except one.

## Pasting text verbatim (without completion/indentation)

You have to use "disable hook" command before inserting text. This is done with `\i` with `\` disabling hooks.

## Split selection into cursors

When you make a selection, you can use `s` and type a pattern, this will create a new cursor at the start of every pattern match.

This is useful to make replacements for words or characters.

A pattern can be a word, a letter, or even `^` to tell the beginning of each line.


# How-to

In kakoune there are often multiples way to do operations.

## Select multiples lines

### Multiples cursors

Go to first line, press `J` to create cursors below and press `X` to select whole lines of every cursors.

### Using start / end markers

Press `Z` on first line, and `alt+z i` on last line and then press `X` to select whole lines of every lines.

### Using selections

Press `X` until you reach the last line.

## Replace characters or words

Make a selection and type `|`, you are then asked for a shell command, you have to use `sed`.

Sed can be used, but you can also select the lines and split the selection to make a new cursor before each word and replace the content by typing it, using the `s` command.

## Format lines

For my blog I format paragraphs so lines are not longer than 80 characters. This can be done by selecting lines and run `fmt` using a pipe command. You can use other software if fmt doesn't please you.