Vim
Bash
SSH
vimrc
sshrc

sshした先に.bashrcや.vimrcを持って行きたい人のためのsshrc

More than 1 year has passed since last update.

いろんなサーバーにsshしてちょろっと設定を確認したりするときってあると思います。
ただその時にllがつかえなかったり、vimのタブが空白4つがいいのに8文字分の広さのtab文字だったりして、ちょっとずつストレスが溜まっていきます。

やっぱりserverfaultでもおなじ苦労をしている人がいました。

vim - How to bring .vimrc around when I SSH? - Server Fault
http://serverfault.com/questions/33423/how-to-bring-vimrc-around-when-i-ssh

ただここにあるようにdotfilesとして保存して先でcloneするのもとても面倒くさい。第一各サーバーへ変更を入れないといけないし。SSHの秘密鍵みたいに携えていきたい。

そこで探していたらsshrcというツールを見つけてこれが結構便利だったので簡単に紹介します。

sshrcとは?

まさにさっきの問題の解決策といえるもの。

Russell91/sshrc: bring your .bashrc, .vimrc, etc. with you when you ssh
https://github.com/Russell91/sshrc

Macならbrewで簡単に入ります。

$ brew install sshrc

sshの代わりにsshrcコマンドを使うことで、~/.sshrcに記述したコマンドをssh直後に自動で実行させることができます。

$ echo "alias ll='ls -l'" >> ~/.sshrc
$ sshrc me@myserver
$ type ll
ll is aliased to `ls -a'

シンプルな動作でわかりやすいですね。

vimrcをもっていく

では早速vimrcを持ち歩きましょう。~/.sshrc.dに.vimrcをいれて~/.sshrcでそれを読み込むということをします。

$ mkdir ~/.sshrc.d
$ cd ~/.sshrc.d && ln -s ../.vimrc .vimrc/
$ cat << 'EOF' >> ~/.sshrc
export VIMINIT="let \$MYVIMRC='$SSHHOME/.sshrc.d/.vimrc' | source \$MYVIMRC"
EOF
$ sshrc me@myserver
$ vim # .vimrcが読まれてる!!

このとき.vimrcにNeobundleで管理しているbundleを読み込んでいて、bundleはいつもdotfilesリポジトリ下でNeobundleをgit submoduleしているんで、~/.vim/bundle/neobundle.vim/がないときはそれらを読まないという変更をしました。
基本的にtabstopとかset nuとか基礎的なものだけでもできれば満足です。

if isdirectory(expand("~/.vim/bundle/neobundle.vim/"))
    NeoBundle 'scrooloose/nerdtree'
    NeoBundleCheck
    " ほかにもいろいろ...
endif

終わりに

いままで結構小さなストレスだったので、こいつを発見できてよかった。
ちょっと触った感じはかなり便利です。もう少し使ってみて問題なさそうだったらalias ssh='sshrc'してしまおうかと思います。

私の使っている例はdotfilesを見ればわかるので興味がある人は見てみてください。

ikuwow/dotfiles: my dot files
https://github.com/ikuwow/dotfiles