Ubuntu 14.04 が出たので、とりあえず入れてみて、いくつかのツールのバージョンを確認してみた。
Vim 7.4.52 (+lua -mzscheme +perl +python -python3 +ruby) Python 2.7.6 Python 3.4.0 Ruby 1.9.3p484 Perl 5.18.2 Tcl 8.6 :lua print(_VERSION) 5.2 $ apt-get install ruby2.0 $ ruby2.0 -v ruby 2.0.0p384 git 1.9.1 mercurial 2.8.2 automake 1.14.1 autoconf 2.69
tmux 1.9 では、新しいウィンドウを開くと、カレントディレクトリがホームディレクトリになってしまう。tmux 1.8 と同じように、今のウィンドウのカレントディレクトリをそのまま引き継いでほしいので、そのようにするための設定を調べてみた。
「tmux 1.9 で split したらカレントディレクトリがホームディレクトリになる…不便 - 青木屋です。」を見たところ、そのものずばりの問題が書かれているが、設定方法が簡単にしか書かれていない。.tmux.conf に以下を追記すれば良かった。
bind c new-window -c "#{pane_current_path}" bind '"' split-window -c "#{pane_current_path}" bind % split-window -h -c "#{pane_current_path}"
これで、新しいウィンドウを開く場合と、ウィンドウを横に分割、縦に分割する場合のどれでもカレントディレクトリを引き継ぐようになる。
普通は以上の設定で十分なのだが、/home ディレクトリが他のディレクトリへのシンボリックリンクとなっている場合の挙動を改善してみることにした。例えば /home が /storage/disk1 へのリンクになっている場合、~/foo/ で新しいウィンドウを開くと、カレントディレクトリが、/home/user/foo/ ではなく、/storage/disk1/user/foo/ などのようにリンクを展開したディレクトリになってしまう。
まずは、次のような Python スクリプト (relhomepath.py) を作って PATH の通ったディレクトリに置いた。
#!/usr/bin/env python from __future__ import print_function import os import sys if len(sys.argv) <= 1: sys.exit(1) path = sys.argv[1] homedir = os.path.expanduser("~") relpath = os.path.relpath(path, os.path.realpath(homedir)) if relpath.startswith("../"): print(path) else: print(os.path.join(homedir, relpath))
そして、.tmux.conf の記述を以下のように変更した。
bind c new-window -c "#{pane_current_path}" "cd $(relhomepath.py .); $SHELL" bind '"' split-window -c "#{pane_current_path}" "cd $(relhomepath.py .); $SHELL" bind % split-window -h -c "#{pane_current_path}" "cd $(relhomepath.py .); $SHELL"
これで、~/foo/ でウィンドウを開くと、新しいカレントディレクトリはそのまま /home/user/foo/ で開かれるようになった。(もう少し良いやり方がないか気になるところだが…。)