にせねこメモ

はてなダイアリーがUTF-8じゃないので移ってきました。

CygwinからNotepad++でファイルを開く: Unixパスの扱い

Cygwinでテキストファイルを編集したいとき、普段Windowsで使っているNotepad++を使ってコマンド一発で開ければ便利だなあと思った。
丁度Ubuntuでgeditを使うようなイメージで。

他のWindowsプログラムについても、同様に対応可能であると思う。


Notepad++の実行ファイルは次にある。

C:\Program Files (x86)\Notepad++\notepad++.exe

これはCygwinUnixパスにすると

/cygdrive/c/Program Files (x86)/Notepad++/notepad++.exe

である。

案1

notepad++に実行ファイルのUnixフルパスをaliasしてみる。

alias notepad++='"/cygdrive/c/Program Files (x86)/Notepad++/notepad++.exe"'

内側をダブルクォートで囲んでいるのは、パスの中にスペースが含まれているため、そこで区切られて、ファイルが見つかりませんということになるのを避けるためである。

これだと、しかし、Unixパスで指定されたもの(“~/hoge”, “/usr/local/hoge”など)が開けない。これはNotepad++の実行ファイルにパスを通した場合でも同様だと思う。

案2

なので、引数が与えられた場合、cygpathを使ってWindowsパスに変換してから実行するような関数を作ってみた。

notepad++ () {
  if [ $# -eq 0 ]; then
    '/cygdrive/c/Program Files (x86)/Notepad++/notepad++.exe' &
  else
    for x in "$@"; do
      '/cygdrive/c/Program Files (x86)/Notepad++/notepad++.exe' "`cygpath -wa \"$x\"`" &
    done
  fi
}

引数の個数が0ならそのまま実行し、そうでなければすべての引数についてcygpathでWindowsフルパスに変換したものを引数として与えて実行している。
Notepad++のプログラムは & をつけてバックグラウンドで実行されるようにした。これをしないと複数ファイルを開けないからである。

~/.bashrc に書いておいた。


さて、とりあえず動いているのだが、これでいいのかどうか。