kakoune

C/C++ 2025-08-06

kakoune

目录
  • tl; dr
  • 介绍
    • 特征
    • 屏幕截图
  • 入门
    • 建筑
    • 安装
    • 跑步
  • 基本互动
    • 选择
    • 正常模式
    • 插入模式
    • 移动
    • 附加
    • 使用计数
    • 禁用钩子
    • 更改
    • goto命令
    • 查看命令
    • 标记
    • 跳跃列表
    • 多选择
    • 对象选择
  • 命令
    • 基本命令
    • 多个命令
  • 配置和自动加载
    • kakrc
    • 配色方案
  • 选项
  • 高级主题
    • 面孔
    • 寄存器
    • 搜索选择
    • 正则语法
    • 执行和评估
    • 插入模式完成
    • 逃到正常模式
    • 荧光笔
    • 钩子
    • 密钥映射
    • 定义命令和别名
    • FIFO缓冲区
  • 学分

tl; dr

https://kako*une*.*org

模态编辑器-更快的键击-多个选择-正交设计

git克隆https://github*.c**om/mawww/kakoune.git
CD kakoune
制作
./src/kak

请参阅https://git*h*ub.*com/mawww/golf for Kakoune解决方案,以解决Vimgolf挑战,定期击败最佳的VIM解决方案。

有关kakoune的理念和设计的更多信息,请参见设计文档。

介绍

kakoune是代码编辑器,它实现了VI的“击键作为文本编辑语言”模型。由于它也是模态编辑器,因此与VIM编辑器有点相似(之后kakoune最初受到启发)。

kakoune可以以两种模式运行:正常插入。在插入模式下,将键直接插入当前缓冲区。在正常模式下,密钥用于操纵当前选择并输入插入模式。

kakoune非常关注互动性。大多数命令都提供直接和增量的结果,同时在击键计数方面与VIM竞争。

kakoune从事选择的选择,包括字符的包容性范围。选择具有锚和光标。大多数命令移动两者,除了扩展选择时,锚固字符保持固定并且光标移动。

请参阅https://vim**eo.c*om/82711574

加入我们的利比拉irc# kakoune

特征

  • 多个选择作为互动的中心方式

  • 强大的选择操纵原语

    • 在当前选择中选择所有正则匹配

    • 保持包含/不包含给定正则匹配的选择

    • 用正则分配电流选择

    • 文本对象(段落,句子,可嵌套块)

  • 强大的文本操纵原始图

    • 对齐选择

    • 旋转选择内容

    • 案例操纵

    • 缩进

    • 将每个选择输送到外部过滤器

  • 客户端服务器体系结构

    • 同一编辑会话中的多个客户

    • 使用TMUX,Zellij,Kitty,Wezterm或您的X11/Wayland Window Manager来管理与同一会话连接的客户来管理拆分/窗帘

  • 与外部程序的简单互动

  • 自动上下文帮助

  • 输入完成时自动

  • 钩子

  • 语法突出显示

    • 支持同一缓冲区中的多种语言

    • 在不同窗口中突出显示缓冲区

屏幕截图

图1。i3中的kakoune
图2。TMUX中的kakoune

入门

建筑

kakoune的依赖性是:

  • A c ++ 20符合编译器(GCC> = 10.3或clang> = 11)及其关联的C ++标准库(libstdc ++> = 10或libc ++)

要构建,只需在根目录中键入制作即可。要生成人页面,请在根目录中键入“制作人”

kakoune可以建在Linux,MacOS和Cygwin上。由于kakoune严重依赖于Unix型环境,因此没有计划本机Windows版本。

安装

为了在系统上安装KAK ,而不是直接从其源目录中运行它,请键入Make Install 。您可以在需要时指定前缀和destdir。

提示
自制(MacOS)或Linuxbrew
酿造安装kakoune 
提示
Macports(MacOS)
 sudo端口自我update
sudo端口安装kakoune 
提示
软呢帽支持版本和生皮
DNF安装kakoune 
提示
Fedora Daily Build

使用COPR存储库。

 DNF COPR启用Jkonecny/ kakoune
DNF安装kakoune 
提示
RHEL/CENTOS 8

可以在EPEL8存储库中找到kakoune 。

 DNF安装kakoune 
提示
Arch Linux

kakoune在存储库中发现。

 Pacman -s kakoune 
提示
Gentoo

kakoune在Portage中被发现为应用程序/ kakoune 。

出现的kakoune

