BNU-FZH

fengzhenhua@outlook.com

ArchLinux是一款灵活、强大、可定制的Linux发行版,提供丰富的软件包和工具,支持滚动更新和多种桌面环境,拥有庞大的社区支持和方便的包管理器,适合各种用户需求和使用场景。Endeavour 是一个基于ArchLinux的轻量级和用户友好的发行版,预装了桌面环境和预配置的软件包,旨在提供一个无忧的ArchLinux体验。

阅读全文 »

由于工作的需要不得不再次使用word, 本文针对使用word出题给出模板,将整个word分成试题和答案两部分,并且两部分分别统计页数和分别从1开始编号,也即是在Word中实现分节页码并显示第一节共X页第二节共Y页.

一、正确插入分节符并设置页码

  • 插入分节符:
    • 将光标放在第一节的最后一页的末尾(即需要分节的位置)
    • 点击布局(或页面布局)选项卡
    • 页面设置组中点击分隔符
    • 选择下一页(这样会在新页开始新节)
  • 设置页码:
    • 双击页脚区域进入页脚编辑模式
    • 页眉和页脚工具选项卡中,取消链接到前一节的勾选(确保两节的页脚独立)
    • 在第一节的页脚中插入页码(设置为第1页
    • 在第二节的页脚中插入页码(设置为从1开始)

二、插入 SectionPages 域统计各节数量

  • 在第一节最后一页的页脚中:

    • 双击页脚区域进入编辑模式
    • 在页脚中输入:第一节共x页
    • Alt + F9打开域代码视图(或点击插入文档部件
    • 在域代码对话框中,选择SectionPages
    • 点击确定,域代码会显示为{ SECTIONPAGES }
    • 输入页,完成输入:第一节共{ SECTIONPAGES }
    • Alt + F9切换回正常视图,显示为第一节共5页(假设第一节有5页)
    • F9更新域,显示正确的页数
  • 在第二节最后一页的页脚中:

    • 双击页脚区域进入编辑模式
    • 在页脚中输入:第二节共y页
    • Alt + F9打开域代码视图
    • 插入{ SECTIONPAGES }
    • 输入页,完成输入:第二节共{ SECTIONPAGES }
    • F9更新域,显示正确的页数

三、重要说明

  • 域代码更新:Word的域代码在文档内容变化后不会自动更新。每次修改文档后,需要按F9更新域,或在打印预览时自动更新。

  • 域代码格式:您看到的{ SECTIONPAGES }是域代码,实际显示时会自动替换为当前节的总页数。

四、总结

使用Word的域代码{ SECTIONPAGES },您可以在每节的最后一页自动显示第一节共X页第二节共Y页,无需手动计算和输入。只需在每节的最后一页页脚中插入相应的域代码,然后按F9更新即可。

windows 11 会强制更新,这给需要稳定工作的人造成了麻烦,甚至是损失。一般情况下不允许永久关闭,所以本文介绍一个变通的方法,超长时间禁用更新以达到稳定使用系统的目标。

暂停更新

创建一个 txt 文件导入以下代码

暂停更新至2042年
1
2
3
4
5
6
7
8
9
10
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings]
"FlightSettingsMaxPauseDays"=dword:00001b58
"PauseFeatureUpdatesStartTime"="2023-07-07T10:00:52Z"
"PauseFeatureUpdatesEndTime"="2042-09-05T09:59:52Z"
"PauseQualityUpdatesStartTime"="2023-07-07T10:00:52Z"
"PauseQualityUpdatesEndTime"="2042-09-05T09:59:52Z"
"PauseUpdatesStartTime"="2023-07-07T09:59:52Z"
"PauseUpdatesExpiryTime"="2042-09-05T09:59:52Z"

另存为 .reg 文件即可双击使用.

恢复更新

同理可以建立恢复默认,即

1
2
3
4
5
6
7
8
9
10
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings]
"FlightSettingsMaxPauseDays"=-
"PauseFeatureUpdatesStartTime"=-
"PauseFeatureUpdatesEndTime"=-
"PauseQualityUpdatesStartTime"=-
"PauseQualityUpdatesEndTime"=-
"PauseUpdatesStartTime"=-
"PauseUpdatesExpiryTime"=-

