什么是 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的更多相关文章

  1. win10安装docker,VSCode管理docker

    背景 docker:随着技术的不断迭代,开发环境的配置与部署越来越重要.Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linu ...

  2. Linux下,使用Git管理 dotfiles(配置文件)

    1.管理你的 dotfiles 作为一个计算机深度使用者,并且长期使用 Linux 作为主要操作系统,折腾各种功能强大的软件是常有的事儿.这些软件有它们各自的配置文件,通常以 . 开头,因此有人管它们 ...

  3. VScode开发Vue初尝试(一)

    由于公司近期有新的H5项目开发,而前端的同事也离职了,所以就临时顶缸,研究学习一下Vue框架开发. 本人也是初学,在学习过程中,把一些学习所得分享出来,可能会有很多问题和疏漏,希望大家能够多多指正,共 ...

  4. 30 个极大提高开发效率超级实用的 VSCode 插件

    Visual Studio Code 的插件对于在提升编程效率和加快工作速度非常重要.这里有 30 个最受欢迎的 VSCode 插件,它们将使你成为更高效的搬砖摸鱼大师.这些插件主要适用于前端开发人员 ...

  5. 我编写 33 个 VSCode 扩展的原因以及管理扩展的经验

    简评:使用工具的同时自己创造一些工具或扩展,是一件很棒的事情. 以下"我"指原作者 Fabio 大家好,我叫 Fabio,是一位自学成才的开发人员,热衷于开源和授权.我也喜欢自己制 ...

  6. VSCode集成Git代码管理

    一.安装和配置VSCode与Git 1.下载Git并安装: https://git-scm.com/download/ 2.下载VSCode并进行安装: https://code.visualstud ...

  7. VSCode实现文献管理

    1 常用文献管理软件 常用的文献管理软件有mendely,zotero,endnote和Papers(需要付费),具体对比参考链接1.1.1.2 笔者只用过Mendely,当时综合考虑挑了Endnot ...

  8. vscode源代码管理(vscode报错 未找到Git,请安装Git,或在"git.path" 设置中配置)

    vscode源代码管理(vscode报错 未找到Git,请安装Git,或在"git.path" 设置中配置) 直接上图,电脑上已经安装git,由于vscode没有找到git,所以v ...

  9. VScode git无法使用,Error: command 'git.push' not found 源代码管理无法使用的问题及解决方法

    正常条件下,只要电脑中安装了Git,VScode就可以直接使用. 在开始界面有下图所示的功能: 在源代码管理栏目中: 如果没能正常工作,就看不到这些功能. 可能在用某些与git相关的功能时,如安装了G ...

  10. dotfiles管理

    刚刚知道dotfiles这个东西,百度也没发现什么太有价值的讲解,还都是英文,所以自己立志来好好屡屡清楚 1.dotfiles是什么?我自己的理解:linux下(mac下)有各种app,每个人会根据自 ...

随机推荐

  1. Flask 中用 dbutils 实现数据库连接池

    之前用 dbutils 来实现数据库连接池, 这里将其封装为一个自定义类并在 flask 中实际应用一下, 在实际场景中肯定是多页面接口, 这也就涉及到 python 的 import 问题, 就个人 ...

  2. SQL 日常练习 (十四)

    最近的项目都比较忙, 没太有时间来做练习, 不过 sql 这块, 还是始终要保持良好的手感, 我已经渐渐感觉到, 随着写得越来越多, 当然不只是在这里, 更多是在工作中, 不过涉及信息安全不能共享. ...

  3. 工具:河马 WebShell扫描器 for Linux 使用教程

    安装教程: 1.下载 访问https://www.shellpub.com官方网站 2.选择适合您的版本 cat /proc/version linux 64位选择 linux amd64linux ...

  4. 稀疏贝叶斯谱估计及EM算法求解

    稀疏贝叶斯 稀疏贝叶斯学习(sparse bayes learning,SBL)最早被提出是作为一种机器学习算法[1].但是在这里我们主要用它来做谱估计,作为求解稀疏重构问题的方法[2].稀疏重构还有 ...

  5. 若依ruoyi项目学习(一)项目跑起来!

    开个坑,记录自己学习若依的心得,感兴趣的小伙伴可以关注一波. 因为自己也比较菜,可能能为大家提供一个较低的视角去分析,希望大家能一起学习. 当然,即时视角很低,也不适合0基础的朋友~ 项目地址: 前置 ...

  6. linux下用android-file-transfer-linux替换掉 gvfs-mtp来挂载mtp

    用android-file-transfer-linux替换掉 gvfs-mtp来挂载mtp 问题现状 在我使用gvfs-mtp挂载的时候,无论读取文件还是获取对应文件夹下所有文件的路径等操作,都非常 ...

  7. MySQL设置字符集、排序规则和区分字母大小

    摘要:在MySQL中,设置字符集和排序规则,在查询时区分字母大小写,utf8mb4支持emoji表情,而utf8不支持. 问题综述   在工作中,设置的一些唯一标志字符串和登录密码都是区分大小写的,但 ...

  8. CommonJS、ES 导出和导入模块

    以下代码制作展示,不能直接运行. CommonJS导出 // module.cjs // CJS默认导出 //module.exports = 'Hello world'; /*module.expo ...

  9. QEMU挂载硬盘巨大的坑(ntldr is missing )

    众所周知挂载硬盘只需要加上 -hdb 你的镜像.img 就可以了,注意此时的img是没有格式化的 然后我使用 qemu-system-x86_64 -m 4096 -enable-kvm -hdb c ...

  10. ET5.0服务端架构

    1: 整体架构图(图片来源 注意:现在的客户端与服务器的链接只有Realm和Gate.也就是说,客户端在第一次登陆时链接Realm,然后链接Gate,但是不连接Map.Map与Client之间的通讯完 ...