最近入了一个新的 Windows 设备,要重新为它安装一套自己日常使用的工具,并且自定义一些项目。这一整套流程下来,真是有够麻烦的。一方面,需要记住自己的在原来的设备上安装各式各样的软件;另一方面,即使是安装了软件,也无法事无巨细地回忆起各种配置。
所以,非常有必要将这个配置流程数据化。这样就引出一个 dotfile 的概念。如果有 Linux 的使用经验,会注意到如果执行 ls -a ~ 这一条命令,会发现有大量配置文件以 .xxx 的形式存在于目录下。那么 dotfile 代表了配置文件。在 Windows 上也有很多软件使用本地配置来存储配置,那么只需要将这个文件备份下来,那么就可以在迁移设备的时候快速恢复。
Git+软链接¶
配置文件一般都是文本形式,非常适合使用 Git 进行存储管理。不过问题出现了,如果我修改了软件的配置,那么是否还需要再手动复制到 Repository 目录里进行备份?
答案是不需要。可以使用软链接来创造一个文件映射,可以理解为就是 Windows 上的快捷方式。只需要修改仓库里面的配置文件,那么软件就能直接读到这个配置。
在 Linux 上可以使用 ln 命令,在 Windows 上也有人进行了相应的实现。不过其实 PowerShell 已经提供了一个命令 New-Item,可以用来创建各类文件,包括软链接文件。
New-Item -Path <软连接文件位置> -Value <原始文件位置> -ItemType SymbolicLink -Force
通过 -ItemType 设置文件类型为 SymbolicLink,符号链接即软链接。
通过使用 -Force 来实现强制创建,如果对应文件已经存在了,那就覆盖。
未来只需要在新设备上 pull 这个仓库,执行一遍上面的命令,就能把配置文件快速应用到对应的软件当中。
需要注意的是这个操作需要管理员权限,可以使用 sudo 这个工具来获取
一些适合使用 dotfile 来管理的文件¶
PowerShell 样式文件¶
PowerShell 默认的外观非常不美观,如果要使用的话,要不使用第三方 Shell,或者就自己动手美化 PowerShell。在性能较低的设备上,使用原生的 PowerShell 是更好的选择。
使用 concfg 这个工具可以快速导出导入 PowerShell 的样式,包括字体、字号、窗口样式、配色等。初次配置,可以先使用 ColorTool 先配置好配色,然后在 PowerShell 属性当中配置好其他属性。然后执行 concfg export <配置导出目标文件>,未来只需要反过来 import 就可以了。
我这里是使用了 Sarasa-Gothic 字体,然后加粗。配色是通过 ColorTool 导入了 molokai 配色。
PowerShell 启动脚本¶
Windows PowerShell 启动时可以执行一个脚本文件,进行一些自定义的预设配置。这个文件的位置,可以在 PowerShell 当中执行 $profile,来查看
同样的,从本文最上面的图片,可以看到只需要通过软链接配置好这个文件,就可以配置好 PowerShell 的运行环境。
New-Item -Path $profile -Value ~/repo/dotfiles/ps_profile.ps1 -ItemType SymbolicLink -Force
Telegram 的字体配置文件¶
Telegram for PC 版本在 Windows 上字体表现非常差,可以通过 TGFont 这一个插件来实现字体替换。不过 TGFont 默认替换的微软雅黑,并不能支持软件内的加粗字体,还需要进行定制。
New-Item -Path "~\AppData\Roaming\Telegram Desktop\TGFont.json" -Value ~/repo/dotfiles/TGFont.json -ItemType SymbolicLink -Force
VSCode 配置文件¶
虽然 VSCode 的 Settings Sync 插件已经可以做到通过 Gist 进行同步 VSCode 的配置,但是我还是倾向于自己使用 Git 进行同步,可以和其他应用的同步工作流保持一致。
无论是安装版还是绿色版的 VSCode 的配置文件都是 ~\AppData\Roaming\Code\User\settings.json,所以只需要备份这个文件,就可以在多设备上同步。
New-Item -Path "~\AppData\Roaming\Code\User\settings.json" -Value ~/repo/dotfiles/vscode_settings.json -ItemType SymbolicLink -Force
一键配置脚本¶
新设备到手,难免需要使用命令行配置各种环境,使用包管理安装软件、配置 SSH、拷贝配置文件等。所以编写一个初始化的脚本,配合同仓库下的各种配置文件,可以快速完成设备的初始化配置。
总结¶
每个人都有自己的使用习惯,探索自己的配置,才是这个方式的效率与乐趣所在
最后,附上我的 dotfiles 仓库地址,提供参考