dotfilesをgithubで管理し、Vundleを導入する
環境が新しくなったので、これを機に設定ファイル類の管理を見直してみました。
調べてみると大抵は以下のように管理されているようなので、合わせてやってみます。
dotfilesをgithubで管理する
毎回設定ファイル等をコピーしたりするのが煩わしいので、githubで管理するようにします。
手順は以下の通りです。
# dotfilesディレクトリを作成 mkdir ~/dotfiles cd ~/dotfiles # dotfilesをgit管理する git init # 「.」ファイルをdotfilesに移動 mv ~/.zshrc ~/dotfiles/ mv ~/.vimrc ~/dotfiles/ mv ~/.vim ~/dotfiles/
ここまでで、dotfilesをgit管理下にできたと思います。
後は、dotfiles配下のファイルをホームディレクトリに対してシンボリックリンクを張ればOKです。
今回は.zshrcと.vimrcだけですが、今後dotfileが増えてくるとリンクを張るのも大変なので、リンクを張るためのMakefileを作成します。
面倒な場合は、ln -snf ~/dotfiles/.zshrc ~/などでも良いと思います。
DOT_FILES = .zshrc .vimrc .vim all: zsh vim zsh: $(foreach f, $(filter .zsh%, $(DOT_FILES)), link-dot-file-$(f)) vim: $(foreach f, $(filter .vim%, $(DOT_FILES)), link-dot-file-$(f)) .PHONY: clean clean: $(foreach f, $(DOT_FILES), unlink-dot-file-$(f)) link-dot-file-%: % @echo "Create Symlink $< => $(HOME)/$<" @ln -snf $(CURDIR)/$< $(HOME)/$< unlink-dot-file-%: % @echo "Remove Symlink $(HOME)/$<" @$(RM) $(HOME)/$<
使い方は以下の通りです。
make # .zshrc, .vimrc, .vimのシンボリックリンクを作成 make zsh # .zshrcのシンボリックリンクを作成 make vim # .vimrc, .vimのシンボリックリンクを作成 make clean # .zshrc, .vimrc, .vimのシンボリックリンクを削除
後は、githubにコミットするだけです。
git add ./ git commit -m 'first commit' git push -u origin master
実際に使用する際は、git pullしてmakeを実行すればいけると思います。
vimプラグインをvundleで管理する
vimプラグインの管理は面倒なので、vundleを使用します。
RailsのBundleにインスパイアされているそう。
dotfilesはすでにgit管理下にあるので、まずvundleをsubmoduleとして追加します。
cd ~/dotfiles
git submodule add git://github.com/gmarik/vundle.git .vim/vundle.git
これでvundleが使えるので、.vimrcにvundleの設定とインストールしたいプラグインを記述します。
set nocompatible filetype off set rtp+=~/.vim/vundle.git/ call vundle#rc() " プラグインを記述する Bundle 'Shougo/neocomplcache' Bundle 'Shougo/unite.vim' Bundle 'pangloss/vim-javascript' Bundle 'tpope/vim-rails' Bundle 'vim-ruby/vim-ruby' Bundle 'vim-scripts/surround.vim' ・・・ " Vundleの処理後、ftpluginとindentを読み込む filetype plugin indent on
.vimrcを編集したら、vimを開き以下を実行しプラグインをインストールします。
:BundleInstall
ちなみに以下のようなコマンドもあります。
# プラグインの更新 :BundleInstall! # プラグインの削除 # 削除の場合、.vimrcから削除し、下記コマンドを実行しましょう(bundle配下のディレクトリを削除してくれます) :BundleClean
インストールが完了すると、~/dotfiles/.vim/bundleにプラグインが格納されます。
プラグインはいちいちgitで管理する必要はないので、.gitignoreに記述し対象外としましょう。
echo '.vim/bundle' > .gitignore
最後にgitに追加して、コミットすれば完了です。
git add ./ git status # On branch master # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # new file: .gitignore # new file: .gitmodules # new file: .vim/vundle.git # modified: .vimrc git commit -m 'install vundle' git push -u origin master
.vimrcの細かい設定などは GitHub - tiwakawa/dotfiles: dotfiles を参照頂ければと思います。
実際に使用する際は、git pullしてmakeを実行すればいけると思います。
※ただし以下の点に注意してください。
gitから落とした直後の状態だと、submoduleであるvundleは空の状態になっていますので、
.vimrcに記述されているBundleを認識することができません。
以下のコマンドでvundleをインストールするようにしてください。
cd ~/dotfiles
git submodule init
git submodule update
これで、BundleInstall等のコマンドが実行できるようになります。
最後に困ったこと
今回、vundleを導入するタイミングでneocomplcacheをインストールしました。
これは補完をうまいことやってくれるプラグインです。
ただ、インストール後にちょっと問題が起こりました。
vimを起動し挿入モードにした途端、以下のようなエラーが発生してしまうのです。
Error detected while processing InsertEnter Auto commands for "*":
E117: Unknown function:
neocomplcacheのバグなのかよく分からなかったのですが、とりあえず下記ファイルの67,68行目を修正することで対応しました。
~/dotfiles/.vim/bundle/neocomplcache/autoload/neocomplcache.vim
66 " 以下をコメントアウト 67 " autocmd neocomplcache InsertEnter * 68 " \ call s:on_insert_enter()
メッセージの通り、確かにs:on_insert_enter()関数は存在しないからなぁ。。。
何か詳細が分かる方がいたらコメント頂けると助かります(´・ω・`)
以上です。
追記します
1日で直ってましたww
- Fixed error. · Shougo/neocomplcache.vim@6032f7c · GitHub