動的に定まる引数を取らないインスタントコマンド
この前インスタントコマンドの補完のscreenCastを作ってて気づいたんだけど。引数取らないインスタントコマンドって別にインスタントコマンドじゃなくてもいいからパスに書き加えてからcmdのフォルダの方に適当に書き加えてやってしまった方が楽なんじゃないかとか。そんな話。
例えば、この前のScreenCastでも出していた>foobarMenuとかいうインスタントコマンドは、インスタントコマンドでFoobarを操作するメニューを出すわけだけど。cmdフォルダの0enter.txtとかに
[>foobarMenu foobarMenu| "%W\fenrir.exe" /cmd="C:\Program Files\foobar2000\foobar2000.exe" /cmdfile="%cmddir\0cmd.txt" ]
こんな感じで書き加えて同じフォルダに0cmd.txtを作り中に
;;foobar [*foobar2000.exe; show |"%P" /show &hide|"%P" /hide stop |"%P" /stop play |"%P" /play &add |"%P" /add &next|"%P" /next pre |"%P" /prev &exit|"%P" /exit &nogui|"%P" /nogui ]
とか書いておくと、普通にfenrirから選んでエンター押せばメニューが出るようになる*1。[*foobar2000.exe;とか書いている所はコレで良いのか定かじゃないが。これは何が良いかと言うとC-EnterとかCtrlやAltなんかを同時押しでやると色々動作を変えたいときに、コレなら好きに変えれると言う所。難点を言えば、foobarで次の曲とかのコマンドをfenrirから送るときは出来れば連打したい。次々と曲を聴いて望んだ所まで移動したいわけで、fenrirのように毎回消えてしまうと何かと都合が悪い。むしろ、fenrirはフォーカス維持してもらった方が嬉しいけど、層じゃないので、実際にはインスタントコマンドが補完になっても使い勝手が良いとは言い難い。
検索とかは検索する単語とかが不特定に切り替わるので、やっぱ%Aの引数をが取れるinstantコマンドでやらないと無理っぽい。本当はcmdフォルダの中におくやつに%A引数を取れる方法があればCtrlとかAlt同時押しのキー操作でも呼び出せて便利化なぁと思ったりする。
*1:勿論pathファイル内に>foobarMenuを書き加える必要はあるけど。