cygwin上からさくらエディタやSublimeTextでテキストファイルを開く
cygwin上からサクラエディタやSublimeTextでテキストファイルを開く方法。
windows10にアップグレード後、動作がおかしくなったので対処しました。
対処方法1
bashrcを編集、cygstartでデフォルトエディタで開く
$ cygstart ~/.bashrc
aliasを設定
※エディタのパスは環境に応じて変更
alias sakura=' cygstart /cygdrive/c/Program\ Files\ \(x86\)/sakura/sakura.exe $1' alias sublime=' cygstart /cygdrive/c/Program\ Files/Sublime\ Text\ 2/sublime_text.exe $1'
設定後反映
$ source ~/.bashrc
ここまでの設定で、以下のように指定エディタで開ける。
※実パスはC:\tmp\test.txt
$ sakura /cygdrive/c/tmp/test.txt
上記で特に問題無くエディタが開けて編集・保存が出来れば問題無し。
だがしかし、自分の環境では既存ファイルを開いても空データ(内容無し)で開かれ、保存しようとしても
「ファイルが存在しません。パスが存在しないか、他のアプリケーションで使用されている可能性があります。」
ってアラートが出て保存できない。
保存しようとしているパスを見るとC:\cygdrive\c\tmp\test.txtとなっている。
どうやらcygwinからの実行の関係でパスがおかしくなっているようだ。
以下、対処方法
対処方法2
bashrcを編集、cygstartでデフォルトエディタで開く
$ cygstart ~/.bashrc
元々設定していたalias設定を削除し、代わりに下記のような関数を定義。
cygpathのオプションawでWindowsパスの絶対パスに変換してる、後&を付けて別バックグラウンドプロセスとして実行してる。
function sakura() { cygstart /cygdrive/c/Program\ Files\ \(x86\)/sakura/sakura.exe `cygpath -aw $*` & } function sublime() { cygstart /cygdrive/c/Program\ Files/Sublime\ Text\ 2/sublime_text.exe `cygpath -aw $*` & }
設定後反映
$ source ~/.bashrc
source実行後に設定が反映されない事があったけどcygwinからログアウトして再度ログインしたら設定反映された。
設定反映後は問題無くファイル開けて編集と保存もできる。
ただ、バックグラウンドプロセスとして起動してるのでプロセスIDとかが表示される。特に気にせずに。
$ sakura /cygdrive/c/tmp/test.txt
もっとスマートな方法あると思うけどとりあえずはこれで。
けど元々は対処方法1のalias設定だけで上手く出来てたんだけど、Windows7からWindows10にアップグレード後からできなくなったので対処方法2をやることで解決した。