2026 年 9 月记事板

16 日

距离上次更新又过去了一个多月,最近总算是放下重担,可以稍微偷些许清闲,便来写点东西。

Neovide

最先来写一下这个,也是我刚弄的。

我在 Windows 装了 Neovide,并基本上是取代了 gVim 的地位。也因此可以说基本上与 Vim 告别了,彻彻底底地转向了 Neovim。Vim 与 gVim 当然还是会保留着的,但其实也基本上没什么使用的机会了,我勉强能想到的一个非常牵强的场景也就是 Fugitive 了。

简单来说就是从三个月前将原先在 Vim 写的 UltiSnips 迁移到了 Neovim LuaSnip 后,基本上 WSL 上的笔记生态已经可以被 Neovim 彻底取代了,苟延残喘的就只剩下 Windows 这一侧写点博文、记事依旧在用的 gVim。

虽然说我现在 snippets 的使用频率并没有那么高了,因此没有对迁移的效果进行大规模的实际测试。但也正因如此,希望直接迁移过来,在实践中发现具体的问题。

最早的实践可以追溯到月初,那会正好在玩 Neovim,一时兴起也去尝试了一下 Neovim 的 GUI:

2026.9.2

  • 装了个 Neovide 看看,其实如果要用 GUI 的话还得额外配一点,但大部分应该都能用。只是内存占用比 gVim 高太多了,空的,gVim 才 10+M,Neovide 已经 100+M 了。这还没算 nvim.exe 都占用了 40+M。眨眼间就快 300M 了。查了一下说 Neovide 是 GPU 应用,需要内存存储渲染缓冲区,嘛……
    • 再试了一下 Neovim-Qt,内存占用是少了很多,只要 50+M 了,但显示效果很差,远不如 Neovide。感觉像没配的 gVim 一样。
    • 配了字体后正常一点,但还是很奇怪,跟 gVim 的也不一样,Neovide 就很正常。不过 Neovim-Qt 用 se gfn=* 会打开选择器,跟 gVim 一样(不过 gVim 的选择器看起来更古老),而 Neovide 不会,只会在里面打开一个 buffer 告知字体列表,这点有点神奇。
    • 此外 gVim 用的是 JetBrainsMono_NFM,这俩用不了,得用 JetBrainsMono Nerd Font。中文字体 Neovide 不用配已经很舒服了,Neovim-Qt 烂。这样的话从体验上看,Neovide 完胜,但内存是十几二十倍,夸张,现在 Neovim-Qt 就 20+M,Neovide 要 300M。
    • 玩完了,卸掉了。动画真的挺有美感的,真的做得很不错,体验比终端会好一点。但就是资源占用太高了,这个没法忍。只能说可惜。

这其实已经将 Neovide 的缺点记录下来了,那就是内存占用太大了。这个太大了是相较于 gVim,例如说现在光是一个 Neovide 就占据了 360M,这还没算上 Neovim 自己进程的 90M。相比较之下,gVim 少了一个量级。

那我为什么现在还是选择了 Neovide 了呢?无他,我想用 Neovim。

虽然也想过就只在终端中使用的方案,但最终还是没采纳。因为我写东西的时候,往往终端是一个重要的参考,会分到其他区域来看,如果写东西也在终端的话,那就得来回切换了,这个体验不太自然。当然,其实可以另起一个终端窗口专门写东西,但我最终觉得还是不甚优雅。

此外 Neovide 这个动画确实很是炫酷啊、使用很舒畅啊,虽然说默认的有点太闪了,我削弱了一点。我本来以为我对动画什么的是毫无感觉的,要不然也不会关掉 snacks.nvim 的动画了,但是 Neovide 的动画实际用下来还是别有一番风味的。

因此最终我的想法就是,我愿意用一部分内存占用换一个愉悦的编辑体验。而且这个内存占用,比之 VS Code 什么的那应该还是更好了一些吧?

2026.9.15

  • 我大概想把默认的 Alt + Q 换成 Neovide 了,不管它内存占用高不高了,我用得爽才是第一位。当然还是要保留一个 gVim 的。

下面就写一些我这两天调配 Neovide 的一些值得记录的内容吧。

粘贴

Neovide 默认不会添加任何快捷键,只会转发按键。终端中有 Shift + Insert 可以用于粘贴算是比较习惯的,因此我加入了配置:

1
2
3
vim.keymap.set({ "n", "i", "v", "c", "t" }, "<S-Insert>", function()
  vim.api.nvim_paste(vim.fn.getreg("+"), true, -1)
end, { noremap = true, silent = true, desc = "Paste from system clipboard" })

当然,这个是要求已经配置了 vim.opt.clipboard = "unnamedplus"

另外还有一个有意思的是调教 Neovide 时发现的,当时我发现 Neovide 可以读取我的系统剪贴板,但是却不能写入。甚至最简单的 yyp,粘贴的都依旧是系统剪贴板的内容,Neovim 里面的东西完全没进寄存器。即便我手动指定了寄存器,也没法。

然后我注意到我剪贴板配置的这一段,这里是为 WSL 环境准备的,如果在 WSL 且不是 VS Code 环境(一般就是普通在终端中运行 Neovim),那就设置剪贴板的行为,复制的时候使用内置的 OSC52,终端也是支持的,粘贴的话终端似乎是因为安全原因不支持,因此使用 Neovim 附带的 win32yank.exe

1
2
3
4
5
6
7
8
9
10
11
12
13
if vim.fn.has("wsl") and not vim.g.vscode then
  vim.g.clipboard = {
    name = "OSC52",
    copy = {
      ["+"] = require("vim.ui.clipboard.osc52").copy("+"),
      ["*"] = require("vim.ui.clipboard.osc52").copy("*"),
    },
    paste = {
      ["+"] = "win32yank.exe -o --lf",
      ["*"] = "win32yank.exe -o --lf",
    },
  }
end

很奇怪耶,但我看 :lua=vim.fn.has("wsl") 明明是 0 啊。结果我注释掉这部分后还真的就好了。

然后问了 DS 才察觉到,在 Lua 中,只有 falsenil 才被视为布尔假,其他的,不管是数字 0 还是空表 {} 都是真值。这个其实我之前就知道了,但知道不代表就记住了,其实还是没反应过来。

因此虽然说这个值是 0,但依旧是会成立的,由此就造成了问题。后面加一个 == 1 就解决了。当然,引入了 Neovide 后还要额外对 Neovide 环境判断。

2026.9.15

  • 神经了,Lua 的 0 是 True,之前见到就感觉很诡异了但没太在意,结果我剪贴板有一个长久的问题,在搞 Neovide 的时候发觉了,太恶心了。

输入法

紧接着就遇到一个非常蛋疼的问题。我用的是系统默认的微软拼音输入法,用 gVim 的时候,默认进去右下角的语言显示的是「英」[1]。但是 Neovide 一进去却是中文,这导致一进去不能畅快地使用,必须得先按一个 Shift 才行,毕竟我默认模式都是 Normal 的,一般也不会立刻就开始了编辑。

最初的想法其实是使用 AutoHotkey,不过未果。现在的配置我倒觉得挺不错的。

首先是我好奇原因,找了一下找到了 gVim 相关的代码文件并问了一下,得知 gVim 似乎并不是直接将拼音输入法的默认语言设置为了英文,而是在一开始「关闭」了输入法,同时会处理输入法状态变化的通知,因此表现得就好像是默认是英文一样。

然后我在 Neovide 也找到了一个设置 g:neovide_input_ime,只要设为 false 就可以关闭输入法了。

然后文档中还给出来了一个用例,仅在特定模式下启用输入法。我自己改了一下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
local enable_ime_events = {
  InsertEnter = true,
  InsertLeave = false,
  CmdlineEnter = true,
  CmdlineLeave = false,
  TermEnter = true,
  TermLeave = false,
}

local ime_locked_on = false

local function set_ime(args)
  if ime_locked_on then
    return
  end
  vim.g.neovide_input_ime = enable_ime_events[args.event]
end

local ime_input = vim.api.nvim_create_augroup("ime_input", { clear = true })

local events = {
  "InsertEnter",
  "InsertLeave",
  "CmdlineEnter",
  "CmdlineLeave",
  "TermEnter",
  "TermLeave",
}

for _, event in ipairs(events) do
  ---@type string|string[]
  local pattern = "*"
  if event:match("^Cmdline") then
    pattern = "[\\/\\?]" -- 仅匹配搜索模式
  end

  vim.api.nvim_create_autocmd(event, {
    group = ime_input,
    pattern = pattern,
    callback = set_ime,
  })
end