可以使用安装和特定文档。

提示
Exherbo
 Cave Resolve -X存储库/MAWWW
洞穴分辨-x kakoune 
提示
Opensuse

kakoune可以在存储库中找到。

 sudo zypper安装kakoune 
提示
Ubuntu

可以在Ubuntu存储库中找到kakoune 。

 sudo apt安装kakoune

如果您想在20.04或更早的时间内从源中编译,则必须强迫构建使用GCC 10,这不是默认值。另外,请确保您的路径中有.Local/bin,以便在安装后可以使用KAK。

 git克隆https://github*.c**om/mawww/kakoune.git && cd kakoune /src
cxx = g ++ -10
使前缀= $ home/.Local安装
提示
Debian

kakoune可以在Debian 9(拉伸)和后来的版本中找到。

 sudo apt安装kakoune 
提示
freebsd

kakoune可在官方港口树中作为编辑/ kakoune提供。

还提供二进制包,可以安装

PKG安装kakoune 
提示
OpenBSD

建立在OpenBSD 6.7 AMD64上。

 #pkg_add git gmake
#GIT克隆https://githu***b.com/mawww/kakoune
#CD kakoune
#导出cxx = clang ++
#gmake安装

kakoune可在6.7电流端口树中作为编辑/ kakoune提供

还可以使用二进制包装,可用于 - 流动快照,可以随附

#PKG_ADD kakoune

支持插件的支持。

 #PKG_ADD DASH
$导出kakoune _posix_shell =/usr/local/bin/dash
$ kak 
提示
Solus

kakoune在Solus稳定存储库中可用。

可以安装

EOPKG安装kakoune 
提示
空白

kakoune可在存储库中找到。

可以安装

XBPS安装-S kakoune 
提示
termux

kakoune可在存储库中找到。

可以安装

PKG安装kakoune 
提示
尼克斯
nix -env -ia nixpkgs。 kakoune 
提示
PKGSRC(NetBSD,Smartos,MacOS,Linux等)
 pkg_add kakoune 

跑步

运行Kak在本地航站楼与客户端发起了一个新的Kak会话。运行kak -help以发现有效的命令行标志。

配置

有两个包含kakoune脚本的目录:

  • 运行时:相对于Kak Binary包含使用kakoune安装的系统脚本,位于../share/kak/中。

  • USERCONF:位于$ XDG_CONFIG_HOME/KAK/中,如果未设置包含用户配置的$ XDG_CONFIG_HOME,它将退回到$ home/.config/kak/如果未设置$ xdg_config_home。

除非指定-n,否则kakoune将在$ {Runtime}/kakrc相对于Kak二进制中加载其启动脚本。此启动脚本负责加载用户配置。

首先, kakoune将递归搜索自动加载目录中的.kak文件。它将首先在$ {USERCONF}/AUTOLOAD上查找一个自动加载目录,如果不存在,则会后备到$ {Runtime}/Autoload。

加载所有这些文件后, kakoune将尝试源$ {runtime}/kakrc.local,该文件有望包含提供的配置。

最后,用户配置将从$ {userconf}/kakrc加载。

笔记
如果您在$ {USERCONF}/autoLoad中创建一个用户自动加载目录,则系统以$ {Runtime}/AutoLoad为单位,将不再加载。您可以在$ {USERCONF}/autoLoad中向其添加符号链接(或单个脚本),以保持加载系统脚本。

基本互动

选择

kakoune中的主要概念是选择。选择是包容性的,有向的字符范围。选择有两个末端,锚和光标。

总是至少有一个选择,并且选择总是至少一个字符(在这种情况下,选择的锚和光标在同一字符上)。

正常模式

在正常模式下,密钥不会直接插入缓冲区中,而是正在编辑命令。这些命令提供了操纵选择本身或所选文本的方法。

插入模式

输入插入模式时,现在在每个选择的光标之前直接插入键。在插入模式下识别了一些其他键:

  • :离开插入模式

  • :在光标之前删除字符

  • :在光标下删除字符

  • ,<右>,:向给定方向移动光标

  • :将光标转移到线开始

  • :将光标移至线路结束

  • :选择下一个完成候选人

  • :选择先前的完成候选人

  • :显式插入完成查询,其次是:

    • F:明确的文件完成

    • W:明确的单词完成

    • L:明确的线完成

  • :禁用此插入会话的自动完成

  • :插入下一个密钥给出的寄存器的内容

  • :直接将下一个击键插入缓冲区,而无需解释

  • :作为一个单一的撤消组,提交更改到现在

  • :逃到单个命令的正常模式

