Windows版GvimでPowerShellを呼び出す.

2013/07/23未分類import

Windows版GvimでPowerShellを呼び出す

設定ファイル(“vimrc等”)に下記を追加すると,
vim上で「:!プログラム名」とした際に起動するシェルがコマンドプロンプト(cmd.exe)から
Windows PowerShellに変更できる.
set shell=powershell.exe
PowerShellはコマンドプロンプトよりも高機能でパワフル*1なので,運用の幅が広がる.

*1 : だけどコマンド体系がわかりづらく,日本語のまともな資料もあまりないので非常に使いづらい.

呼び出したPowerShell上で別プロセスとしてプログラムを実行する

TeXのコンパイルは結構な時間が掛かるため,
VimでTeXを編集しているときに,普通にVimからPowerShellを呼び出し,
その上でプログラム(実行用バッチファイル)を実行しコンパイルすると,
数十秒から最悪数分間も処理で編集作業が出来なくなってしまう.

PowerShellでは“Start-Process”というコマンドで,プログラムを実行中のシェルとは別のプロセスで実行できる.
これを利用すればこのロスをなくせる.Vimのコマンドモード上で以下を実行すれば良い.
:!Start-Process -FilePath .\lualatex-set.bat 
“lualatex-set.bat”の中身は以下の通りである.
“jlreq-text.*”はバッチファイルと同じフォルダにある編集中のTeX関連ファイルたちである.
このように本文のほかに索引や参考文献も組み込み,
各カウンタの数字が正しく出力されるまで複数回コンパイルすると,相応の時間が掛かってしまう.
lualatex.exe jlreq-text.tex
mendex.exe -s jlreq-text.ist jlreq-text.idx
pbibtex.exe jlreq-text
lualatex.exe jlreq-text.tex
lualatex.exe jlreq-text.tex
さらに発展したものとして,実行される別プロセスのウィンドウをフォーカスしない(非選択状態)で実行するオプションは以下.
:!Start-Process  {.\lualatex-set.bat} -WindowStyle Minimized