Snacks.toggle({
  name = "IME Lockon",
  get = function()
    return ime_locked_on
  end,
  set = function(state)
    ime_locked_on = state
    if ime_locked_on then
      vim.g.neovide_input_ime = true
    end
  end,
}):map("<leader>uM")

主要是来看看跟文档中的示例有什么区别。首先是文档只为输入模式和命令行模式(的特定情形)允许了输入法,我额外加了一个终端的事件,这样打开内置终端也可以使用输入法。

此外文档中的示例其实似乎是有问题的,Vim/Neovim 的 autocmd pattern 的 / 也是需要转义的。提了一个 PR:fix(docs): escape / in autocmd pattern by pilgrimlyieu · Pull Request #3570 · neovide/neovide

另外,虽然说比较少见,但其实其他模式我也可能是要用输入法的。例如说我可能要 f( 找一下括号什么的之类的,此外还有 surround 之类的事情。目前是开了一个切换的映射,可以强制打开输入法,需要的时候打开就行了。不过后面我可能会找一下使用半角标点找全角标点的方式吧。

其实可以直接映射的,不过这里用了 Snacks 的,因此这部分代码就不能简单放在设置那里。我是放在了 neov-ime.nvim 这个插件的 opts 中,这个插件可以实现对输入法预编辑的预览支持。不过我试了一下,插入模式确实可以,但像是命令模式不太行。

2026.9.15

  • 折腾了一下,配了 Neovide。大概就是默认只有输入、搜索、终端可以用输入法,不过可以通过 <leader>um 强制开启输入法支持(关闭后还会维持一阵,为了代码简洁没有立刻关闭)。
  • 本来看 gVim 默认打开输入法状态是英文的,而 Neovide 则不然,感觉很不爽,想从 AHK 方面解决,未果。后面找了一下代码问了问,原来 gVim 是关闭了输入法,但是会处理输入法状态变化,因此表现上就像默认是「英文」,然后可以切换。
  • Neovide 有一个 neovide_input_ime 选项可以禁用 IME,然后通过一些设置可以让它在输入方面启用。但因为我其他模式,如正常模式其实有时候也会用,例如说 f) 等,因此还是放了一个开关启用。
  • 晚上还改了一下逻辑,CWD 默认是选中文件所在目录了。
  • 哦不行,晚上看到 render-markdown.nvim 支持渲染宽表格的时候很惊喜想去看看,然后突然惊觉我开启的快捷键也是 <leader>um,那要改成大写了。试了一下,卧槽有点牛,我感觉应该对一些情形默认开启了。

样式

此前我是通过 WinSetStyle(-0xC40000, "ahk_pid " pid) 来隐藏掉 gVim 的标题栏和边框,实现沉浸式编辑体验的。而 Neovide 可以直接通过设置实现,设置 frame = "none" 即可。

2026.9.16

  • Neovide 可以用 --frame none 来隐藏掉 Windows 的边框,不过就无法移动或调整大小。不过真的吗,但我本来就是靠 GlazeWM 来处理的,再不济就用 WinDrag。其实可以写在配置里面,但我现在是弄在命令行中,正在看文档,如果有很多值得设置的选项的话再开个配置文件。

然后是字体问题。上面其实有写,Neovide 的默认字体支持就很不得了,我啥都没配呢显示效果都挺不错了。相较之下 gVim 与 Neovim-Qt 等就显得惨不忍睹了。

此外令我惊喜的是,Neovide 居然不必用等宽字体,且无需设置 g:guifontwide,只用在 g:guifont 设置回退字体即可,同时这样设置即便不是等宽字体,效果也是等宽的(一个全角字符对应两个半角字符)。查了一下,似乎是它的「自动调校」实现的,不得了,不得了。

2026.9.16

  • 哇哇,有点强。看粗体、斜体没样式,然后搜了一下,居然不用设置 guifontwide,直接在 guifont 加回退字体就可以了,而且还不需要 Mono,就是和字母等宽的了。
  • 我试了一下三种,微软雅黑、Mono 版的微软雅黑和思源黑体,感觉微软雅黑跟 Mono 版差不多,但粗体上更粗,而思源黑体字体大小比较合适,微软雅黑的占得太多了有点挤,因此就决定用思源黑体了。不对,细看之下似乎还是微软雅黑更合适,思源黑体反而稀疏了点。再试了一些感觉还是微软雅黑更好。

其他

