Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

dotfilesの初期化用スクリプト

More than 5 years have passed since last update.

はじめに

dotfiles、便利ですよね。
でも環境が変わるごとにシンボリックリンク貼ったり、大変ですよね。
しかも環境が変わるってのは普通はあんまりないですし、何すればいいんだっけ?ってなりますよね。よね??
私はなります。

対象者

  • すでにdotfilesを運用してるひと
  • NeoBundleでVimプラグインを管理しているひと
  • 毎回いちいち設定するのめんどくせえってひと

一括処理しよう

一度、バッチ処理するシェルプログラム書いておけば安心ですね。
はい、書きました。

init_dotfiles.sh
#!/bin/sh

# current dir
cd $(dirname $0)

# download neobundle files
if [ -e ~/dotfiles/vimfiles/bundle/neobundle.vim ]; then
    echo "neobundle found"
    is_existed=true
else
    echo "install neobundle"
    mkdir -p ~/dotfiles/vimfiles/bundle/
    git clone https://github.com/Shougo/neobundle.vim ~/dotfiles/vimfiles/bundle/neobundle.vim
    is_existed=false
fi

# make symlink
for dotfiles in .?*; do
    case $dotfiles in 
        ..)
            continue;;
        .git)
            continue;;
        *)
            ln -Fis "$PWD/$dotfiles" $HOME;;
    esac
done
if [ -e ~/.vim ]; then
    echo ".vim found. rename .vim dir"
else
    ln -vFis ~/dotfiles/vimfiles ~/.vim;
fi

# install & update NeoBundle plugins
if [ "${is_existed}" == true ]; then
    echo "running NeoBundleUpdate...\n"
    vim -u ~/.vimrc -i NONE -c "try | NeoBundleUpdate! | finally | q! | endtry" -e -s -V1
else
    echo "running NeoBundleInstall...\n"
    vim -u ~/.vimrc -i NONE -c "try | NeoBundleInstall! | finally | q! | endtry" -e -s -V1
fi
echo "\ncompleted!"

動作環境

CentOS 6.5, OS X 10.9.5のみ確認済みです。
想定する構成は

dotfiles
  │  .vimrc
  │  .bashrc
  ~
  │  init_dotfiles.sh
  └─ vimfiles
      └─ bundle

のような感じです。

運用

非常に簡単です。

$ cd ~
$ git clone https://github.com/your_account/dotfiles.git
$ sh init_dotfiles.sh

以上です。ね、簡単でしょ?
ちなみにすでに環境がある状態で

$ sh init_dotfiles.sh

とするとプラグインのアップデートがかかります(NeoBundleUpdate)

おわりに

注意点がいくつかあります。

  • Gitで2段階認証している場合はMacからだとPushできない可能性があります。
  • vimfiles/bundle/以下がgitignoreされていない場合、何か良くないことが起こりそうな気もします
  • ルートディレクトリの.vim/や.bashrcは事前に移動か削除しておく必要があると思います。

以上です。
Enjoy! XD

kamina_zzz
Software Engineer - SRE / Server Side @ Ubie, inc.
dr-ubie
病気予測AIによる病院向け問診サービス、及び to C 向け病気予測サービスを運営するスタートアップ
https://ubie.life/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away