5个版本
0.2.2 | 2021年2月14日 |
---|---|
0.2.1 | 2020年10月6日 |
0.2.0 | 2020年4月24日 |
0.1.2 | 2020年2月17日 |
#74 in 文本编辑器
77KB
1K SLoC
吉比:在 ≤1024 行代码中编写的 Rust 文本编辑器
一个可配置的文本编辑器,支持 UTF-8,增量搜索,语法高亮,行号等功能,用不到 1024 行 Rust 代码实现1,依赖最少。
吉比兼容 Linux、macOS 和 Windows 102。
本项目灵感来源于 kilo
,一个用 C 语言编写的文本编辑器。以下为更多功能的对比列表。
欢迎贡献!请注意保持代码行数在 1024 行以内...
1.: 使用 count_loc.sh
计算
2.: 吉比需要终端支持 ANSI 转义序列。Windows 10 版本 1703 (创作者更新,2017 年 4 月) 及以上版本支持。
目录
安装
使用 cargo
您可以使用 cargo
安装吉比
cargo install kibi
语法高亮配置文件位于此仓库的 syntax.d
目录中。它们需要放置在配置/语法高亮部分中提到的配置目录之一。
例如
cd ~/repos
git clone https://github.com/ilai-deutel/kibi.git
mkdir -p ~/.local/share/kibi/
ln -sr ./kibi/syntax.d ~/.local/share/kibi/syntax.d
Arch 用户仓库 (Arch Linux)
在 AUR 上有 2 个软件包可用: kibi
和 kibi-git
。
安装说明
-
使用 AUR 辅助工具安装,例如使用
yay
yay -Syu kibi # or yay -Syu kibi-git
-
手动安装使用
makepkg
git clone https://aur.archlinux.org/kibi.git # or git clone https://aur.archlinux.org/kibi-git.git cd kibi makepkg -si
Android (通过 Termux)
Kibi 以 Termux 软件包 的形式提供。
Fedora/CentOS
该软件包在 COPR 中可用,地址为 atim/kibi
.
安装说明
sudo dnf copr enable atim/kibi -y
sudo dnf install kibi
NetBSD
Kibi 可从 官方仓库 获取。
安装说明
使用
pkgin install kibi
或从源码构建
cd /usr/pkgsrc/editors/kibi
make install
使用方法
kibi # Start an new text buffer
kibi <file path> # Open a file
kibi --version # Print version information and exit
键盘快捷键
键盘快捷键 | 描述 |
---|---|
Ctrl-F | 增量搜索;使用箭头导航 |
Ctrl-S | 将缓冲区保存到当前文件,或指定文件路径 |
Ctrl-G | 跳转到 <行号>[:<列号>] 位置 |
Ctrl-Q | 退出 |
Ctrl-D | 复制当前行 |
Ctrl-E | 执行外部命令并将输出粘贴 |
配置
全局配置
Kibi 可以使用配置文件进行配置。它必须遵循此格式
# The size of a tab. Must be > 0.
tab_stop=4
# The number of confirmations needed before quitting, when changes have been
# made since the file was last changed.
quit_times=2
# The duration for which messages are shown in the status bar, in seconds.
message_duration=3
# Whether to show line numbers.
show_line_numbers=true
以下描述了这些文件的位置。
Linux / macOS
kibi 遵循 XDG 基础目录规范
- 如果定义了环境变量
$XDG_CONFIG_HOME
,则用户级别的配置文件位于$XDG_CONFIG_HOME/kibi/config.ini
,否则位于~/.config/kibi/config.ini
。 - 如果定义了环境变量
$XDG_CONFIG_DIRS
,则系统级别的配置文件位于$XDG_CONFIG_DIRS/kibi/config.ini
,否则位于/etc/kibi/config.ini
或/etc/xdg/kibi/config.ini
。
Windows
配置文件位于 %APPDATA%\Kibi\config.ini
。
语法高亮
可以使用遵循此格式的 INI 文件配置语法高亮
### /usr/share/kibi/syntax.d/rust.ini ###
# Kibi syntax highlighting configuration for Rust
name=Rust
extensions=rs
highlight_numbers=true
singleline_string_quotes="
singleline_comment_start=//
multiline_comment_delims=/*, */
; In Rust, the multi-line string delimiter is the same as the single-line string
; delimiter
multiline_string_delim="
; https://doc.rust-lang.org/book/appendix-01-keywords.html
keywords_1=abstract, as, async, await, become, box, break, const, continue, crate, do, dyn, else, enum, extern, false, final, fn, for, if, impl, in, let, loop, macro, match, mod, move, mut, override, priv, pub, ref, return, self, Self, static, struct, super, trait, true, try, type, typeof, unsafe, unsized, use, virtual, where, while, yield
keywords_2=i8, i16, i32, i64, i128, isize, u8, u16, u32, u36, u128, usize, f32, f64, bool, char, str
以下描述了这些文件的位置。
Linux / macOS
kibi 遵循 XDG 基础目录规范
- 如果定义了环境变量
$XDG_DATA_HOME
,则用户级别的语法高亮配置文件位于$XDG_DATA_HOME/kibi/syntax.d/<文件名>.ini
,否则位于~/.local/share/kibi/syntax.d/<file_name>.ini
。 - 系统范围内的语法高亮配置文件可以位于
$XDG_DATA_DIRS/kibi/syntax.d/<file_name>.ini
,如果环境变量$XDG_DATA_DIRS
被定义,否则位于/usr/local/share/kibi/syntax.d/<file_name>.ini
或/usr/share/kibi/syntax.d/<file_name>.ini
。
Windows
语法高亮配置文件可以位于 %APPDATA%\Kibi\syntax.d\<file_name>.ini
。
与 kilo
的比较
本项目受到 Salvatore Sanfilippo (antirez) 用 C 语言编写的文本编辑器 kilo
以及 C 语言教程 此教程 的启发。
kibi
提供了额外的功能
- 支持 UTF-8 字符
- 与 Windows 的兼容性
- 跳转到指定行/列的命令
- 处理窗口大小调整(仅限 UNIX)
- 解析配置文件:全局编辑器配置,特定语言的语法高亮配置
- 在屏幕左侧显示行号;在状态栏中显示文件大小
- 语法高亮:多行字符串
- 当没有提供文件名时,显示 另存为 提示
- 复制当前行的命令
- 能够从编辑器执行外部命令并将输出粘贴
- 内存安全,归功于 Rust!
- 许多错误修复
依赖项
此项目必须保持小巧,因此使用高级依赖项,如 ncurses
、toml
或 ansi-escapes
将被视为作弊。
以下依赖项提供了系统调用的包装。
- 在 UNIX 系统(Linux、macOS)上
libc
- 在 Windows 上
winapi
winapi-util
此外,unicode-width
用于确定 Unicode 字符的显示宽度。不幸的是,没有办法解决这个问题:Unicode 字符宽度表有 230 行长。
为什么选择吉比?
- 将
kilo
的源代码从 C 转换为 Rust 并尝试使其符合 Rust 的风格很有趣 - 在 1024 行的限制下实现新功能是一个很好的挑战
- 最重要的是,我想学习 Rust,这是一个很好的开始项目(感谢 Reddit 的想法)
贡献者
本项目遵循 all-contributors 规范(emoji 键)。欢迎任何形式的贡献!
Ilaï Deutel 💻 🤔 🚇 📦 💠 |
Vishal Anand 🐛 |
Gurjus Bhasin 🤔 |
Libin Dang 💻 🐛 |
Isaac Andrade 🤔 |
frjol 🐛 |
Artem Polishchuk 📦 |
Marco A L Barbosa 💻 |
pin 📦 |
Uniminin 💠 |
Woomy4680-exe 🐛 |
许可证
本项目许可协议为以下之一:
任选其一。
贡献
除非您明确说明,否则您提交给Kibi的任何有意贡献都将采用上述双许可协议,不附加任何额外条款或条件。
依赖项
~0.3–7.5MB
~38K SLoC