月度归档:2015年12月

在Mac上简易设置Oh-My-Zsh的BulletTrain主题

起因

近期有了一台新的MacBook,自然少不了基本的装机过程,其中Homebrew和Oh-My-Zsh作为生产力工具算是必装的软件。

不过Oh-My-Zsh的默认主题看久了仍然还是觉得有些枯燥,动了想要更换主题的念头,于是有了后面的步骤。

步骤

安装Vim

常规的Homebrew安装和Oh-My-Zsh不需多言,而这次选定的Bullet Train主题却需要Vim的Powerline插件支持。而Powerline需要正常显示则需要安装已Patch了特殊字符的字体,如果使用iTerm2还需要设定显示字体为已Patch的字体……

由于Powerline需要Python支持,那么安装vim可以按照如下方式进行安装:

安装已Patch的字体

针对一些譬如手写对勾和叉以及git分支之类的符号,需要安装已Patch的字体,按照说明安装即可。

由于个人比较喜欢Monaco字体,对Monaco字体进行了Patch。

安装powerline

由于一直使用Vundler管理vim插件,通过Vundler安装这一插件十分方便,在~/.vimrc中添加:

为了启用这一插件的美化效果,则需要在~/.vimrc中添加如下配置:

之后在vim中执行:BundleInstall即可,还没有使用Vundler的可以一试。

具体参考了setup-vim-powerline-and-iterm2-on-mac-os-x

设置iTerm2

iTerm2个人一直在使用,需要将显示字体设定为已Patch的字体。

iterm2-set-display-patch-font

vim能够显示三角、分支等特殊字符即说明已然设置完毕。

fancy-vim

安装Bullet Train for oh-my-zsh

Oh-My-Zsh的主题安装一直都是很简便,直接wget对应的插件到~/.oh-my-zsh/themes即可,启用则是在~/.zshrc中设定ZSH_THEME="bullet-train"即可。

default-theme-effect

定制显示颜色

默认的显示颜色感觉略微的不和谐,好在这一主题可以通过在~/.zshrc中设置颜色等属性完成设定。

首先这里要保证iTerm2使用的是xterm-256color终端方式(在iTerm2的Preference->Profiles->Terminal中可以查看),后续显示使用的颜色会设定成这256色中一种。

定制颜色主要分为前景色,即字体的显示颜色,以及背景色。

这一主题的箭头标部分主要显示的是时间、目录、当前目录git信息,所以主要设定的是这三个部分的颜色以及参数:

阅读主题源码后了解到对于颜色直接对属性值赋予256色对应的颜色值即可。

颜色与数值的对应关系可以参考下图:

256-colors

最后

历经这一过程,终于完成了一些简单的修改,工作的时候可能也会更愉悦吧

theme-effect

以上。

从Pelican到Hexo

起因

用Pelican在GitHub上搭blog有段时间了,一直想要更清爽简单的blog解决方案,之前使用的Pelican算是满足了我的需求,但是还想尝试一下其他的系统,同时从视觉效果上来说Hexo+Next主题目前更让我觉得满意,于是决定从Pelican迁移到Hexo。

问题

搭建、使用Hexo的教程google一下就能找到,这里主要说一下自己迁移过程中遇到的一些小问题。

文档迁移

Pelican本身也是支持Markdown的的文章写作方式,其实需要修正的地方主要是头部的部分属性。

首先可以将Pelican的content目录下的所有Markdown文件复制到Hexo目录下的source/_posts/目录下。

Pelican通过DateTitleCategoryTagsSlug来表征写作时间、标题、分类、标签、Url等信息,例如:

而Hexo也是类似:

可以简单使用sed完成转换:

关于sed -i后的参数问题,参见stackoverflow上关于在Mac OS X下的sed使用问题

Git设置

允许Git添加非ASCII文件

hexo deploy过程中会在Git中在添加非ascii文件,所以需要在选项中开启这一设置。

Git中文文件名

某些情况下文章使用了中文tag,而生成Tag时会生成中文文件名的目录文件,Git需要关闭对中文文件名的转码。

GitHub CNAME问题

使用GitHub部署的情况下,绑定自定义域名的方法自然是添加一个CNAME文件,最简单的方法可以使用插件来完成。

最后

以上

git根据仓库url修改用户信息

起因

日常Coding使用git的一个问题是,公司工作和个人项目有时候会使用不同的用户信息,例如公司项目要求个人信息必须为your_name@your_company.com的形式,而你自己在使用Gmail,这里自然有些冲突,如果忘记在clone的项目中配置一下,极有可能会把自己的日常使用邮箱提交到公司的repo中,反之亦然。

虽然git本身可以通过--global进行配置,日常使用上使用都用自己的常用个人信息,但是公司项目每次都要单独配置也是做了太多无用功,那么如果能让这个任务更加自动化想必是可以提高工作效率的。

方案

解决的思路决定采用githooks进行处理,在每一次的commit操作前触发,判断当前项目的远端仓库url是否为公司url,若为公司url则修改当前项目目录下的git用户信息,即:

具体匹配操作运用了shellAWK的结合,个人感觉AWK在匹配以及字符串处理上更胜一筹,主要逻辑利用AWK完成。

主要逻辑如下:

其中通过awk的exit值向shell传递信息,通知当前状态,若修改完成,提示用户重新进行commit操作。

使用

GitHub上获取代码后,根据实际情况配置好匹配规则以及用户信息,将hook文件置入git安装目录下的/share/git-core/templates/hooks/之下,并chmod +x赋予执行权限,如在mac上通过homebrew安装的git,则会在类似:

目录下。

最后还需要指定项目的默认init模板目录,例如:

后续clone的项目都能起到效果了。

参考文档

参考了 @liaohuqiu 大大的博客文章git: 提交前强制检查各个项目用户名邮箱设置,同时修改了相关项目的代码,感谢!

TODO

在脚本中尝试帮助用户完成提交操作。