还可以用 neovide --wsl 连接上 WSL 的 Neovim,不错呦真的。为此我给两处都设置了一个 alias gn 来打开 Neovide。

不过因为 Neovide 启动的 Neovim 似乎是没有继承环境变量的,在一个非交互式 Shell 中启动,需要进行一些调整。

Windows 我默认 Shell 设置的是 PowerShell 7,不过不知为何这个居然没在 PATH 里面,可能因为我都是在 Windows Terminal 中打开,而被作为了默认 Profile,且其会自行将其插入到 PATH 中。将其加入系统 PATH 即可。

WSL 方面,我将 ~/.zshrc 中的环境变量部分单独抽离出来为 ~/.zshenv 了,这样非交互式 Shell 也能用。

不过我 WSL 上的 Neovim 目前是 0.13 nightly,主要是为了体验一下 0.13 的多光标特性,而最新稳定版的 Neovide 接口上有一些不兼容,因此要么用 Neovim 0.12 的稳定版,要么 Neovide 也用 nightly。本来我先测试了一下前者确保可连通,就换回来了。不过后面我又采用了 nightly 的 Neovide,这个下面会详述。

nightly 的 Neovide 目前有一个问题,与 noice.nvim 不兼容,找到了 issue 解决。

2026.9.16

  • 可以用 --wsl 连接 WSL 的 Neovim(不过我调整了一下配置,因为 Neovide 打开的是非交互式 Shell,因此将环境变量等弄到了 ~/.zshenv 中),感觉有点爽。不过 Neovim v0.13 还不能用,会有 API 错误,看来得等正式版发布和 Neovide 那边兼容了。我只是回退测试一下,多光标暂时还是要保留的。
  • 消息捕获跟 Noice.nvim 不兼容,关掉了。这个是 nightly 才有的问题。哦原来这个选项也是 nightly 加的。

写到下面的时候,Windows 又改用 nightly 了。因为 Neovim 0.13 nightly 引入了 scrolloffpad 选项(当然,Vim 也有),这样编辑到底部的时候也可以额外滚页让编辑的行靠中间一点。外加上多光标,因此我 Windows 也不管了,本来 Vim 也是用的 nightly。

自用 Scoop bucket

2026.9.16

  • 哦原来 Neovide 也有发 nightly,那我看看 Scoop 能不能装。官方没有,那就趁此机会自己弄一个 Scoop bucket 吧。

起因就是上面的 Neovide nightly 问题,加上其实我已经积累了一些希望有自己的 manifest 的软件/工具,遂建立了自己的 Scoop bucket

目前包含了下面的软件:

  1. anki-latest:官方 bucket 虽然有收录 Anki,但是只是稳定版,我需要最新的,即便是 pre-release。这是因为 Anki 目前的翻译基本上还算是我在「维护」,之前有时候需要实际看看效果的(当然嘛,现在不怎么看了……)
  2. neovide-nightly:这个上面提过了。
  3. focust:我的 Focust,官方 bucket 未收录,虽然有一些民间 bucket 收录了。
  4. neovimneovim-nightly:这个官方其实都有收录,不管是稳定版还是 nightly,只是官方的 manifest 没有给 win32yank.exe 提供 shim,导致我要么自己加 PATH,要么就额外装一个 win32yank,我之前是选择了后者,但是积怨已久,现在直接自己加。

RSSHub + Outlook

前阵子的时候比较忙(确信),结果就是最多也就早上吃早餐的时候看了一眼邮箱。结果某一天早上忘记看了,导致前一天晚上的邮件在次日晚上才看到,急匆匆去处理材料[2]

于是就决定要把邮箱也整到 RSS 上。为什么不开机自启 ThunderBird 呢…… 嘛,一来我不想额外在后台占用一点资源,二来我也不想即时处理邮件,毕竟邮件又不是什么 IM,像 QQ、微信挂在那也太累了吧。也许我后面会改变主意,但我现在还是暂时决定定时地进行收集。

本来我以为没啥的,毕竟在此之前其实我已经将 NJU 邮箱加入到 RSSHub 当中了,便以为我的主力 Outlook 邮箱也是轻而易举。不过没想到事情并没有那么简单。

NJU 邮箱的操作大概就是创建一个授权码,然后把授权码作为密码,加上服务器、端口等信息填好环境变量就可以了。而看 Outlook 给的文档,似乎也是创建一个「应用密码」即可。