移动

有关扩展(附加到)当前选择的说明,请参见下面的附加说明,以便选择更多文本。

单词是字母数字字符或下划线的序列,一个单词是一系列非空格字符。

附加

对于大多数移动命令,使用Shift会扩展当前选择,而不是更换它。

示例:

  • www选择3个连续的单词:第一个W选择一个单词,然后WW进一步扩展了两个单词。

  • f/ f/选择并包括第二/字符。

使用计数

大多数选择命令还支持命令本身之前输入的计数。

例如,3W选择3个连续的单词,3W选择了选择右侧的第三个单词。

禁用钩子

任何普通模式命令都可以用前缀为,该命令将禁用命令持续时间的挂钩执行(包括命令可能会移至的模式的持续时间,因此 i将禁用整个插入会话的挂钩)。

由于自动指示是根据钩子实现的,因此可以在粘贴文本时将其禁用。

更改

goto命令

以G开头的命令用于获得某些位置和或缓冲区。如果在击中G之前给出计数,则G将跳到给定的线。使用G会扩展选择而不是跳跃。

请参阅:Doc Keys goto commands。

查看命令

命令以V允许开始或滚动当前视图。使用V将锁定视图模式,直到击中

请参阅:Doc Keys View-Commands。

标记

当前的选择位置可以保存在寄存器中,并以后还原。

请参阅:DOC KEYS标记。

跳跃列表

某些命令,例如goto命令,缓冲区交换机或搜索命令,将上一个选择推向客户端的跳跃列表。

请参阅:Doc Keys跳列。

多选择

Kak从一开始就设计用于处理多种选择。获得多登录的一种方法是通过S键。

例如,要将“ roger”一词的所有出现更改为段落中的单词“ marcel”,这就是可以做的:

  • 选择X然后足够J的段落

  • 按S并输入罗杰,然后输入

  • 现在,段落的选择被段落中的每个roger的多键选

  • 按C和Marcel 用Marcels代替Rogers

也可以使用S获得多启示,该S会根据输入的正则划分电流选择。要拆分逗号分开的列表,请使用s', *'

kakoune支持的正则语法是基于Ecmascript脚本语法的,并在以下方面进行了描述:DOC REGEX。

S和S与 /共享搜索模式,因此进入一个空模式使用了最后一个模式。

为了方便起见,允许您在线路边界上拆分当前选择。

允许您输入正则态度,并仅保留包含此正则匹配的选择。使用您可以保持选择不包含匹配项。

c在列以跟随它们的行上重复选择。 执行相同的操作,但在前面的线上。

$允许您输入外壳命令并将每个选择管道输送到它。 Shell命令返回0的选择将保留,其他将被丢弃。

对象选择

对象是文本的特定部分,例如句子,段落,数字…… kakoune提供了许多键,使您可以选择各种文本对象。

请参阅:DOC KEYS对象选择。

命令

按下时:在正常模式下, kakoune将打开提示输入命令。

命令用于非编辑任务,例如打开缓冲区,编写当前的任务,退出等。

请参阅:DOC KEYS提示命令。

基本命令

有些命令采用感叹号(!),可用于强制执行命令(即退出修改后的缓冲区,必须使用命令q!)。

