dotfilesをGitHubで管理,vimプラグインをNeoBundleで管理する方法メモ

ドットファイルGitHubで管理する

最近知ったのですが,.vimrc.bashrc等のファイルのことをドットファイルというようです。 これらをGitHubで管理することでどのマシンでも同じ設定がすぐに使える!っていうのが流行っているらしいなので、早速取り入れてみる。


まずはGitHubのページから「Create new Repository」を選択。「dotfiles」という名前のリポジトリを作成。 この時,README.md等を作成するのところにチェックを入れると後でpushするときに面倒くさくなるので,リポジトリ名だけを指定してリポジトリ作成。

それが終わったら次はローカルにdotfilesディレクトリを作成して,GitHubで管理したいファイルを移動する。

$ cd
$ mkdir dotfiles
$ mv .vimrc dotfiles
$ mv .gvimrc dotfiles
$ mv .bashrc dotfiles
$ mv .bash_profile dotfiles
$ mv .vim dotfiles
$ mv .gitconfig dotfiles
$ mv .gitconfig_global dotfiles

次はシンボリックリンクの作成。シンボリックリンクは、違う環境にdotfilesの設定をしたいときにも必要なので、シェルスクリプトで半自動化する。dotfilesディレクトリ内にdotfilesLink.shというファイルを作成.

#! /bin/bash
ln -s ~/dotfiles/.vimrc ~/.vimrc
ln -s ~/dotfiles/.gvimrc ~/.gvimrc
ln -s ~/dotfiles/.bashrc ~/.bashrc
ln -s ~/dotfiles/.bash_profile ~/.bash_profile
ln -s ~/dotfiles/.vim ~/.vim
ln -s ~/dotfiles/.gitconfig ~/.gitconfig
ln -s ~/dotfiles/.gitignore_global ~/.gitignore_global

↑のように書き込んだら、chmodコマンドで実行属性をつけて実行する.

$ chmod +x dotfilesLink.sh
$ ./dotfilesLink.sh

次はいよいよGitHubにpushする。

$ cd dotfiles
$ git init
$ git add .
$ git commit -m "initial commit"
$ git remote add origin git@github.com:mejiro/dotfiles.git
$ git push -u origin master

完了!


Vimプラグイン管理にNeoBundleを導入

Vimプラグイン管理には,評判の良いNeoBundleを導入する。

dotfilesとしてGitHubで管理しているため、git cloneではなくgit add submoduleで追加する。 dotfilesディレクトリ上で↓のコマンドを実行

$ git submodule add https://github.com/Shougo/neobundle.vim .vim/bundle/neobundle.vim
Cloning into '.vim/bundle/neobundle.vim'...
remote: Reusing existing pack: 5590, done.
remote: Counting objects: 40, done.
remote: Compressing objects: 100% (27/27), done.
remote: Total 5630 (delta 18), reused 34 (delta 12)
Receiving objects: 100% (5630/5630), 1.37 MiB | 275.00 KiB/s, done.
Resolving deltas: 100% (2180/2180), done.
Checking connectivity... done


NeoBundleの設定

まずは.vimrcに↓のように追記していく.詳しく書き方を知りたい方はこちらのスライドが分かりやすかったので見てみるといいと思う。

set nocompatible
filetype plugin indent off

if has('vim_starting')
  set runtimepath+=~/dotfiles/.vim/bundle/neobundle.vim/
  call neobundle#rc(expand('~/dotfiles/.vim/bundle/'))
endif

call neobundle#begin(expand('~/dotfiles/.vim/bundle/'))

" Let NeoBundle manage NeoBundle
NeoBundleFetch 'Shougo/neobundle.vim'

" My Bundles here:
NeoBundle 'Shougo/unite.vim'
NeoBundle 'Shougo/vimproc'
NeoBundle 'The-NERD-tree'
NeoBundle 'The-NERD-Commenter'
NeoBundle 'Gist.vim'

 call neobundle#end()

filetype plugin indent on

2014/4/17 追記 : 以前NeoBundle 'Shougo/neobundle.vim'と記述していたのですが、どうやらNeobundle自身をNeobundleで管理する場合はNeoBundleFetchというものを使うそうです(参考記事)。参考にしてくださった方申し訳ございませんでした...


この後vim上で,↓を実行すれば適用される。

:NeoBundleInstall


ちなみにアップデートするには

:NeoBundleUpdate

不要になったプラグインを削除するには、

:NeoBundleの設定を.vimrcから削除した後、↓のコマンドを実行

 :NeoBundleClean


追記

こちらによると,vimrcにNeoBundleCheckと記述するだけでVim起動時に未インストールのbundleがないかどうかをチェックしてくれるようです。便利!

動作確認

念のためNeoBundleでインストールしたプラグインがちゃんと動くか動作チェック.

前から気になっていたNERD-treeを使ってみる。 こちらを参考に.gvimrcに↓を追記。

"隠しファイルを表示する。
let NERDTreeShowHidden = 1 
"引数なしで実行したとき、NERDTreeを実行する
let file_name = expand("%:p")
if has('vim_starting') &&  file_name == ""
    autocmd VimEnter * execute 'NERDTree ./'
endif

MacVimを起動すると...

f:id:nwpct1:20140114215559p:plain

成功!

起動はコマンドモードで:NERDTree

NERDTreeでのコマンド

o : ディレクトリを開く or ファイルを開く

O : 再帰的にディレクトリを開く

s : 縦に開く

m : メニューを開く


unite.vim

↓のページにかなり綺麗にまとまってました.


dotfiles参考ページ

neobundle参考ページ

Vim参考ページ