但实操不行,后面查了一下,Basic Auth 已经给弃用了,得用 OAuth 2.0。那没辙,让 Codex 写代码给我自己的 RSSHub fork 加功能了。

在我的 RSSHub fork 的 mail-oauth 分支中添加了 Outlook 的 OAuth 2.0 支持。

在此之外还需要首先在 Microsoft Entra 管理中心注册一个应用,然后点「管理」栏下的「Authentication (Preview)」,在「设置」中勾选「允许公共客户端流」,在「Supported accounts」中选择「仅限个人账户」。

后者的设置可能会遇到问题,可以点「管理」栏下的「清单」,找到 requestedAccessTokenVersion 并将 null 改成 2。完成后就可以改选了。

当然,Outlook 邮箱肯定也是要启用 IMAP 的。可以在网页版打开「文件 > 账户信息 > 邮件 > 转发和 IMAP」,登录验证后勾选「允许设备和应用使用 IMAP」。

然后 docker-compose.yml 中添加额外的配置:

1
2
3
4
5
environment:
    EMAIL_CONFIG_user_outlook_com: 'auth=oauth2&provider=outlook&clientId=<your-client-id>&tenant=consumers'
    EMAIL_OAUTH_STATE_DIR: /app/data/mail-auth
volumes:
    - /srv/rsshub/mail-auth:/app/data/mail-auth

其中 client-id 在 Microsoft Entra 创建的应用中有给出。

对于每一个邮箱,需要进行登录。相关命令可以使用:

1
2
$ docker compose exec rsshub node dist/mail-auth.mjs --help
$ docker compose exec rsshub node --input-type=module -e 'import { access, constants } from "node:fs/promises"; await access(process.env.EMAIL_OAUTH_STATE_DIR, constants.W_OK); console.log("OAuth state directory is writable");'

进行检查。第一个命令应该显示命令帮助,第二个命令则需要提示允许写入,因为要存储 OAuth 所需的状态信息。

$ docker compose exec rsshub node dist/mail-auth.mjs login user@outlook.com

使用这个命令进行登录,会提示登录网址和一次性短码,依据提示进行授权后,就完成了,然后将 /mail/imap/user@outlook.com 加入到 RSS 阅读器即可。

当然需要注意的是,邮箱涉及隐私信息,我自己让阅读器通过内网地址访问 RSSHub,因此比较安全。如果要公开的话,要么就是加上 Basic Auth 等,要么就加入 RSSHub 的 Access Token 为宜。

另外,本来我自用的 RSSHub fork 各功能是串行的,像之前加入的什么代理啊,平滑缓存啊等等,都是按顺序的。但我这次弄完后觉得不太好,彼此的功能之间实际上没什么依赖关系,而这样一个接一个反而人为地制造了依赖关系,可能会带来一些问题。此外如果其他人只想要中间的某个功能,可能也不方便 cherry-pick。还有就是我可能还要时不时同步一下上游什么的。

于是我就想到了 Megamerges 工作流,将每一个特性单独作为一条链(并打上书签),然后我自己是要全部的特性,那就产生一个空的 merge change(同时打上书签 custom),并在上面进行构建:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
@            nywzlply ffa71014 pilgrimlyieu 1 day ago custom
├─┬─┬─┬─┬─╮  (empty) merge: integrate custom RSSHub features
│ │ │ │ │ ○  ktrwsmls 33212526 pilgrimlyieu 1 day ago mail-oauth
│ │ │ │ │ │  feat(mail): add persistent Outlook OAuth and Docker authorization
│ │ │ │ ○ │  ywxutowk d723aa8e pilgrimlyieu 1 day ago bilibili-risk-control
│ │ │ │ ├─╯  fix(bilibili/video): skip browser fallback for risk-control challenges
│ │ │ ○ │  wnukpmxu ef97f8e7 pilgrimlyieu 1 day ago node-runtime-options
│ │ │ ├─╯  chore: allow runtime node memory options
│ │ ○ │  qlwylwpw bbca6d02 pilgrimlyieu 1 day ago smooth-cache
│ │ │ │  fix: harden smooth cache marker handling
│ │ ○ │  ovyuoqkl b79308e8 pilgrimlyieu 1 day ago
│ │ │ │  chore: reduce smooth cache storage duplication
│ │ ○ │  mqwuvput b0879108 pilgrimlyieu 1 day ago
│ │ │ │  chore: add smooth cache observability logs
│ │ ○ │  trrvwtor 598229df pilgrimlyieu 1 day ago
│ │ │ │  chore: add smooth refresh info log
│ │ ○ │  zpxwsnvt 4d81073a pilgrimlyieu 1 day ago
│ │ ├─╯  feat: support smooth fetching
│ ○ │  kspznsnp 52a93b2c PilgrimLyieu 1 day ago docker-context
│ ├─╯  chore: exclude local metadata and build artifacts from Docker context
○ │  mrkwysxv 193a95f6 PilgrimLyieu 1 day ago rss-proxy
├─╯  feat: add custom proxy
  qzttqynt e87fad2d 49699333+dependabot[bot] 2 days ago master
