Yazelix v3:带文件树的Helix!
概述
Yazelix是一个整合了yazi、zellij和helix的配置,因此得名,明白了吗?
- Zellij负责整体协调,yazi作为侧边栏,helix作为编辑器
- 你可以通过切换zellij布局来打开和关闭侧边栏(按
alt ]
和alt [
) - 所有与helix冲突的zellij快捷键都被重新映射(见底部列表)
- 在"侧边栏"中选中文件按回车时会调用helix,在zellij中新建一个窗格打开
- 如果以这种方式调用helix,退出helix时该窗格也会关闭
- 注意:建议从你的shell运行zellij(nushell用
nu -c "zellij -l welcome"
)。这样可以加载环境变量如EDITOR和HELIX_RUNTIME
- 这个项目包含我的zellij和yazi配置文件,几乎像个插件,但其实就是个高级配置!
基本布局
初始布局包含一个可用窗格(实际上有4个,包括标签栏、状态栏和侧边栏):
- 顶部是标签栏
- 底部是状态栏
- 左侧是Yazi窗格(宽度20%)作为侧边栏
- 右侧是空窗格
切换布局行为
- 通过切换布局来打开和关闭侧边栏(至少需要两个打开的窗格才能切换)。
- 新窗格会堆叠在左侧出现,但不会改变布局。
- 你可以根据需要在
layouts
中的KDL文件中添加更多切换布局。
两个或更多窗格打开且侧边栏打开:
两个或更多窗格打开且侧边栏关闭:
相比v2的改进
- 之前yazi配置文件在单独的仓库中,现在全部集成在这里!
- 感谢Zellij Discord中的Zykino提供这个建议!
- Yazi的维护者(真是荣幸!)添加了一个init.lua文件,使yazi的状态栏在小宽度下看起来非常好
- 项目有了名字!Yazelix。之前没有名字,那是个错误。
- 这个改进很棒:我重新映射了6个zellij快捷键以避免与helix冲突
- 使用
alt m
创建新窗格,其他的在zellij的状态栏中 - 这在
layouts/yazelix.kdl
文件中配置,如果你想改变什么的话
- 使用
设置说明
- 确保yazi、zellij和helix已安装并在路径中
- 删除(或重命名)你原来的
~/.config/zellij
文件夹,然后将此仓库克隆到你的~/.config
目录 - 你可以通过
zellij -l welcome
或直接zellij -l ~/.config/zellij/layouts/yazelix
打开此布局
- 我只是设置终端配置在启动时打开zellij,所以我从不离开zellij(我的alacritty文件在这里)
就这样,随时欢迎提出问题和PR 😉
为什么使用这个项目?
- 我认为主要优点之一是这个项目配置非常简单。没有shell脚本魔法
- 易于配置和个性化
- 我每天都在使用它,会根据需求进行更改,保持更新和改进
- 即使你不关心侧边栏,快捷键映射也可能有帮助
可能的改进
- 能够在只有一个窗格和侧边栏打开时关闭侧边栏(参见这里的问题)
- 完整Yazi窗格: 在另一个切换布局中集成完整的Yazi窗格,显示父目录和预览,而不仅仅是当前目录
- 这已经实现,但还有一些问题需要解决。
- 要测试,取消注释yazi_full切换布局和窗格,并将窗格约束增加一个
- 问题1:一些窗格在不应该交换时与其他窗格交换,比如侧边栏和普通窗格
- 问题2:你必须"走过"关闭的窗格,这不太好
- 非常感谢zellij的维护者和其他人在这方面的帮助
- 更高级的Helix集成: 目前,在Yazi中选择的文件会在Zellij中作为新窗格打开,运行Helix。如果能在Helix内部作为分割窗格或缓冲区打开会更好(尽管这可能很难实现)。
- 将仓库重命名为yazelix: 我尝试过,但使用自定义路径到布局文件夹时
~
或$HOME
无法工作(参见这里和这里的一些问题) - 为helix插件系统调整: 主要是将yazi变成一个完整窗格,取消侧边栏,因为helix有文件树插件
快捷键重映射
新Zellij快捷键 | 原快捷键 | 使用该原快捷键的Helix操作 | 重映射的Zellij操作 |
---|---|---|---|
Ctrl e | Ctrl o | jump_backward | SwitchToMode "Session" |
Ctrl y | Ctrl s | save_selection | SwitchToMode "Scroll" |
Alt w | Alt i | shrink_selection | MoveTab "Left" |
Alt q | Alt o | expand_selection | MoveTab "Right" |
Alt m | Alt n | select_next_sibling | NewPane |
Alt 2 | Ctrl b | move_page_up | SwitchToMode "Tmux" |
如果发现冲突,请提出issue。请记住,与tmux模式的兼容性不是这个项目的目标。
注意事项
- 我推荐使用alacritty作为你的终端
- 使用nushell,它是一个很棒的shell,快速、美观,而且是一种正式的编程语言。为什么不呢?
- 如果你用nvim测试并成功了,请告诉我(参见这里的问题)
- 特别感谢yazi和zellij的维护者(以及Discord成员)在一些问题上的帮助。也要感谢helix的贡献者们!
类似项目
- Shelix:Shelix旨在最大化利用Tmux作为IDE的潜力,增强高效的Helix编辑器的功能,围绕一个执行IDE相关操作的交互式菜单
- Helix-Wezterm:借助WezTerm和CLI工具将Helix转变为IDE
- Helix中使用Zellij的文件树选择器:Yazi可以用作文件选择器,在当前Helix实例(运行在Zellij会话中)中浏览和打开文件