另存为 .reg 文件即可双击使用.

参考文章

问题描述

办公室配置的奔图P3370DN打印机,在其奔图官网驱动下载站点可以看到该打印机是有Linux驱动的,但是它是针对Debian系列的Linux设计的,在ArchLinux上就无法直接安装了。

解决方案

  • 安装system-config-printer, 即运行命令
1
sudo pacman -S system-config-printer
  • 在菜单中找到打印机设置解锁添加网络打印机.

  • 选择局域网内的打印机,此时默认会显示打印机的IP端口, 同时下方显示连接AppSocket/HP JetDirect, 点击转发,然后等待搜索驱动.

  • 在上方选中从数据库中选择打印机,下方选中Generic(推荐), 然后点转发。

  • 进一步选择驱动程序PostScript, 然后在右侧显示驱动程序Generic PostScript Printer(推荐), 再点转发,设置成功。

注意

由于奔图打印机在github上没有公开驱动程序,所以使用paru也无法实现驱动安装,通过一系列测试,使用Linux系统的通用打印驱动即可实现完美打印。

问题描述

单位配置了国产电脑,牌子是 Seewo 的。但是其安装的系统是银河麒麟系统和win10家庭版,它们同时占据了一块512的固态硬盘,这给不经常使用Linux的用户造成麻烦,因此有必要将Linux去除,同时只安装LTSC版本的Win10. 但是我在安装完成LTSC版win10后,发现右键我的电脑后发现还有若干硬件出现黄色感叹号,也就是这些硬件没有被win10识别,同时由于缺失显卡驱动,也无法将分辨率调成1080p。本文给出解决方案。

解决方案

芯片硬件驱动

显卡驱动

问题描述

因为 @ 符号在 FTP URL 中是一个保留字符,用于分隔认证信息(用户名:密码)和服务器地址。当你的密码中包含 @ 时,直接使用它会破坏 URL 的解析,导致登录失败。

解决方案:对密码进行 URL 编码

最可靠的方法是对密码中的特殊字符进行 URL 编码(Percent-encoding)。对于 @ 符号,其编码后的结果是 %40。

解决步骤

  • 找到密码中的所有 @ 符号。

  • 将它们逐个替换为 %40

  • 在 curlftpfs 命令中使用编码后的密码。

实例

错误的写法
1
2
# 这个命令会解析错误,很可能认证失败
curlftpfs user:p@ssw@rd@ftp.example.com /mnt/ftp_mount
正确的写法
1
2
# 将密码中的 ‘@’ 替换为 ‘%40’
curlftpfs user:p%40ssw%40rd@ftp.example.com /mnt/ftp_mount

2025-09-26 15:16 在更新ArchLinux后,再打开Neovim后提示

1
2
The `require('lspconfig')` "framework" is deprecated, use vim.lsp.config (see :help lspconfig-nvim-0.11) instead.
Feature will be removed in nvim-lspconfig v3.0.0

问题解读

你遇到的这个提示意味着你正在使用的 nvim-lspconfig 插件版本已经弃用了旧的配置方式,需要迁移到新的 Neovim 内置接口。新旧语法对照如下:

配置方面 旧语法(己弃用) 新语法(Neovim 0.11+)
基本服务器配置 require('lspconfig').pyright.setup({...}) vim.lsp.config('pyright',{...})
启用服务器 在setup后自动或通过其他机制 调用vim.lsp.enable('server_name')
通用配置(如按键映射) 在单个服务器的setup的on_attach中定义 使用vim.api.nvim_create_autocmd监听"LspAttach"事件

迁移步骤与示例

  1. 更新Neovim和插件: 确保你的 Neovim 版本在 0.11.0 或以上,因为新的 vim.lsp.config API 是从这个版本开始引入的。同时,将你的 nvim-lspconfig 插件更新到最新版本。

  2. 重写配置语法:找到你配置文件中所有使用 require('lspconfig').XX.setup({...}) 的地方,将其改为新的格式。

  3. 迁移实例:

