いろんなサーバーに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
$ ln -s ~/.vimrc ~/.sshrc.d/.vimrc
$ cat << 'EOF' >> ~/.sshrcexport 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