│  chore(deps): bump markdown-it from 15.0.1 to 15.0.2 (#23293)
~

这样的话所有功能特性都是并行的(现在所有额外功能互不依赖,因此可以并行,如果后面有依赖关系其实一样可以做),非常清晰,一目了然。如果只需要其中一个特性直接去对应分支即可,如果我本地只要其中几个,也可以将这几个对应的书签创建一个 merge 节点并构建。

如果我有修改其中某个功能的需求的话,也只需要继续在那条链上进行工作,后面就会自动 rebase。此外也可以使用各种 Megamerges 的工作方式,例如说先在主链(即集合的 custom)上工作创建了一个新的功能,然后用相应的命令将派生出来的这一串作为新的一条并行的链等等。

此外从这里看上游也就非常地清晰了,就是起点,也可以 rebase 后,若有冲突,则在相应的链条解决冲突。而不是像原来线性的那样,虽然后面的没有冲突,但因为前面的出现了冲突而造成了冲突的传播。

当然从自动 rebase 的角度来看也是极佳的,要修前面的 bug,后面很多不相干的内容也不得不自动 rebase,会有性能上的问题。而这样的并行,可以说完全就是解决这个问题的最佳形态了。

回到 Outlook 加入 RSS,其实有一点「加重负担」。之前我大概处理过的邮件就删掉,留下来的就是稍微有留档价值的。而现在我可能在 RSS 这块看到了后,还需要再去邮箱进行处理。而且如果是 GitHub 的通知的话,我还订阅了 GitHub 的通知 RSS,会提醒两次,然后除了在邮箱那边已读外,还要去 GitHub 通知那边消掉小蓝点。这如果是在月初的 Dependabot 更新时,那就更加恐怖了。

不过我做这个的初衷恐怕还是避免自己错过了邮箱,因为邮箱我不是每时每刻都看,但 RSS 我翻看的频率肯定是高多了的。此外 RSS 阅读器那块也甚是简陋,附件等什么的想都不要想了,因此也只能起到一个提醒作用。此外渲染效果其实也不怎么样,明明我亲自复制 RSS 里面的内容是正常的,结果实际的显示效果却是倒过来的……

2026.9.14

  • Outlook 邮箱似乎没有授权码,得直接用密码吗,明文存储?那太逆天了……
    • 看文档可以设置应用密码,但我行不通。然后问 DS 说似乎 24.9 开始已经不支持 Basic Auth 了……
    • 那看来我又要弄一弄了:

2026.9.15

  • 记录一下 RSSHub 构建的 Docker 过程,免得又忘记了。历史记录也找不到,前阵子换了 Autin 应该可以好点。
    1. docker build -t my-rsshub:latest . 来构建;
    2. docker save my-rsshub:latest -o my-rsshub.tar 保存;
      • 好像可以直接 docker build -t my-rsshub:latest --output type=tar,dest=my-rsshub.tar .
      • 然后也可以 -o 参数换成 | gzip > my-rsshub.tar.gz 用 Gzip 压缩。
    3. scp my-rsshub.tar azure:~ 传输;
    4. docker load -i my-rsshub.tar 即可(Gzip 也可以直接用)。

那么就暂且先写到这里吧,写了一下午,第一次用 Neovide 取代 gVim 的编辑体验很是不错(不管是 Neovide 还是 Neovim)。其实这段时间还折腾了许多东西,我也打算将其中一项写成一篇新博文。


  1. 不是「ENG」的英文键盘,而是中文键盘的英文,即按下 Shift 的结果。 ↩︎

  2. 这里还得吐槽一下,图书馆迁到西区了,导致打印店晚上关门后我就得跑老远到西区的大图书馆去打印,来回一趟要半个钟。 ↩︎