旧配置示例
1
2
3
4
5
6
7
8
9
10
11
12
13
-- 这是已弃用的旧写法
require('lspconfig').pyright.setup({
settings = {
python = {
analysis = {
typeCheckingMode = "strict"
}
}
},
on_attach = function(client, bufnr)
-- 一些按键映射...
end
})
新配置示例
1
2
3
4
5
6
7
8
9
10
11
12
-- 使用新的 API 进行配置
vim.lsp.config('pyright', {
settings = {
python = {
analysis = {
typeCheckingMode = "strict"
}
}
}
})
-- 启用这个服务器
vim.lsp.enable('pyright')
  1. 处理全局设置(如按键映射) : 在新的模式中,建议将通用的、不针对特定语言服务器的设置(如按键映射)通过全局的 LspAttach 自动命令来设置。这可以避免为每个服务器重复编写 on_attach 函数。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
-- 定义一个通用的附加回调函数
local my_on_attach = function(client, bufnr)
-- 在这里设置你的按键映射等通用配置
vim.keymap.set('n', 'gd', vim.lsp.buf.definition, { buffer = bufnr, desc = 'Goto Definition' })
vim.keymap.set('n', 'K', vim.lsp.buf.hover, { buffer = bufnr, desc = 'Hover Documentation' })
-- ... 其他映射
end

-- 使用自动命令在LSP客户端附加到缓冲区时应用这个函数
vim.api.nvim_create_autocmd("LspAttach", {
callback = function(args)
local client = vim.lsp.get_client_by_id(args.data.client_id)
local bufnr = args.buf
my_on_attach(client, bufnr)
end
})

验证与排查

完成修改后,你可以通过以下方式验证配置是否正确:

  • 重新加载你的配置文件(例如执行 :source $MYVIMRC)。

  • 打开一个相关类型的文件(如 .lua 文件),使用 :LspInfo 命令查看对应的语言服务器(如 lua_ls)是否正常启动。

  • 如果服务器没有启动,检查 Neovim 的 :messages 或 LSP 日志(通过 :LspLog)来排查错误。

先帝深虑汉、贼不两立,王业不偏安,故托臣以讨贼也。以先帝之明,量臣之才,固知臣伐贼,才弱敌强也。然不伐贼,王业亦亡。惟坐而待亡,孰与伐之?是故托臣而弗疑也。

臣受命之日,寝不安席,食不甘味。思惟北征。宜先入南。故五月渡泸,深入不毛,并日而食;臣非不自惜也,顾王业不可得偏安于蜀都,故冒危难,以奉先帝之遗意也,而议者谓为非计。今贼适疲于西,又务于东,兵法乘劳,此进趋之时也。谨陈其事如左:

高帝明并日月,谋臣渊深,然涉险被创,危然后安。今陛下未及高帝,谋臣不如良、平,而欲以长策取胜,坐定天下,此臣之未解一也。

刘繇、王朗各据州郡,论安言计,动引圣人,群疑满腹,众难塞胸,今岁不战,明年不征,使孙策坐大,遂并江东,此臣之未解二也。

曹操智计,殊绝于人,其用兵也,仿佛孙、吴,然困于南阳,险于乌巢,危于祁连,逼于黎阳,几败北山,殆死潼关,然后伪定一时耳。况臣才弱,而欲以不危而定之,此臣之未解三也。

曹操五攻昌霸不下,四越巢湖不成,任用李服而李服图之,委任夏侯而夏侯败亡,先帝每称操为能,犹有此失,况臣驽下,何能必胜?此臣之未解四也。

自臣到汉中,中间期年耳,然丧赵云、阳群、马玉、阎芝、丁立、白寿、刘郃、邓铜等及曲长、屯将七十余人,突将、无前、賨叟、青羌、散骑、武骑一千余人。此皆数十年之内所纠合四方之精锐,非一州之所有;若复数年,则损三分之二也,当何以图敌?此臣之未解五也。

今民穷兵疲,而事不可息;事不可息,则住与行劳费正等。而不及今图之,欲以一州之地,与贼持久,此臣之未解六也。

