Vimから秀丸を呼び出してファイルを開く

TV anime『異世界はスマートフォンとともに。』1st PV

アニメ『異世界はスマートフォンとともに。』

ノーストレスアニメです。主人公が絶対勝つことが分かってるので安心して見れます。ハラハラを求めてるとつまらないとも言えます。普通では契約できない、神獣をも召還して下僕にしてしまうんですが、主人公無敵すぎて使い魔召還する意味ないなあなんて思います。自分ができないことを、使い魔にやらせるってところが面白いのに。でもノーストレスアニメなので、気にしません。第2期もやってほしいです。

普段私はVimを使ってスクリプトを組んでいますが、Windowsを使う場合は、Vimよりも他エディタの方が使い勝手(検索のスピード等)がよい場合があります。ということで、今回はVimから秀丸を召還してみます。

まず、コマンドプロンプトからそれぞれのエディタが起動できるか確認してみます。

Vimや秀丸をインストールしただけでは、上記のようにコマンドプロンプトにパスが通ってませんので、パスを通しておきましょう。

C:\tmp> set path=%path%;C:\Program Files (x86)\Vim\vim80
C:\tmp> set path=%path%;C:\Program Files (x86)\Hidemaru

上の方法だと使用中のコマンドプロンプトにだけ適用されるので、ずっと有効にする場合は、GUIで「コントロール パネル – システムとセキュリティ – システム – システムの詳細設定 – 環境変数」から設定すればよいです。
パスが通ると、以下のようにgvimコマンドが使えます。※hidemaruコマンドも使えるようになります。

C:\tmp> gvim hoge.txt


Windowsの場合、インストール後のデフォルトの_vimrcファイルを使っているとmswin.vimが実行されているかもしれません。Ctrl+a、c、vを押した時の動作が異なるので注意が必要です。
例えばCtrl+aは、Windowsではたいていのアプリケーションは、全選択をするので、Vimでも全選択となります。
_vimrc内のmswin.vimの呼び出し(source $VIMRUNTIME/mswin.vim)をコメントアウトするか、キーマッピングを無効化します。

:unmap <c-a>
:unmap <c-v>
:unmap <c-c>
:unmap <c-x>

では、本題の準備のため、Vim上で、キーボードマクロを使って、適当にテキストを作りましょう。

i1<CR><ESC>
qqyyp<c-a>q
98@q
:g/.*/j10<CR>

と入力すると、このようなテキストが出来上がりますので、:wをして保存しておきます。

さて、本題、秀丸の呼び出しです。
秀丸のパスが通っていれば、!hidemaruで呼び出すことができます。Vimから以下のように入力すると、

:!hidemaru



コマンドプロンプトが起動して、その上に秀丸が起動しました。
起動はしましたが、秀丸エディタのウィンドウ上に何も表示されていません。ファイルを指定していないからです。Vimでオープン中のファイル名を指定するには、%を使います。また、コマンドプロンプトのウィンドウは不要なので、startコマンドを使って秀丸を呼び出ししてみます。

:!start hidemaru %


秀丸起動後のカーソルの位置を指定するには、hidemaruコマンドのオプションである/jを使います。

hidemaru /j行 ファイル名
hidemaru /j行,列 ファイル名

では、Vimから行と列を指定して呼び出してみます。5行目の16列を指定。

:!hidemaru /j5,16 %


カーソルが点滅していて画像からはわかりませんが、秀丸の右上にカーソル位置が表示されています。5:16とあるので、5行16列、指定通りです。
毎回このようにカーソル位置を指定しなければならないのでしょうか。
面倒なので、Vimで現在のカーソル位置を取得して、秀丸起動時にカーソル位置を指定できるように、Vimスクリプトを作ってみます。
適当なファイル名、t.vimを作ります。

C:\tmp> type t.vim
:function! InvokeHidemaru()
:	let [tmp1,row,column,tmp2] = getpos(".")
:	let cmdstr = "!start hidemaru /j" . row . "," . column . " %"
:	execute cmdstr
:endfunction
:
:map <f12> :call InvokeHidemaru()<CR>

Vimのgetpos関数は、カーソル位置を取得してくれます。
rowとcolumnが変数のため、直接!コマンドで値を展開できないので、executeコマンドを使っています。

関数の読み込みは、sourceコマンドでスクリプトファイルを指定。

:source t.vim

使ってみましょう。Vimで5行19列にカーソルを移動させて、F12キーを押すと、

秀丸が起動しました。
右上のカーソル位置が5:10。Vimでのカーソル位置5,19と一致してますね。
同じようにやれば、秀丸エディタでなくとも、Vimからいろんなエディタを呼び出すことができます。

コメント

タイトルとURLをコピーしました