同步 Vim 和 Terminal 的背景色
之前在 终端中的 Vim 显示方形的光标 中设置了 termguicolors 后,再选个 colorscheme,终端边缘 padding 部分颜色刺眼地不匹配。

就像这张图,边框显示了终端的背景色,和 Vim 主题背景色不匹配。
- How make Vim fill Terminal window - Stack Overflow
- Windows terminal akward border · 议题 #14889 · microsoft/terminal
很早之前在使用 iTerm2 时就处理过一次,现在在 Windows Terminal 上又来了。以前用的都是 Vim default 主题,它似乎没有调整过背景色,这次选择了自带背景色的主题就触发了。
我知道的有至少两个原因
- 终端尺寸没有按块贴合,snap to block grid。有的终端模拟器允许像浏览器窗口一样,随意调整窗口尺寸。窗口尺寸非整数,变成 80.5 row x 119.8 col,那小数点部分只能展示为空白。
好在 Windows Terminal 里有个交互 > 将窗口大小调整为字符网格对齐默认开启。 - 设置了背景不透明度,同时开启了窗口边框间距。不透明度更重要,间距因为有个滚动条,一定会存在。这是我本次的原因,为了好看的亚克力背景,不透明度调整到 75%。关闭不透明度就好了。
同步终端应用和系统的亮色暗色模式
另一个就是主题色,也就是 set background 要和终端匹配,这个目前都没有很好的办法。因为系统主题 应用主题 终端配色 == 应用配色这套等式,每个环境都可以自由选择。
我的做法是在 Powershell 启动时检测环境,注入到 Session 环境变量和用户级环境变量,应用程序读取这个变量做判断
# 检测当前 Windows 系统是否处于浅色模式
$themeRegistryPath = "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize"
$env:AppUseLightTheme = ( Get-ItemProperty -Path $themeRegistryPath -ErrorAction SilentlyContinue ).AppsUseLightTheme ?? 0
[Environment]::SetEnvironmentVariable('AppUseLightTheme', $env:AppUseLightTheme, 'User')set termguicolors
colorscheme catppuccin
if $AppUseLightTheme == '1'
set background=light
endifPVE 安装 Arch Linux Cloud Image
使用 Arch Linux | Proxmox VE Helper Scripts 是用 archlinux-x86_64.iso 安装的,直接把 ISO 内容复制到磁盘。不是我想要的效果,还是 Cloud 镜像 / LXC 容器更适合我。
想要在 VM 中安装 Cloud Image 就参照 Arch Linux on a VPS - ArchWiki,去国内镜像源 https://mirrors.cernet.edu.cn/archlinux/images/latest/Arch-Linux-x86_64-cloudimg.qcow2 下载最新的 qcow2 磁盘,然后在 PVE 上执行 qm disk import 110 Arch-Linux-x86_64-cloudimg.qcow2 local-lvm 加载到 ID=110 的虚拟机磁盘,启动 VM。
关键是从 PVE 控制台无法进入 VM,不知道确切的账号密码。
原来在 Cloud-init - ArchWiki 这里记录了,默认禁用 root 账户,新建一个 arch 用户,且只允许 SSH 访问,无密码。DHCP 的 IP 地址可以从虚拟机概览页查看,使用 arch 用户连入。
注意如果之前用 Helper Scripts 安装的 VM,再手动导入的 qcow2 磁盘,需要删除 cloudinit 磁盘再添加一遍,点击 CloudInit 页面上的重生成镜像才能生效。