Abstract
本投稿では,Cygwin 上にインストールされた,Emacs を,WinSCP から起動します.WinSCPは,MS-Windows上で動くオープンソースでグラフィカルなFTP,FTPS,SFTPクライアントプログラムです [1].WinSCP は,コマンドプロントからの呼び出しと同様の手法で,外部の様々なエディタを起動できます.しかし, Cygwin 上にインストールされた Emacs は,引数の与え方の関係で上手くいきません.そこで,本投稿では,まず,Cygwin 上にインストールした Emacs をコマンドプロントから呼び出します.次に,WinSCP からバッチファイルを経由することで,Cygwin 上の Emacs を起動する方法を提案します.
コマンドプロントからの Emacs 起動
■ コマンドプロントの起動
■ コマンドプロントから Cygwin 上の Emacs を起動
同時に,デスクトップに用意したファイル
■ ターミナルからではなく,Emacs の Window で起動
通常であれば,上記より,
[Winキー] + [R] -> cmd -> [Enter]
■ コマンドプロントから Cygwin 上の Emacs を起動
C:\cygwin64\bin\mintty.exe -i /Cygwin-Terminal.ico -e C:\cygwin64\bin\emacs-X11.exe起動風景

同時に,デスクトップに用意したファイル
a.txt
を開く場合 (表示の問題により,改行表記) は,
C:\cygwin64\bin\mintty.exe -i /Cygwin-Terminal.ico -e C:\cygwin64\bin\emacs-X11.exe /cygdrive/c/Users/[User Name]/Desktop/a.txt
■ ターミナルからではなく,Emacs の Window で起動
通常であれば,上記より,
C:\cygwin64\bin\mintty.exe -i /Cygwin-Terminal.ico -e C:\cygwin64\bin\emacs-X11.exe /cygdrive/!.!と WinSCP に指定することで,エディタを起動することができるはずです.(なお,"!.!" は,WinSCP により自動挿入される.この部分が編集先のファイルへのパスへと置換される.) しかしながら,WinSCP では,ファイルのパスを,
C\XXX
ではなく,C:\XXX
と与えるため,emacs 側が上手く読み込むことができません.そこで,今回は,ディレクトリの受け渡しの段階で,バッチファイルを間に挟みます.
バッチファイルの作成
置換により,コロン ':' を削除し,Emacs を実行するバッチファイルを記述します.
C:/cygwin64/home/[usr]/WinSCP2Emacs.bat
このとき,
C:/cygwin64/home/[usr]/WinSCP2Emacs.bat
@echo off set Input=%1 set buf=%Input::=% set FilePath=%buf:\=/% C:\cygwin64\bin\mintty.exe -i /Cygwin-Terminal.ico -e C:\cygwin64\bin\emacs-X11.exe /cygdrive/%FilePath%
このとき,
%[置換対象]:[置換前]=[置換後]%
となります.
WinSCP の設定
WinSCP に,エディタを指定します.

1. [オプション(O)]->[環境設定(P)...Ctrl+Alt+P]->[エディタ]->[エディタの設定]->[追加(A)...]->[エディタ]->[外部エディタ(E)]に,
2. 画面そのままで,[外部エディタのオプション(リモートファイルの編集にのみ影響)]->[常にテキスト転送モードで転送する(T)]にチェックを入れる.

1. [オプション(O)]->[環境設定(P)...Ctrl+Alt+P]->[エディタ]->[エディタの設定]->[追加(A)...]->[エディタ]->[外部エディタ(E)]に,
C:\cygwin64\home\[usr]\WinSCP2Emacs.bat !.!と設定する.
2. 画面そのままで,[外部エディタのオプション(リモートファイルの編集にのみ影響)]->[常にテキスト転送モードで転送する(T)]にチェックを入れる.
付録:バッチファイルを Emacs のショートカットとして利用
本筋とは外れますが,先ほど作成したバッチファイルに,任意のテキストファイルをドラック&ドロップすると,Cygwin 上の Emacs で開くことができます.
デスクトップにショートカットとして設置しておくと,便利にファイルへアクセスすることができます.
上記のバッチファイルのままでも,ファイルを開くことができますが,下記のように
※ 日本語入力が上手く機能しない場合は,一度 C:\cygwin64\bin\mintty.exe を手動で起動し,タスクバーを右クリック -> Options... -> Text において,Locate: ja_JP, Character set: UTF-8 と設定し,Save してください.
for
文を回す [2] ことで,一度に複数ファイルをドラック&ドロップで開くことができます.
@echo off setlocal enabledelayedexpansion set Input= set buf= set FilePath= for %%a in (%*) do ( set Input=%%a set buf=!Input::=! set FilePath=!buf:\=/! C:\cygwin64\bin\mintty.exe -i /Cygwin-Terminal.ico -e C:\cygwin64\bin\emacs-X11.exe /cygdrive/!FilePath! ) endlocal if "%1" == "" ( C:\cygwin64\bin\mintty.exe -i /Cygwin-Terminal.ico -e C:\cygwin64\bin\emacs-X11.exe )
※ 日本語入力が上手く機能しない場合は,一度 C:\cygwin64\bin\mintty.exe を手動で起動し,タスクバーを右クリック -> Options... -> Text において,Locate: ja_JP, Character set: UTF-8 と設定し,Save してください.
参考文献
0 件のコメント:
コメントを投稿