kakoune
目录
- tl; dr
- 介绍
- 特征
- 屏幕截图
- 入门
- 建筑
- 安装
- 跑步
- 基本互动
- 命令
- 基本命令
- 多个命令
- 配置和自动加载
- 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中的主要概念是选择。选择是包容性的,有向的字符范围。选择有两个末端,锚和光标。
总是至少有一个选择,并且选择总是至少一个字符(在这种情况下,选择的锚和光标在同一字符上)。
正常模式
在正常模式下,密钥不会直接插入缓冲区中,而是正在编辑命令。这些命令提供了操纵选择本身或所选文本的方法。
插入模式
输入插入模式时,现在在每个选择的光标之前直接插入键。在插入模式下识别了一些其他键:
-
<enc>:离开插入模式
-
<backspace>:在光标之前删除字符
-
<del>:在光标下删除字符
-
<left>,<右>,<up>,<dound>:向给定方向移动光标
-
<home>:将光标转移到线开始
-
<end>:将光标移至线路结束
-
<cn>:选择下一个完成候选人
-
<cp>:选择先前的完成候选人
-
<cx>:显式插入完成查询,其次是:
-
F:明确的文件完成
-
W:明确的单词完成
-
L:明确的线完成
-
-
<co>:禁用此插入会话的自动完成
-
<cr>:插入下一个密钥给出的寄存器的内容
-
<cv>:直接将下一个击键插入缓冲区,而无需解释
-
<cu>:作为一个单一的撤消组,提交更改到现在
-
<a – ;>:逃到单个命令的正常模式
移动
有关扩展(附加到)当前选择的说明,请参见下面的附加说明,以便选择更多文本。
-
H:选择选择末端的角色
-
J:选择选择结束的角色
-
K:选择选择结尾的角色
-
l:选择右侧的角色
-
W:在选择右边选择单词和以下字符
-
B:选择前面的空格和选择左侧的单词
-
E:选择前面的空格和选择右边的单词
-
<a- [wbe]>:与[wbe]相同,但是选择单词而不是单词
-
F:选择给定字符的下一个出现(包括)
-
T:选择直到(不包括)给定字符的下一个出现
-
<a- [ft]>:与[ft]相同,但在另一个方向上
-
M:选择匹配角色
-
M:将选择扩展到匹配的角色
-
X:扩展选择以包含完整的线(包括线结束)
-
<ax>:仅包含完整行的修剪选择(不包括最后一条线)
-
%:选择整个缓冲区
-
<ah>:选择“开始”
-
<al>:选择线结束
-
/:搜索(选择下一场比赛)
-
<a – />:搜索(选择上一个匹配)
-
?:搜索(扩展到下一场比赛)
-
<a – ?>:搜索(扩展到上一个匹配)
-
N:选择下一场比赛
-
n:添加下一场比赛的新选择
-
<an>:选择以前的比赛
-
<an>:与以前的比赛添加新选择
-
Pageup,<cb>:滚动一页
-
pagedown,<cf>:向下滚动一页
-
<cu>:滚动半页
-
<cd>:向下滚动半页
-
):旋转选择(主要选择成为下一个)
-
(:向后旋转选择
-
;:减少选择光标的选择
-
<a – ;>:翻转选择的方向
-
<a – :>:确保选择位于正方向(锚点后的光标)
-
<a – 。>:重复最后一个对象或f/t选择命令。
-
_:修剪选择
单词是字母数字字符或下划线的序列,一个单词是一系列非空格字符。
附加
对于大多数移动命令,使用Shift会扩展当前选择,而不是更换它。
示例:
-
www选择3个连续的单词:第一个W选择一个单词,然后WW进一步扩展了两个单词。
-
f/ f/选择并包括第二/字符。
使用计数
大多数选择命令还支持命令本身之前输入的计数。
例如,3W选择3个连续的单词,3W选择了选择右侧的第三个单词。
禁用钩子
任何普通模式命令都可以用\\前缀为\\,该命令将禁用命令持续时间的挂钩执行(包括命令可能会移至的模式的持续时间,因此\\ i将禁用整个插入会话的挂钩)。
由于自动指示是根据钩子实现的,因此可以在粘贴文本时将其禁用。
更改
-
I:在每个选择之前输入插入模式
-
答:每次选择后输入插入模式
-
D:扬克并删除每个选择
-
C:扬克和删除每个选择并输入插入模式
-
。
-
<AD>:删除每个选择
-
<AC>:删除每个选择并输入插入模式
-
I:在每个选择开始启动时输入插入模式
-
答:在每个选择端线结束时输入插入模式
-
o:以一个(或给定的计数)在每个选择结束的下方输入插入模式
-
o:以一个(或给定的计数)在每个选择上方的一个(或给定计数)中输入插入模式
-
<AO>:在每个光标下方添加一个空线
-
<AO>:在每个光标上方添加一个空线
-
Y:Yank选择
-
P:粘贴每个选择结束后
-
P:在每次选择开始之前粘贴
-
<ap>:每个选择结束后的所有粘贴
-
<ap>:在每次选择开始之前粘贴全部
-
R:用洋基文本替换每个选择
-
<AR>:用每个Yanked文本替换每个选择
-
R:将每个字符替换为下一个字符
-
<AJ>:加入选定的行
-
<AJ>:连接选定的行并选择插入的空格代替线路断路
-
<a -_>:合并连续选择(也跨线路起作用)
-
<gt>(>):缩进选定的行
-
<a-gt>:缩进选定的行,包括空行
-
<lt>(<):选择行为
-
<a-lt>:选择的选择线,请勿删除不完整的凹痕(缩进为4时3个领先空间)
-
|:通过给定的外部过滤器程序将每个选择管输送,并用其输出替换选择。
-
<a- |>:通过给定的外部过滤器程序将每个选择管输送,而忽略其输出
-
!:在每个选择之前插入命令输出
-
<a – !>:每个选择后附加命令输出
-
U:撤消最后一个更改
-
<ck>:历史上向后移动
-
<au>:撤消选择更改
-
U:重做最后更改
-
<cj>:历史上的前进
-
<au>:重做选择更改
-
&:对齐选择,通过在选择的第一个字符之前插入空格来对齐选择的光标
-
<a – &>:复制凹痕,将主选择的缩进(或计数为计数(如果给出计数))
-
`:较低的案件
-
〜:到上衣
-
<a-`>:交换案例
-
@:将选定的选项卡转换为空格,使用Buffer TabStop选项或TabStop的计数参数。
-
<a – @>:将选定的空格转换为选项卡,使用buffer tabstop选项或TABSTOP的计数参数。
-
<a-)>:旋转选择内容(如果指定),则计数组选择,因此3 <a-)>旋转(1、2、3)和(4、5、6)独立地旋转(1、2、3)。
-
<a – (>:向后旋转选择内容
goto命令
以G开头的命令用于获得某些位置和或缓冲区。如果在击中G之前给出计数,则G将跳到给定的线。使用G会扩展选择而不是跳跃。
请参阅:Doc Keys goto commands。
查看命令
命令以V允许开始或滚动当前视图。使用V将锁定视图模式,直到<enc>击中
请参阅:Doc Keys View-Commands。
标记
当前的选择位置可以保存在寄存器中,并以后还原。
请参阅:DOC KEYS标记。
跳跃列表
某些命令,例如goto命令,缓冲区交换机或搜索命令,将上一个选择推向客户端的跳跃列表。
请参阅:Doc Keys跳列。
多选择
Kak从一开始就设计用于处理多种选择。获得多登录的一种方法是通过S键。
例如,要将“ roger”一词的所有出现更改为段落中的单词“ marcel”,这就是可以做的:
-
选择X然后足够J的段落
-
按S并输入罗杰,然后输入
-
现在,段落的选择被段落中的每个roger的多键选
-
按C和Marcel <enc>用Marcels代替Rogers
也可以使用S获得多启示,该S会根据输入的正则划分电流选择。要拆分逗号分开的列表,请使用s\’, *\’
kakoune支持的正则语法是基于Ecmascript脚本语法的,并在以下方面进行了描述:DOC REGEX。
S和S与 /共享搜索模式,因此进入一个空模式使用了最后一个模式。
为了方便起见,<AS>允许您在线路边界上拆分当前选择。
要清除多个选择,请使用。为了保持第n个选择,请使用n,然后使用n,以删除选择,请使用<a – >。
<ak>允许您输入正则态度,并仅保留包含此正则匹配的选择。使用<ak>您可以保持选择不包含匹配项。
c在列以跟随它们的行上重复选择。 <AC>执行相同的操作,但在前面的线上。
$允许您输入外壳命令并将每个选择管道输送到它。 Shell命令返回0的选择将保留,其他将被丢弃。
对象选择
对象是文本的特定部分,例如句子,段落,数字…… kakoune提供了许多键,使您可以选择各种文本对象。
请参阅:DOC KEYS对象选择。
命令
按下时:在正常模式下, kakoune将打开提示输入命令。
命令用于非编辑任务,例如打开缓冲区,编写当前的任务,退出等。
请参阅:DOC KEYS提示命令。
基本命令
有些命令采用感叹号(!),可用于强制执行命令(即退出修改后的缓冲区,必须使用命令q!)。
从水平空间开始的命令(例如空间)将不会保存在命令历史记录中。
-
CD [<Directory>]:如果未指定,将当前目录更改为<Directory>或主目录
-
doc <主题>:显示有关主题的文档。完成列表显示可用主题。
-
e [dit] [!] <文件名> [<line> [<column>]]:在文件上打开缓冲区,转到给定的行和列。如果文件已经打开,只需切换到此文件。使用编辑!强制重新加载。
-
w [rite] [!] [<文件名>]:将缓冲区写入<filename>或如果未给出文件名(如果没有给出)。如果文件是写保护的,则其权限会暂时更改,以保存缓冲区并在写入时恢复!使用命令。
-
w [rite] a [ll]:编写与文件关联的所有缓冲区。
-
Q [UIT] [!] [<出口状态>]:退出kakoune ,使用退出!即使剩下一些未保存的缓冲区,也要迫使退出。如果指定,客户端退出状态将设置为<退出状态>。
-
w [a] q [!] [<exit状态>]:写当前的缓冲区(或使用WAQ时所有缓冲区)并退出。如果指定,客户端退出状态将设置为<退出状态>。
-
杀死[!]:终止当前会话,所有客户端以及服务器,使用kill!忽略未保存的缓冲区
-
b [uffer] <名称>:切换到缓冲区<Name>
-
b [uffer] n [ext]:切换到下一个缓冲区
-
b [uffer] p [rev]:切换到上一个缓冲区
-
D [el] b [uf] [!] [<NAME>]:删除缓冲区<Name>
-
源<文件名>:在<fileName>中执行命令>
-
colorscheme <名称>:加载名为Colorscheme。
-
重命名 – 客户<名称>:设置当前客户端名称
-
重命名 – 缓冲器<名称>:设置当前缓冲区名称
-
Rename-Session <名称>:设置当前会话名称
-
echo [options] <text>:在状态行中显示<text>,以及以下选项:
-
– 标记:在<text>中展开标记字符串
-
-debug:将给定文本打印到 *调试 *缓冲区
-
-
NOP:什么也不做,但是与其他所有命令一样,可以评估论点。因此,可以使用NOP来执行Shell命令,同时确保其输出不会由Kak解释。 :%sh {echo echo tchou}将在kakoune中回声,而:nop%sh {echo echo echo tchou}不会,但两者都将执行shell命令。
-
FAIL <文本>:提出错误,使用<text>作为其描述
多个命令
多个命令可以通过新线路或分号分隔,因为必须用\\ \\ \\;被认为是字面的半殖民论点。
字符串语法和扩展
值,选项和外壳上下文可以在字符串中插值。
请参阅: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插入模式完成。
逃到正常模式
从插入模式下,按<a – ;>允许您执行单个普通模式命令。这提供了一些优势:
-
选择未修改:使用<enc>离开插入模式时,选择可以更改,例如,当使用一个光标输入插入模式时,光标将返回一个char。或者,如果在线末端,光标将向左返回(如果可能的话)。
-
模式是嵌套的:这意味着普通模式可以输入提示(使用::)或任何其他模式(例如:on-in-in-in-in-in-on-on-in-hey或:菜单),之后这些模式将返回插入模式。
此功能是针对脚本/宏量身定制的,因为它提供了比使用<enc>离开插入模式,执行正常模式命令并输入后背插入模式(使用哪个绑定?)更可预测的行为。
请参阅:DOC模式。
荧光笔
通过荧光笔对显示的文本进行操纵,例如语法色彩和包装。
请参阅:DOC荧光笔。
钩子
当某些事件带有钩子时,可以注册命令以执行。
请参阅:Doc Hooks。
密钥映射
可以通过映射进行自定义密钥快捷方式。
请参阅:DOC映射。
定义命令和别名
可以使用:Define-Command创建新命令。
请参阅:DOC命令声明新命令。
可以根据范围的范围给予其他简短名称:别名。
请参阅:DOC命令别名。
一些辅助命令可用于定义复合命令。
请参阅:DOC命令助手。
FIFO缓冲区
FIFO缓冲区非常有用,对于在kakoune逐渐显示其结果时,运行某些命令非常有用。
请参阅:DOC缓冲FIFO-BUFFER。
学分
感谢P0nce设计了kakoune徽标。
感谢所有帮助该项目前进的贡献者!
