使用 chezmoi & vscode, 管理你的 dotfiles
什么是 dotfiles
In Unix-like operating systems, any file or folder that starts with a dot character (for example, /home/user/.config), commonly called a dot file or dotfile.
任何以 . 开头去命名的文件或者目录都可以称为 dotfile, 在 Unix-like 系统一般用的比较多, 但现在 dotfile 一般用于管理应用/软件的配置, 所以 Windows 平台上也可以看到 dotfile 的身影.
什么是 chezmoi
chezmoi 是使用 Go 编写的跨平台 dotfiles 管理工具, 使用同一的 Git 仓库进行配置同步, 可以很方便的帮助我们在多个开发环境共用一套配置, 免去一些同一工具链需要手工重新在多个机器配置的工作量.
开源社区流行的 dotfiles 管理工具很多, 我们可以在这个网站上可以看到: https://dotfiles.github.io/utilities/.
本篇文章主要介绍使用 chezmoi 进行 dotfiles 管理的一些基本流程, 还会介绍如何使用 vscode 配置 chezmoi 让配置管理体验更好的一些小技巧.
chezmoi 管理 dotfile 工作流
# 在使用 chezmoi 时, 需要先安装 chezmoi, 可以参考: https://www.chezmoi.io/install
sh -c "$(curl -fsLS get.chezmoi.io)"
# 安装完后初始化 chezmoi 的工作目录
chezmoi init
# 使用 chezmoi cd 可以直接切换到工作目录
chezmoi cd
# 然后使用 git 将工作目录和代码仓库关联起来即可
git init
git remote add origin <your-git-repo>
官方文档也给出了使用 chezmoi 管理 dotfile 的工作流大概是怎么样的, 这里稍作解释:
我们以 .bashrc
文件的管理为例子:
# Step 1、将 .bashrc 文件纳入 chezmoi 管控范围
# chezmoi 会将该文件拷贝到 chezmoi 工作目录下, 会重命名为 dot_bashrc, 使用 dot 替换 .
chezmoi add .bashrc
# .bashrc 文件纳入管控之后, 就不应该在修改配置的时候编辑 .bashrc 文件了, 而是编辑 chezmoi 工作目录下的 dot_bashrc 文件
# 可以切换去工作目录查看下
chezmoi cd
ls -al
# Step 2、配置的修改我们可以使用如下命令去修改, chezmoi 会使用文本编辑器打开对应的 dot_bashrc 文件
chezmoi edit ~/.bashrc
# Step 3、配置修改后是还没有应用到 .bashrc 文件的, diff 命令可以用来查看修改情况
chezmoi diff ~/.bashrc
# Step 4、想应用修改后的配置可以使用 apply 命令
chezmoi apply ~/.bashrc
# 至此已经基本完成一次 dotfile 的管理, 但为了想要在其他机器也使用这此改动, 是需要使用 git 做一次配置同步的
chezmoi 使用的一些小技巧与配置建议
1、替换 chezmoi edit
使用的默认编辑器为 vscode
chezmoi edit
默认根据 $VISUAL 或 $EDITOR 环境变量决定使用什么编辑器打开文件, 我们可以修改 chezmoi 的配置文件改变 chezmoi 文件的行为, 配置文件一般在 ~/.config/chezmoi
目录下, 参考配置如下:
# 控制 chezmoi edit 命令使用的编辑器, code --wait 会确保文件关闭再继续
# 配置文件在: ~/.config/chezmoi/chezmoi.toml
[edit]
command = "code"
args = ["--wait"]
tips: chezmoi apply 应用修改后的配置时, 会根据 chezmoi 工作目录的层级去覆盖 HOME 目录对应的文件
2、替换 chezmoi diff
使用的 diff 工具为 vscode
万物皆可 vscode, 如果你想使用 vscode 的 dif 能力怎么办, 这里直接给出 chemoi 的参考配置:
# https://github.com/twpayne/chezmoi/discussions/2424
[diff]
command = "code"
args = ["--wait", "--diff", "{{ .Destination }}", "{{ .Target }}"]
[merge]
command = "bash"
3、敏感数据存储
如果你想用 chezmoi 管理你的密钥(例如: id_rsa ssh 密钥),同时又想把你的 dotfiles 配置在 GitHub 共享出来,chezmoi 自带了敏感数据存储的方案,可以使用 GPG、AGE 等对配置文件进行加密, 参考: https://www.chezmoi.io/user-guide/encryption/
本文由博客群发一文多发等运营工具平台 OpenWrite 发布
使用 chezmoi & vscode, 管理你的 dotfiles的更多相关文章
- win10安装docker,VSCode管理docker
背景 docker:随着技术的不断迭代,开发环境的配置与部署越来越重要.Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linu ...
- Linux下,使用Git管理 dotfiles(配置文件)
1.管理你的 dotfiles 作为一个计算机深度使用者,并且长期使用 Linux 作为主要操作系统,折腾各种功能强大的软件是常有的事儿.这些软件有它们各自的配置文件,通常以 . 开头,因此有人管它们 ...
- VScode开发Vue初尝试(一)
由于公司近期有新的H5项目开发,而前端的同事也离职了,所以就临时顶缸,研究学习一下Vue框架开发. 本人也是初学,在学习过程中,把一些学习所得分享出来,可能会有很多问题和疏漏,希望大家能够多多指正,共 ...
- 30 个极大提高开发效率超级实用的 VSCode 插件
Visual Studio Code 的插件对于在提升编程效率和加快工作速度非常重要.这里有 30 个最受欢迎的 VSCode 插件,它们将使你成为更高效的搬砖摸鱼大师.这些插件主要适用于前端开发人员 ...
- 我编写 33 个 VSCode 扩展的原因以及管理扩展的经验
简评:使用工具的同时自己创造一些工具或扩展,是一件很棒的事情. 以下"我"指原作者 Fabio 大家好,我叫 Fabio,是一位自学成才的开发人员,热衷于开源和授权.我也喜欢自己制 ...
- VSCode集成Git代码管理
一.安装和配置VSCode与Git 1.下载Git并安装: https://git-scm.com/download/ 2.下载VSCode并进行安装: https://code.visualstud ...
- VSCode实现文献管理
1 常用文献管理软件 常用的文献管理软件有mendely,zotero,endnote和Papers(需要付费),具体对比参考链接1.1.1.2 笔者只用过Mendely,当时综合考虑挑了Endnot ...
- vscode源代码管理(vscode报错 未找到Git,请安装Git,或在"git.path" 设置中配置)
vscode源代码管理(vscode报错 未找到Git,请安装Git,或在"git.path" 设置中配置) 直接上图,电脑上已经安装git,由于vscode没有找到git,所以v ...
- VScode git无法使用,Error: command 'git.push' not found 源代码管理无法使用的问题及解决方法
正常条件下,只要电脑中安装了Git,VScode就可以直接使用. 在开始界面有下图所示的功能: 在源代码管理栏目中: 如果没能正常工作,就看不到这些功能. 可能在用某些与git相关的功能时,如安装了G ...
- dotfiles管理
刚刚知道dotfiles这个东西,百度也没发现什么太有价值的讲解,还都是英文,所以自己立志来好好屡屡清楚 1.dotfiles是什么?我自己的理解:linux下(mac下)有各种app,每个人会根据自 ...
随机推荐
- Java和C++性能大比拼
用来运行Java语言的HotSpot VM主要是用C++语言来写的,所以我们在研究JDK时不得不去学习C++这门语言.C++和Java都是面向对象的语言,所以它们常被拿来做比较.本文将从性能的角度对比 ...
- 实现C++智能指针
在对象切片一文中,提到可使用充当智能指针的类shape_wrapper,可以简化资源的管理,从根本上消除资源(包括内存)泄漏的可能性,本节来看下如何将shape_wrapper改造成一个完整的智能指针 ...
- Vue3+Ts笔记:基于element-UI 实现下拉框滚动翻页查询通用组件
element 提供了 el-select组件,并且支持远程搜索,但是对于数据量大需要翻页的场景并未提供相应配置,所以自己写了一个通用组件,作为记录 初始化控件,定义传入参数 将远程查询的接口封装为函 ...
- 记录第一次公司内部分享:如何基于大模型搭建企业+AI业务
Hello, 大家好,我是程序员海军, 全栈开发 |AI爱好者 | 独立开发. 记录第一次在公司内部分享AI+业务 落地实践. 如今,AI时代带来的无限可能性,很多业务都值得从做一遍. 最近,老大参加 ...
- 使用 ftrace 跟踪内核丢包问题定位的实践
本文分享自天翼云开发者社区<使用 ftrace 跟踪内核丢包问题定位的实践>,作者:f****n 数据包的丢失可能会导致性能下降或服务中断.为了诊断内核中是否有丢包问题,我们可以使用 ft ...
- etcd详细介绍
一.etcd介绍 etcd是一个分布式.可靠的key-value存储的分布式系统,它不仅仅可以用于存储,还提供共享配置和服务发现.这里提供配置共享和服务发现的系统较多,比较常用的有zookeeper. ...
- ArcObjects SDK 019 SpatialReference
1.SpatialReference的结构 ArcObjects SDK帮助中Esri.ArcGIS.Geometry命名空间帮助中的Object Model Diagram共两页,第一页就是Geom ...
- FastAPI权限缓存:你的性能瓶颈是否藏在这只“看不见的手”里?
title: FastAPI权限缓存:你的性能瓶颈是否藏在这只"看不见的手"里? date: 2025/06/23 05:27:13 updated: 2025/06/23 05: ...
- UFT 对时间的处理
1. 当前时间的后n天 2. 当前时间的前n天 3. 当前时间 eg:
- Kafka入门实战教程(9):深入了解Offset
1 什么是offset? Offset,消息位移,它表示分区中每条消息的位置信息,是一个单调递增且不变的值.换句话说,offset可以用来唯一的标识分区中每一条记录. 消费者消费完一条消息记录之后,需 ...