ハングアップの日々

2014年 4月分

2014/04/30

memo

2014/04/21

Ubuntu 14.04

 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

2014/04/19

tmux 1.9

 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/ で開かれるようになった。(もう少し良いやり方がないか気になるところだが…。)


Copyright (C) 2014 K.Takata