从 Helix 中拆分 Konsole 视图以运行工具
摘要
作者描述如何创建一个 shell 脚本,以自动拆分 Konsole 终端视图并直接从 Helix 编辑器运行像 gitu 这样的工具,从而改善工作流自动化。
<p><a href="https://lobste.rs/s/k7vttz/splitting_konsole_views_from_helix_run">评论</a></p>
查看缓存全文
缓存时间: 2026/05/25 21:12
# 从 Helix 拆分 Konsole 视图以运行工具 | AksDev
Source: https://akselmo.dev/posts/splitting-konsole-views-from-helix-to-run-tools/
*发布于 2026-05-25 (https://akselmo.dev/posts/splitting-konsole-views-from-helix-to-run-tools/)*
最近我一直在摆弄 [Helix](https://helix-editor.com/) 编辑器,因为我挺喜欢它的。
它是个有趣的小编辑器。推荐给喜欢模态编辑的人。我不知道它是否最终会取代 [Kate](https://kate-editor.org/) 编辑器对我而言的地位,但为了乐趣,我正在挑战自己尝试新工具。
在 Helix 中,我使用了一个名为 [gitu](https://github.com/altsem/gitu/) 的 git 工具,它操作起来相当快速简便。不过处理更复杂的任务时,我仍然使用 [lazygit](https://github.com/jesseduffield/lazygit/)。
对我来说主要痛点是如何在 Helix 内部使用这些工具(如 gitu)。Lazygit 可以通过一些 [技巧](https://github.com/helix-editor/helix/discussions/12045) 实现,但我一直不太满意。
我也尝试过 [Zellij](https://zellij.dev/) 作为终端复用器,在两个分屏之间运行命令等。但要让其按我的想法工作有点繁琐,因为 Zellij 有很多我永远用不上的功能。这还导致我的手指打结,因为需要记住各种快捷键。不适合我。
在 [Konsole](https://apps.kde.org/konsole/) 终端中,有一个快捷键可以轻松地将视图自动拆分为合适的大小。我经常使用它。但因为我懒,每次都得按快捷键,切换到另一个分屏,输入其他工具的命令,操作完再关闭命令。我想要更自动化的方式。
我发现 Konsole 可以设置为允许通过 dbus 命令进行脚本控制:[Konsole 脚本](https://docs.kde.org/stable_kf6/en/konsole/konsole/scripting.html)。
于是我写了一个小型的 shell 脚本,放在我的路径中:[konsole-split.sh](https://git.sr.ht/~akselmo/dotfiles/tree/main/item/konsole/konsole-split.sh)!
它的功能如下:
```
#!/usr/bin/env bash
# 在 Konsole 设置中,确保:
# - 禁用“所有 konsole 窗口在单个进程中运行”
# - 启用“启用安全敏感部分”
if [ $# -eq 0 ]; then
echo "缺少命令!"
exit
fi
# 自动拆分视图。因为我们只有一个进程,可以使用 MainWindow_1
qdbus6 "$KONSOLE_DBUS_SERVICE" /konsole/MainWindow_1 org.kde.KMainWindow.activateAction split-view-auto >/dev/tty
# 获取当前终端窗口的会话
CURRENTSESSION=$(qdbus6 "$KONSOLE_DBUS_SERVICE" "$KONSOLE_DBUS_WINDOW" org.kde.konsole.Window.currentSession) >/dev/tty
# 在该会话中运行给定的命令参数
qdbus6 "$KONSOLE_DBUS_SERVICE" /Sessions/"${CURRENTSESSION}" org.kde.konsole.Session.runCommand "$@" >/dev/tty
```
非常简单,但现在我可以在 Helix 配置中这样使用它:
```
[keys.normal."+"]
b = ":sh git log -L %{cursor_line},+1:%{buffer_name}" # 这是一个针对行的 git log,也很有用,有点像 git blame
s = ":sh konsole-split.sh 'exec scooter'" # Scooter 是一个多文件搜索替换工具,非常方便
g = ":sh konsole-split.sh 'exec gitu'"
```
实际操作中,发生的事情是:
1. 在 Helix 中,我按下 `+`
2. 然后选择命令,这里以 `gitu` 为例,按 `g`
3. Konsole 自动拆分为一个合适的大小
4. 它接着获取新分屏的会话
5. 并使用 `exec` 运行 `gitu` 命令 —— 因此如果执行停止/失败,分屏会立即关闭
这非常符合我的需求,我惊讶于创建这样一个功能竟然如此简单。我认为命令无法工作时的错误处理可以更好,但目前这样对我已经够用了。
如果你有类似的做法或者改进的想法,欢迎告诉我! :)
相似文章
@RoundtableSpace:当开发者把终端配置做成艺术品时,就成了 NEOVIM + HERD + GITU + GHOSTTY + KEEBY 这副模样……
精选终端组合(Neovim、Herd、Gitu、Ghostty、Keeby)展示,将开发环境美学化的潮流。
@hellokillian:受 @karpathy 启发,打造本地 Markdown 编辑器 + 终端代理工作区
一位开发者发布了一款集成终端代理工作区的本地 Markdown 编辑器,灵感源自 Andrej Karpathy。
@elonmusk:使用Grok Build的技巧
由Yun-Ta Tsai分享的关于使用Grok Build通过SSH和tmux会话管理多台机器的技巧。
@Suryanshti777: https://x.com/Suryanshti777/status/2056764492093194257
九个强大插件和工具的全面概述,可将 Claude Code 转变为自主工程系统,实现更快的调试、代码库搜索、UI 生成、数据库查询和终端访问。
@vimtor: 我已经爱上了 @manaflowai 的 cmux —— 编程已经变成了并行工作。这意味着你需要:1. 更多的视觉上下文…
开发者分享了自己使用 cmux(一个终端复用器)改进工作流程的个人经验,通过更好的视觉上下文和更快的切换,管理跨多个项目和工具的并行工作。