从水平空间开始的命令(例如空间)将不会保存在命令历史记录中。

  • CD []:如果未指定,将当前目录更改为或主目录

  • doc <主题>:显示有关主题的文档。完成列表显示可用主题。

  • e [dit] [!] <文件名> [ []]:在文件上打开缓冲区,转到给定的行和列。如果文件已经打开,只需切换到此文件。使用编辑!强制重新加载。

  • w [rite] [!] [<文件名>]:将缓冲区写入或如果未给出文件名(如果没有给出)。如果文件是写保护的,则其权限会暂时更改,以保存缓冲区并在写入时恢复!使用命令。

  • w [rite] a [ll]:编写与文件关联的所有缓冲区。

  • Q [UIT] [!] [<出口状态>]:退出kakoune ,使用退出!即使剩下一些未保存的缓冲区,也要迫使退出。如果指定,客户端退出状态将设置为<退出状态>。

  • w [a] q [!] []:写当前的缓冲区(或使用WAQ时所有缓冲区)并退出。如果指定,客户端退出状态将设置为<退出状态>。

  • 杀死[!]:终止当前会话,所有客户端以及服务器,使用kill!忽略未保存的缓冲区

  • b [uffer] <名称>:切换到缓冲区

  • b [uffer] n [ext]:切换到下一个缓冲区

  • b [uffer] p [rev]:切换到上一个缓冲区

  • D [el] b [uf] [!] []:删除缓冲区

  • 源<文件名>:在中执行命令>

  • colorscheme <名称>:加载名为Colorscheme。

  • 重命名 - 客户<名称>:设置当前客户端名称

  • 重命名 - 缓冲器<名称>:设置当前缓冲区名称

  • Rename-Session <名称>:设置当前会话名称

  • echo [options] :在状态行中显示,以及以下选项:

    • - 标记:在中展开标记字符串

    • -debug:将给定文本打印到 *调试 *缓冲区

  • NOP:什么也不做,但是与其他所有命令一样,可以评估论点。因此,可以使用NOP来执行Shell命令,同时确保其输出不会由Kak解释。 :%sh {echo echo tchou}将在kakoune中回声,而:nop%sh {echo echo echo tchou}不会,但两者都将执行shell命令。

  • FAIL <文本>:提出错误,使用作为其描述

多个命令

多个命令可以通过新线路或分号分隔,因为必须用 ;被认为是字面的半殖民论点。

字符串语法和扩展

值,选项和外壳上下文可以在字符串中插值。

请参阅:DOC扩展。

配置和自动加载

kakrc

如果未使用-n开关启动, kakoune将相对于KAK二进制来源代码。

如果存在$ XDG_CONFIG_HOME/KAK/AUTOLOAD DIRECTORY,请加载每个 *KAK文件,然后递归加载任何子目录。

如果不存在,则返回到../share/kak/autoload/的网站宽自动加载目录。

之后,如果存在,请源$ xdg_config_home/kak/kakrc文件,该文件应用于用户配置。

为了继续使用本地自动加载目录继续自动加载网站范围的文件,只需将符号链接添加到../share/kak/autoload/添加到您的本地自动加载目录中即可。

配色方案

kakoune船上装有一些配色方案,这些配色方案已安装到../share/kak/colors/。如果出现$ xdg_config_home/kak/colors/,则内置命令Colorscheme将为这些配色方案提供完成。如果在用户空间中重复了一个方案,则需要优先。

选项

kakoune可以存储命名和键入的值,这些值既可以用来自定义核心编辑器行为,又可以保留扩展脚本使用的数据。

请参阅:DOC选项。

高级主题

面孔

面孔描述了字符在屏幕上的显示:颜色,粗体,斜体…

请参阅:Doc面。

寄存器

寄存器被命名为文本列表。它们用于各种目的,例如存储最后的划空文本或与选择相关的捕获组。

请参阅:DOC寄存器。

kakoune可以记录并重播一系列钥匙按压。

请参阅:Doc Keys Macros。

搜索选择

使用 *键,您可以将搜索模式设置为当前选择。请参阅:Doc Keys搜索。

正则语法

kakoune Regex语法基于Ecmascript语法(ECMA-262标准)。它总是以Unicode Codepoint序列而不是字节上的方式运行。

请参阅:DOC REGEX。

执行和评估

执行键和评估命令对于在非交互式上下文中的脚本很有用。

请参阅:Doc execeval。

插入模式完成

kakoune可以在插入文本时提出完成:文件名,单词,行…

请参阅:DOC KEYS插入模式完成。

荧光笔

通过荧光笔对显示的文本进行操纵,例如语法色彩和包装。

请参阅:DOC荧光笔。

钩子

当某些事件带有钩子时,可以注册命令以执行。

请参阅:Doc Hooks。

密钥映射

可以通过映射进行自定义密钥快捷方式。

请参阅:DOC映射。

定义命令和别名

可以使用:Define-Command创建新命令。

请参阅:DOC命令声明新命令。

可以根据范围的范围给予其他简短名称:别名。

请参阅:DOC命令别名。

一些辅助命令可用于定义复合命令。

请参阅:DOC命令助手。

FIFO缓冲区

FIFO缓冲区非常有用,对于在kakoune逐渐显示其结果时,运行某些命令非常有用。

请参阅:DOC缓冲FIFO-BUFFER。

学分

感谢P0nce设计了kakoune徽标。

感谢所有帮助该项目前进的贡献者!

下载源码

通过命令行克隆项目:

git clone https://github.com/mawww/kakoune.git