夫难平者,事也。昔先帝败军于楚,当此时,曹操拊手,谓天下已定。然后先帝东连吴越,西取巴蜀,举兵北征,夏侯授首,此操之失计,而汉事将成也。然后吴更违盟,关羽毁败,秭归蹉跌,曹丕称帝。凡事如是,难可逆见。臣鞠躬尽瘁,死而后已。至于成败利钝,非臣之明所能逆睹也。

在 shell 脚本中使用$1$2 等表示变量,它们不仅可以表示脚本的参数,也可以表示函数的参数。但是,如果一个函数它自己有参变量,同时又需要引用脚本的参变量,那这个函数就无法识别$1是脚本的还是函数的,这会导致矛盾。为了解决函数参数覆盖脚本参数的问题,一个简单安全的方法是提前保存脚本参数,即

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/bin/bash
# 调用前保存脚本参数到全局变量
script_args=("$@") # 保存所有参数到数组
process_args() {
# 函数参数
local func_param="$1"
# 访问脚本参数
echo "脚本第一个参数: ${script_args[0]}"
echo "脚本第二个参数: ${script_args[1]}"
echo "函数参数: $func_param"
# 遍历所有脚本参数
for arg in "${script_args[@]}"; do
echo "脚本参数: $arg"
done
}
# 调用函数并传递函数参数
process_args "函数参数值"

此法能确保在函数中正确访问脚本参数,同时保持代码清晰和可维护性。 这里需要注意变量$0$?不会被函数参数覆盖,这里将各变量列表如下:

变量 是否被函数参数覆盖 作用域 说明
$0 全局 始终表示脚本名称
$? 动态更新 始终表示上一个命令的退出状态
$1-$9 函数内局部 在函数内被函数参数覆盖
$# 函数内局部 在函数内表示函数参数个数
$@ 函数内局部 在函数内表示函数参数列表

所以综合考虑,将$0也在脚本开头保存,以便规范使用。于是前面的脚本可以进一步写为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/bin/bash
# 调用前保存脚本参数到全局变量
script_args=("$0" "$@") # 保存所有参数到数组
process_args() {
# 函数参数
local func_param="$1"
# 访问脚本参数
echo "脚本第一个参数: ${script_args[0]}"
echo "脚本第二个参数: ${script_args[1]}"
echo "函数参数: $func_param"
# 遍历所有脚本参数
for arg in "${script_args[@]}"; do
echo "脚本参数: $arg"
done
}
# 调用函数并传递函数参数
process_args "函数参数值"

在编写 shell 脚本时经常使用的函数可以封闭到一个脚本中,然后其他脚本使用 source 命令直接调用即可,这样不仅有利于新脚本的开发,更有利于维护。但是今天在编写新的脚本 chaos.sh 时调用了我之前在diary.sh中调用过的菜单脚本,然而却出现错误。一直提示" stty: 标准输入: 对设备不适当的 ioctl 操作" 。

造成这个问题的原因是:使用 Neovim 内置命令运行脚本时并没有真正在一个终端中运行,而菜单脚本使用tty获取终端的尺寸,此时没有可用的tty, 因此出现报错。

一个更健壮的获取终端尺寸的方法(在非终端环境下,如 Neovim :!sh ./chaos.sh 等也不会报错),是使用tput, 这是一具兼容度最好的方案。具体原因是

  • tput 会尝试从环境变量或terminfo 中获取尺寸
  • 在非终端环境下返回空或错误,可用||提供默认值
  • 不会像stty size 那样报错

一般情况下,使用stty sizetput会获得相同的结果,为了确保与之前脚本的兼容性,修改获取尺寸函数为:

~/.Share_Fun/Share_Fun_Menu.sh
1
2
3
4
5
6
7
8
9
10
11
12
# 列表程序
DY_SET_SIZE(){
if [ -t 0 ]; then
TTY_H=$(stty size|awk '{print $1}')
TTY_W=$(stty size|awk '{print $2}')
else
TTY_H=$(tput lines 2>/dev/null) || TTY_H=37
TTY_W=$(tput cols 2>/dev/null) || TTY_W=147
fi
let TTY_H-=2
}
DY_SET_SIZE

通过[ -t 0 ]来判断运行程序时是否在终端,若在终端仍然使用stty size获取终端尺寸,否则使用tput获取。这样重新定义获取尺寸函数后,问题彻底解决。