hanxi / blog

涵曦的博客
https://blog.hanxi.cc
56 stars 5 forks source link

wezterm 自动读取 ssh 配置文件 #82

Open hanxi opened 2 years ago

hanxi commented 2 years ago

wezterm 是采用 Rust 实现和 Lua 配置的终端软件,我之前一段时间都是使用 Windows terminal ,发现 wezterm 是采用 Lua 配置的,很方便自定义功能。比如之前给 Windows terminal 提过的一个很小的需求,像 vscode 一样自动读取 .ssh/config 文件的主机配置 ,然而却却迟迟没有实现,Windows terminal 采用 JSON 配置的(如果是 JavaScript 的话还有可能),不能像 wezterm 一样使用 Lua 语言一样能动态生成配置。

下面几行配置就能实现自动读取 ssh 的配置文件,生成主机列表供选择进入,而且 wezterm 的启动菜单是支持查找的,这样只要主机名定义的有规范,就可以方便搜索进入了,就能更方便的作为远程主机管理工具了。wezterm 的配置文档也挺齐全的,参考 wezterm/config/launch

local wezterm = require "wezterm"

local launch_menu = {}

local ssh_config_file = wezterm.home_dir .. "/.ssh/config"
local f = io.open(ssh_config_file)
if f then
    local line = f:read("*l")
    while line do
        if line:find("Host ") == 1 then
            local host = line:gsub("Host ", "")
            table.insert(
                launch_menu,
                {
                    label = "SSH " .. host,
                    args = {"powershell.exe", "ssh", host}
                }
            )
        end
        line = f:read("*l")
    end
    f:close()
end

return {
    launch_menu = launch_menu,
}

我的完整配置见 https://github.com/hanxi/dotfiles/blob/master/etc/wezterm/wezterm.lua ,加入了些主题配置。