読者です 読者をやめる 読者になる 読者になる

ボールを蹴りたいシステムエンジニア

ボール蹴りが大好きなシステムエンジニア、ボールを蹴る時間確保の為に時間がある時には勉強する。

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をやることで解決した。