本文介绍同步软件设置的方案是Git仓库+硬链接,实现以下场景的同步:iterm2配置、Chrome书签、zsh配置、个人带图文章等
事先准备
-
创建gitee或github远程私有仓库(推荐gitee比较快)
-
安装HomeBrewCN,安装飞快,自动配置国内镜像源
-
通过HomeBrewCN安装Git
-
Git拉取远程私有仓库到本地目录,本文用目录名指代:
~/app-settings
目录存储应用配置文件~/blog
目录存储个人文章
iTerm2配置
以往换新电脑为了同步iTerm2配置,需要先导出配置在拷贝到新机器中,这样稍嫌麻烦
同步配置上Git
打开iTerm2偏好选项,切换到Preferences标签页,开启本地存储配置:
将配置文件存储到远程仓库目录~/app-settings/iTerm2
,然后点击Save Now按钮生成配置,后续iTerm2设置都会读取这个文件,设置变动也会改变这个文件。
最后将文件同步到远程仓库:
cd ~/app-settings
git add .
git commit -m "iTerm2配置文件"
git push
拉取远程iTerm2配置
在新机器上,首先通过Git把远程仓库同步到本地目录~/app-settings
。
同样打开iTerm2偏好选项,切换到Preferences标签页,开启本地存储,路径配置到目录~/app-settings/iTerm2
。
注意! ,如果此时弹窗”是否将配置拷贝到本地“,请选择否!
最后重启iTerm2就可以看到配置生效了。
zsh配置
同步配置上Git
zsh配置文件在~/.zshrc
,为了不改变文件路径,我们可以使用硬链接的方式创建副本到~/app-settings/zsh
目录下,利用硬链接的特性:任意来源的修改都会作用到同一个文件中。
创建~/.zshrc
的硬链接,命令如下:
ln ~/.zshrc ~/app-settings/zsh/.zshrc
最后Git推送上远程仓库
同步远程zsh配置
在新机器上,将远程仓库同步到本地目录~/app-settings
。
通过-f
参数强制创建硬链接到个人目录下:
# 强制生成硬链接,强制覆盖本地源文件
ln -f ~/app-settings/zsh/.zshrc ~/.zshrc
# 让zsh配置生效
source .zshrc
以后改动zsh配置文件,用Git同步就可以了。
Chrome书签同步
同步书签上Git
打开链接chrome://version/,找到“个人资料路径”,即chrome配置存储目录,比如我的路径是/Users/<用户名>/Library/Application\ Support/Google/Chrome/Default/
目录下有个Bookmarks
文件就是书签数据,创建该文件的硬链接到远程仓库目录下:
ln /Users/<用户名>/Library/Application\ Support/Google/Chrome/Default/Bookmarks ~/app-settings/chrome-bookmarks/Bookmarks
最后通过Git同步上远程仓库。
拉取远程书签
在新电脑上,通过-f
参数强制创建硬链接到chrome目录下,命令行如下:
# 强制创建硬链接,强制覆盖Bookmarks源文件
ln -f ~/app-settings/chrome-bookmarks/Bookmarks /Users/<用户名>/Library/Application\ Support/Google/Chrome/Default/Bookmarks
创建成功后,重启Chrome浏览器就能看到书签同步成功了。
硬链接并不完美
可惜的是,修改Chrome浏览器书签后,Chrome会重新创建Bookmarks文件,所以硬链接会失效,每次同步都要用ln
或cp
命令拷贝过去,重新同步。
这个问题解决起来比较麻烦,如果是linux系统,通过ln -d
创建目录的硬链接可以解决,但mac不支持目录硬链接。我查到的方案是bindfs,需要安装macFuse:
brew install macfuse
还要到mac“恢复recovery“模式下修改安全策略,如果你安装过PlayCover,应该有修改过这个策略。
然后通过bindfs创建目录硬链接:
bindfs /Users/<用户名>/Library/Application\ Support/Google/Chrome/Default/ ~/app-settings/chrome/
然后创建~/app-settings/chrome/
目录下的.gitignore
文件,让Git忽略大部分文件,只同步Bookmarks文件:
*
!Bookmarks
本人不想修改安全策略,所以没试过,大家有兴趣的可以试下。
Git配置
Git配置文件在~/.gitconfig
,同步方式和zsh配置一样,创建硬链接实现双向修改。
这里再推荐另一种方式,将Git配置放在.zshrc
文件中统一管理,比如下面场景:
- Git语言设置为英语
- 通过
-c
参数配置Git,解决Git中文乱码问题
在.zshrc
文件中加入以下语句:
# You may need to manually set your language environment
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
# git
alias git='LANG=en_GB git -c core.quotepath=false '
统一在.zshrc
文件中管理配置,这样就不需要单独维护.gitconfig
文件了。
大家选择各自喜欢的方式来处理!
Alfred配置
Alfred配置文件比较多,有Workflows、日常功能设置等,单纯拷贝迁移费时费力,所以Alfred配置文件也很适合Git远程同步来管理。
首先打开Alfred偏好设置,切换到“Advance”标签页,找到配置存储目录设置按钮:
设置到远程仓库目录~/app-settings/Alfred
。
最后通过Git同步就可以了,Alfred配置文件是一个目录,里面内容比较多,同步会慢很多,但相比微云同步盘的速度,Git还算比较快的了。
个人文章存储
个人感觉印象笔记、有道云笔记之类的比较适合收集零散剪裁信息,Markdown编写体验很差。
所以个人推荐使用Typora编写Markdown文章,记录心得和技术文章。
最棒的是,Typora支持本地图片存储!!! ,在偏好配置-图像中设置:
勾选项说明:
- 记得勾选”优先使用相对路径“!!! :勾选后图片文件路径记录为相对路径,相对路径在Gitee和Github远程仓库才能正常显示图片
- “对网络位置的图片应用上述规则”:当我们在浏览器中右键“复制图像”,然后粘贴到Typora中时,Typora会把线上图像数据保存到本地,而不是图片URL地址。
上述配置后,图片会保存到./{文章名称}.assets
目录下,按文章名称分开存储对应的图片资源。
文章编辑好后,通过Git同步到远程仓库中,Gitee和Github文章显示效果很赞,如下:
BTW,如果大家想在iPad上编辑Git远程文章,可以参考下这个方案:
- 通过
Spck Editor
应用拉取Git远程仓库到本地 - 通过
Taio
应用编辑本地文章:打开标签页”添加的位置“-添加目录-添加本地文章目录 - 文章改动后再通过
Spck Editor
应用同步到Git远程仓库
Taio应用能实现大部分的Markdown功能,但iPad的输入体验实在不好,我后续换了台MacBook Air M1
md用户福音-搜狗输入法字符替换
搜狗输入法自带账户同步功能,这里捎带介绍下字符替换。
Markdown编写代码的时候,会经常用到反引号(`),但中文输入的时候,反引号按钮输出的是英文名分隔符(·),导致我们需要反复的切换中英文输入法,比较麻烦。
分隔符用的比较少,所以我们可以将其替换为反引号。打开搜狗偏好设置,开启字符替换:
这里第一个输入框可能无法输入分隔符,大家可以复制粘贴进去。
最后
大家有新的思路和建议欢迎评论!