<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Posts on Jaffrez's Blog</title><link>https://jaffrez.io/posts/</link><description>Recent content in Posts on Jaffrez's Blog</description><generator>Hugo -- 0.155.3</generator><language>zh-cn</language><lastBuildDate>Tue, 17 Feb 2026 23:58:23 +0800</lastBuildDate><atom:link href="https://jaffrez.io/posts/index.xml" rel="self" type="application/rss+xml"/><item><title>解决windows下nvim-treesitter无法正常下载解析器</title><link>https://jaffrez.io/posts/d86f51b1/</link><pubDate>Tue, 17 Feb 2026 23:58:23 +0800</pubDate><guid>https://jaffrez.io/posts/d86f51b1/</guid><description>&lt;p&gt;这两天一直在折腾neovim，在搞treesitter的语法高亮时碰到一个很奇怪的问题，在配置好插件后一直报错，显示windows自带的tar无法解压解析器。&lt;/p&gt;
&lt;p&gt;于是乎我寻找了一下压缩包所在的位置，但是却都是空的。经历了一翻折腾之后找到了解决方案。&lt;/p&gt;
&lt;h3 id="第一步获取curl"&gt;第一步：获取curl&lt;/h3&gt;
&lt;p&gt;我重新获取了最新版的curl，或许不是版本的问题，不过我懒得试了。从&lt;a href="https://curl.se"
target="_blank"
rel="noopener noreferrer"&gt;
这里
&lt;/a&gt;
下载curl。加入到&lt;strong&gt;系统&lt;/strong&gt;的PATH中。注意，是系统PATH，不是用户的PATH。并把顺序提高的最前面，如图所示。
&lt;figure class="post-figure"&gt;
&lt;div class="post-img-view"&gt;
&lt;img alt="系统的PATH" loading="lazy" src="https://pic.planten.dev/2026/02/cee9b9631f470fbb5cc1edff5fa1adcd.webp"&gt;
&lt;/div&gt;&lt;figcaption class="post-caption"&gt;系统的PATH&lt;/figcaption&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;然后重启电脑应用新的环境变量。&lt;/p&gt;
&lt;h3 id="第二步配置curl暂时忽略ssl证书"&gt;第二步：配置curl暂时忽略ssl证书&lt;/h3&gt;
&lt;p&gt;在我替换了系统的curl之后，neovim就不再报无法解压，而是报证书不正确。所以我尝试了暂时禁用SSL验证。但是请注意，这不建议用在任何生产环境，只是我个人的临时解决方案。&lt;/p&gt;
&lt;p&gt;打开资源管理器，在地址栏输入&lt;code&gt;%APPDATA%&lt;/code&gt;回车，如图所示。
&lt;figure class="post-figure"&gt;
&lt;div class="post-img-view"&gt;
&lt;img alt="APPDATA" loading="lazy" src="https://pic.planten.dev/2026/02/355df45bcf974e4b2b1be5088feea654.webp"&gt;
&lt;/div&gt;&lt;figcaption class="post-caption"&gt;APPDATA&lt;/figcaption&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;打开里面的Romaing文件夹，创建一个新的文本文件&lt;code&gt;.curlrc&lt;/code&gt;。在里面加入下面的配置。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;insecure
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;然后保存。重新打开neovim，curl就可以正常下载解析器了。记得下完之后删除这个配置文件。
附上安装完成的nvim-treesitter。
&lt;figure class="post-figure"&gt;
&lt;div class="post-img-view"&gt;
&lt;img alt="image.png" loading="lazy" src="https://pic.planten.dev/2026/02/fdf01edee3bd1a982aa8566b562c8470.webp"&gt;
&lt;/div&gt;&lt;figcaption class="post-caption"&gt;image.png&lt;/figcaption&gt;&lt;/figure&gt;
&lt;/p&gt;</description></item><item><title>安装使用GNU target的Rust</title><link>https://jaffrez.io/posts/e0726e2a/</link><pubDate>Mon, 16 Feb 2026 00:15:27 +0800</pubDate><guid>https://jaffrez.io/posts/e0726e2a/</guid><description>&lt;p&gt;看看网上搭建Rust环境的教程，一般都是使用MSVC作为后端。这里介绍一下如何使用gnu后端搭建。
当然，使用gnu后端也有好几种，比如使用cygwin或者msys2，就我个人而言，我不太喜欢装额外的环境，所以最终选择了winlibs，它是一个打包好的编译器和工具包。&lt;/p&gt;
&lt;h2 id="第一步下载winlibs"&gt;第一步：下载winlibs&lt;/h2&gt;
&lt;p&gt;在这个网址下载&lt;a href="https://winlibs.com/"
target="_blank"
rel="noopener noreferrer"&gt;
winlibs
&lt;/a&gt;
,大部分时候选择最新版本就好。这里我选择了图中的版本。
&lt;figure class="post-figure"&gt;
&lt;div class="post-img-view"&gt;
&lt;img alt="winlibs.com" loading="lazy" src="https://pic.planten.dev/2026/02/f8fd3ba314bf9e7f1116f451628e1295.webp"&gt;
&lt;/div&gt;&lt;figcaption class="post-caption"&gt;winlibs.com&lt;/figcaption&gt;&lt;/figure&gt;
然后解压并移动到合适的位置。例如&lt;code&gt;E:/mingw/&lt;/code&gt;。
接下来需要把gcc所在的位置加入PATH，以便于rust编译器能找到gcc。
打开系统的环境变量设置，将解压后的文件夹中的bin文件夹加入到PATH。
&lt;figure class="post-figure"&gt;
&lt;div class="post-img-view"&gt;
&lt;img alt="用户的PATH变量" loading="lazy" src="https://pic.planten.dev/2026/02/f8cf5b51f9ddc36071dda9a9b0cf5cfd.webp"&gt;
&lt;/div&gt;&lt;figcaption class="post-caption"&gt;用户的PATH变量&lt;/figcaption&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;完成这一切后就可以重启电脑，使环境变量生效。&lt;/p&gt;
&lt;h2 id="第二步开始安装rust"&gt;第二步：开始安装Rust&lt;/h2&gt;
&lt;p&gt;首先打开终端，输入&lt;code&gt;$ gcc[enter]&lt;/code&gt;。如果看到和图片中类似的输出，就说明gcc已经成功的加入到PATH中。&lt;/p&gt;
&lt;p&gt;&lt;figure class="post-figure"&gt;
&lt;div class="post-img-view"&gt;
&lt;img alt="Output" loading="lazy" src="https://pic.planten.dev/2026/02/2f43663ae92a3507c9ee3cc5baf1d0ef.webp"&gt;
&lt;/div&gt;&lt;figcaption class="post-caption"&gt;Output&lt;/figcaption&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;接下来获取Rust的安装包。可以直接点击这个&lt;a href="https://static.rust-lang.org/rustup/dist/x86_64-pc-windows-msvc/rustup-init.exe"
target="_blank"
rel="noopener noreferrer"&gt;
链接
&lt;/a&gt;
下载，或者自行到官网获取。
下载完安装包后，可以配置一个镜像来加快稍后的安装速度。我建议使用字节的&lt;a href="https://rsproxy.cn/"
target="_blank"
rel="noopener noreferrer"&gt;
RsProxy
&lt;/a&gt;
。毕竟不限速（doge）。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;export RUSTUP_DIST_SERVER=&amp;#34;https://rsproxy.cn&amp;#34;
export RUSTUP_UPDATE_ROOT=&amp;#34;https://rsproxy.cn/rustup&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;需要把这两行环境变量加入到shell中。因为我使用的是&lt;a href="https://www.nushell.sh/"
target="_blank"
rel="noopener noreferrer"&gt;
Nushell
&lt;/a&gt;
。所以我改成了对应的&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-nu" data-lang="nu"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;$env&lt;/span&gt;.RUSTUP_DIST_SERVER&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;https://rsproxy.cn&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;$env&lt;/span&gt;.RUSTUP_UPDATE_ROOT&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;https://rsproxy.cn/rustup&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;只需要按照具体的shell修改即可。接下来就是正式安装。回到下载的Rust安装包所在的文件夹。打开终端，使用&lt;code&gt;$ ./rustup-init.exe&lt;/code&gt;启动安装。
&lt;figure class="post-figure"&gt;
&lt;div class="post-img-view"&gt;
&lt;img alt="rust-init.exe" loading="lazy" src="https://pic.planten.dev/2026/02/51463325eb063d1e4df2a9f716edd5b7.webp"&gt;
&lt;/div&gt;&lt;figcaption class="post-caption"&gt;rust-init.exe&lt;/figcaption&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;可以看到3个选项。因为要使用GNU target，所以这里输入&lt;code&gt;$ 3[enter]&lt;/code&gt;。&lt;br&gt;
然后再输入&lt;code&gt;$ 2[enter]&lt;/code&gt;进入自定义安装。&lt;br&gt;
终端中会出现类似于&lt;code&gt;Default host triple? [x86_64-pc-windows-msvc]&lt;/code&gt;的提示。中括号中的是默认选项。如果回车就会自动使用这个。&lt;br&gt;
我们输入&lt;code&gt;x86_64-pc-windows-gnu[enter]&lt;/code&gt;,接下来的几项就是工具链的选择。通常都直接使用默认选项，回车就好。&lt;/p&gt;
&lt;p&gt;等再次出现3个选项时。我们就已经完成了所有的设定，让我们直接输入&lt;code&gt;[enter]&lt;/code&gt;开始安装。
经过一段时间的等待之后，安装完成了，由于配置了镜像，所以安装会比较快速。
&lt;figure class="post-figure"&gt;
&lt;div class="post-img-view"&gt;
&lt;img alt="安装完成" loading="lazy" src="https://pic.planten.dev/2026/02/00df952ec79b951d64d4cd010d090125.webp"&gt;
&lt;/div&gt;&lt;figcaption class="post-caption"&gt;安装完成&lt;/figcaption&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;出现类似的输出就是安装成功。然后需要重启shell或电脑来应用修改的PATH。整个安装过程就完成了。打开终端输入&lt;code&gt;$ rustc[enter]&lt;/code&gt;显示出一长串文档就是安装成功了。&lt;/p&gt;
&lt;h2 id="第三步额外配置"&gt;第三步：额外配置&lt;/h2&gt;
&lt;p&gt;上面为Rust的安装和更新配置了镜像，但是Rust在开发时需要从crates.io下载大量的库，有时候也会很慢，幸运的是，RsProxy也提供了镜像。
在cargo目录下新建一个文件&lt;code&gt;Config.toml&lt;/code&gt;。通常这个目录位于&lt;code&gt;C:/Users/用户名/.cargo&lt;/code&gt;。
我们需要把配置文件放在&lt;code&gt;C:/Users/用户名/.cargo/Config.toml&lt;/code&gt;。在文件中添加如下内容。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-toml" data-lang="toml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;source&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;crates-io&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;replace-with&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;rsproxy-sparse&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;source&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;rsproxy&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;registry&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;https://rsproxy.cn/crates.io-index&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;source&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;rsproxy-sparse&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;registry&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;sparse+https://rsproxy.cn/index/&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;registries&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;rsproxy&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;index&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;https://rsproxy.cn/crates.io-index&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;net&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;git-fetch-with-cli&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这样就可以使用RsProxy下载crates了。&lt;/p&gt;</description></item><item><title>纪念更换域名</title><link>https://jaffrez.io/posts/cb3c0067/</link><pubDate>Sat, 14 Feb 2026 13:50:52 +0800</pubDate><guid>https://jaffrez.io/posts/cb3c0067/</guid><description>&lt;p&gt;从2026/2/14开始，这个博客就开始使用&lt;a href="https://jaffrez.io"
target="_blank"
rel="noopener noreferrer"&gt;
jaffrez.io
&lt;/a&gt;
域名啦!&lt;/p&gt;</description></item><item><title>Obsidian+Hugo踩坑记录</title><link>https://jaffrez.io/posts/77605e59/</link><pubDate>Sat, 14 Feb 2026 02:08:19 +0800</pubDate><guid>https://jaffrez.io/posts/77605e59/</guid><description>&lt;p&gt;今天突然想搞一搞个人博客，于是上网查了查资料，最终参考这篇&lt;a href="https://www.printlove.cn/obsidian-blog/"
target="_blank"
rel="noopener noreferrer"&gt;
博客
&lt;/a&gt;
开始折腾。在这里记录一下碰到的一些问题。以后再碰到了也方便找。&lt;/p&gt;
&lt;h2 id="1-使用obisidian默认时间模板生成的文章无法正常显示"&gt;1. 使用Obisidian默认时间模板生成的文章无法正常显示&lt;/h2&gt;
&lt;p&gt;弄好主题和别的一堆东西之后，我发现无论怎么尝试都无法让文章正常显示，最后对比了一些上面那篇博客中可以正常显示的文章，最终确定问题出在文章头的date属性上。
必须要把obisidian设置中模板&amp;gt;日期格式改为“YYYY-MM-DDTHH:mm:ssZ”，使生成出的时间戳类似于&amp;quot;2026-02-14T02:08:19+08:00&amp;quot;，才能正常被hugo识别并显示。&lt;/p&gt;
&lt;h2 id="2-github市场中的action自带的hugo版本过老无法正常生成网站"&gt;2. github市场中的action自带的hugo版本过老，无法正常生成网站&lt;/h2&gt;
&lt;p&gt;如果你和我一样把博客放在github pages上，使用市场中的hugo action，可能会出现无法编译的问题。这时候只需要把配置文件中的hugo版本改为最新版就好了。在我写出这一条时，Hugo的最新版本是0.155.3。&lt;/p&gt;
&lt;h2 id="3-如何使用文章标题和时间戳生成slug"&gt;3. 如何使用文章标题和时间戳生成slug&lt;/h2&gt;
&lt;p&gt;我在obisidian中添加了Templater来使用模板生成文章。在模板中添加如下内容再插入就可以自动生成slug。为了避免获取到的文件名称都是Untitled，在生成前会自动询问文章名称。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;span class="lnt"&gt;21
&lt;/span&gt;&lt;span class="lnt"&gt;22
&lt;/span&gt;&lt;span class="lnt"&gt;23
&lt;/span&gt;&lt;span class="lnt"&gt;24
&lt;/span&gt;&lt;span class="lnt"&gt;25
&lt;/span&gt;&lt;span class="lnt"&gt;26
&lt;/span&gt;&lt;span class="lnt"&gt;27
&lt;/span&gt;&lt;span class="lnt"&gt;28
&lt;/span&gt;&lt;span class="lnt"&gt;29
&lt;/span&gt;&lt;span class="lnt"&gt;30
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="l"&gt;&amp;lt;%*&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;let title = await tp.system.prompt(&amp;#34;请输入文章标题&amp;#34;);&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;if (title == null || title == &amp;#34;&amp;#34;) { title = &amp;#34;Untitled&amp;#34;; }&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;await tp.file.rename(title);&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;const timestamp = tp.date.now(&amp;#34;YYYY-MM-DDTHH:mm:ssZ&amp;#34;);&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;const inputString = title + timestamp;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;let hash = 5381;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;for (let i = 0; i &amp;lt; inputString.length; i++) {&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;hash = ((hash &amp;lt;&amp;lt; 5) + hash) + inputString.charCodeAt(i);&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;}&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;let hexSlug = (hash &amp;gt;&amp;gt;&amp;gt; 0).toString(16);&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;while (hexSlug.length &amp;lt; 8) {&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;hexSlug = &amp;#34;0&amp;#34; + hexSlug;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;}&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;-&lt;span class="l"&gt;%&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nn"&gt;---&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;title&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&amp;lt;% title %&amp;gt;&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;date&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;&amp;lt;% tp.file.creation_date(&amp;#34;YYYY-MM-DDTHH:mm:ss+08:00&amp;#34;) %&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;tags&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;slug&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&amp;lt;% hexSlug %&amp;gt;&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;share&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;description&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;author&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;Jaffrez&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;dir&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;posts&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;comments&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;disableCopyright&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nn"&gt;---&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="l"&gt;&amp;lt;% tp.file.cursor() %&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="4-修复添加medium-zoom后鼠标在目录栏上也显示放大镜"&gt;4. 修复添加medium-zoom后，鼠标在目录栏上也显示放大镜&lt;/h2&gt;
&lt;p&gt;在我给博客添加了一些功能后，我发现了如题的情况，经过一段时间的研究。最终我使用css覆盖的方式修复了这个问题。只需要把下面这段代码加到&lt;code&gt;layouts/partials/extend_footer.html&lt;/code&gt;的末尾就行。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;style&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;summary&lt;/span&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;details&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;summary&lt;/span&gt; &lt;span class="nt"&gt;span&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;details&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;cursor&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;pointer&lt;/span&gt; &lt;span class="cp"&gt;!important&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;pointer-events&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;auto&lt;/span&gt; &lt;span class="cp"&gt;!important&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;toc&lt;/span&gt; &lt;span class="nt"&gt;summary&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;toc&lt;/span&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;details&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;cursor&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;pointer&lt;/span&gt; &lt;span class="cp"&gt;!important&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;style&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description></item></channel></rss>