EagleLand

2015.04.05

dotfilesを整理した

久々にdotfilesを整理した。黒い画面に長けているわけではないので、然程モリモリしているというわけではないけど、だいぶダイエットできた。

Dropbox管理をやめてGitHubのリポジトリに

Dropboxにdotfilesを配置して、それらに対してシンボリックリンクを貼ることで設定を共有していたが、gitのリポジトリにした。これで、設定をGitHubで見れるし、変遷もコミット履歴を辿ればOK。

dotfilesリポジトリをユーザールート(~/dotfiles)に置くことにして、次のような感じでシンボリックリンクを貼るのは同じ要領。これはsetup.shに書いておく。

$ ln -s ~/dotfiles/.vimrc ~/.vimrc
$ ln -s ~/dotfiles/.zshrc ~/.zshrc
$ ln -s ~/dotfiles/.zprofile ~/.zprofile
$ ln -s ~/dotfiles/.gitconfig ~/.gitconfig
$ ln -s ~/dotfiles/.gemrc ~/.gemrc

実際にこの設定を使うには、リポジトリを~/dotfilesにクローンして、setup.shを実行するだけ。

$ git clone git@github.com:1000ch/dotfiles.git ~/dotfiles --recursive
$ sh ~/dotfiles/setup.sh

oh-my-zshをサブモジュール化

oh-my-zsh + oh-my-zsh-powerline-themeユーザーなので、それらのリポジトリを適当な場所にクローン・インストールしていたが、git管理に伴いサブモジュール化した。場所が~/dotfiles/oh-my-zshといったように決まることで迷わないし、更新も自動で出来る。

$ git submodule add git@github.com:robbyrussell/oh-my-zsh.git
$ git submodule add git@github.com:jeremyFreeAgent/oh-my-zsh-powerline-theme.git

dotfilesリポジトリのgit clone時はサブモジュールもダウンロードさせるために--recursiveもつけること。

setup.shにサブモジュール化したoh-my-zshとpowerlineテーマを有効化させるために以下のコマンドをsetup.shに書いておく。

# set up oh-my-zsh
~/dotfiles/oh-my-zsh/tools/install.sh | ZSH=~/dotfiles/oh-my-zsh sh

# create hard-link to oh-my-zsh-powerline-theme from oh-my-zsh/themes
ln -f ~/dotfiles/oh-my-zsh-powerline-theme/powerline.zsh-theme ~/dotfiles/oh-my-zsh/themes/powerline.zsh-theme

ドットファイルの更新

クローンしてきた~/dotfilesリポジトリ内にあるファイルを更新して、そのまま変更をコミットすればOK。設定を共有している他の環境でgit pullすることでそのまま適用できる。

各種バージョンマネージャ

Node.jsはnvm、Rubyはrbenv+ruby-build、Pythonはpyenvを使っているので、以下をsetup.shに追加。

# install nvm
git clone https://github.com/creationix/nvm.git ~/.nvm

# install rbenv & ruby-build
git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build

# install pyenv
git clone https://github.com/yyuu/pyenv.git ~/.pyenv

.zprofileに以下を追加し、パスを通す。

# nvm
[ -s $HOME/.nvm/nvm.sh ] && . $HOME/.nvm/nvm.sh

# rbenv
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"

# pyenv
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"

エイリアスとかファンクション

mathiasbynens/dotfilesを参考に使いそうなものを置いてあったんだけど、常用していないしので、一旦全部消した。gitもエイリアス使わずにやってる。よほど使用頻度が高いモノが出てきたら、それはまたその時に。