2015/12/17追記
Macだとちゃんと動いたけどFedora22だとうまくいかない模様
何か方法考えます
2015/12/17さらに追記
tmux has-sessionでセッションが存在するかをチェックできるようなので、そちらを使うように修正しました。
おっきいディスプレイわーい!と思いながら使ってるわけですが、ターミナルを全画面で開いてるときにVimを起動すると余白が気になります。
サイドにタグバーとかファイル一覧とか出しててもやっぱり余白が大きい。
tmux使ってるんだし分割して動かせばいいかなと思ったんですが、いちいちスプリットしてから開くのも面倒なので自動でやってくれるように設定してみました。
tmuxはsplit-windowにコマンドを渡してあげると、分割した画面でそのコマンドを実行してくれるので
tmux split-window -h -p 70 "vim $1"
とします。
-hで水平分割、-p 70で横幅が全体の70%になります。
ちなみに-vを指定すると垂直分割になり、-pで指定した値が高さのパーセンテージになります。
これをvimのエイリアスにしてあげてもいいのですが、tmux上以外で実行するとエラーになるのでシェルの関数にしてみました。
split_vim() {
tmux has-session &> /dev/null
if [ $? = 0 ];
then
tmux split-window -h -p 70 "vim $1"
else
vim $1
fi
}
これだけでもいいのですが、横幅が狭いときに分割されると今度は狭いのである程度幅があるときだけ分割するようにします。
$COLUMNSでカラム数がとれるのでこれをベースに
split_vim() {
tmux has-session &> /dev/null
if [ $? = 0 ] && [ $COLUMNS -ge 120 ];
then
tmux split-window -h -p 70 "vim $1"
else
vim $1
fi
}
ついでに、すでに何かしらpaneの分割がされている場合には新たに分割したくない場合はlist-panesを使ってpaneの数を見る。
split_vim() {
np=`tmux list-panes | wc | awk '{print $1}'`
tmux has-session &> /dev/null
if [ $? = 0 ] && [ $COLUMNS -ge 120 ] && [ $np = 1 ];
then
tmux split-window -h -p 70 "vim $1"
else
vim $1
fi
}
この方法でtmuxの外でpaneの数を確認するとエラーメッセージが出るから数が1になるんだけど
あとのtmuxの存在確認で失敗するからまぁいいかなと妥協してます。
あとはこれをエイリアスにしてあげて
alias vim="split_vim $1"
としてあげると、vimと打ったときにpane分割してくれます。
横幅とかはお好みで指定するのがいいかと。
tmuxが起動してるか確認する方法とかpaneの数を確認する方法とか何か良い方法あればいいんだけど。