2019年12月23日月曜日

PPxでオフライン英和辞書(一行編集)

昨日の今日であれなのだが、英和辞書を引くもっと簡単な方法があった。

準備


無料 英和辞書データ ダウンロード - ブラウザで使えるWeb便利ツール 

から辞書データ(テキスト形式)をダウンロードし、ejdic-hand-utf8.txtを適当な場所(ここではPPXフォルダ)に置いて、 以下のコマンドを実行する。

*string o,name=%*input("" -title:"英和辞書" -mode:e -k:"*completelist /set /file:%%0ejdic-hand-utf8.txt")


一行編集からインクリメンタルサーチで辞書を検索できる。



実行


僕はユーザコマンドに登録し、Ctrl+Shift+Fのホットキーで呼び出せるようにしている。

_Command = { ; ユーザコマンド・関数
eiwa = *string o,name=%*input("" -title:"英和辞書" -mode:e -k:"*completelist /set /file:%%0ejdic-hand-utf8.txt")
}
K_tray = { ; PPtrayホットキー(キー指定 不可,V_xx 形式を推奨)
^\F ,*focus !#%*findwindowtitle("英和辞書"),%0PPTRAYW.EXE -c *eiwa
}

翻訳の無い洋ゲーをやる時に使ったり




英語の字幕の意味を調べたりといろいろ便利。



他の調べ物でも、テキストファイル形式の辞書さえあれば応用できそうですね。

2019年12月22日日曜日

PPxでオフライン英和辞書(ripgrep)

英語の意味を調べる際、ブラウザなしで済ませる方法を考える。今回は

  • テキストファイル形式の辞書
  • ripgrep

の組み合わせ。
オンラインならば、Translate-shellをwslで使うのがいいかも。

準備


無料 英和辞書データ ダウンロード - ブラウザで使えるWeb便利ツール 

から辞書データ(テキスト形式)をダウンロードし、ejdic-hand-utf8.txtをPPXフォルダに入れる。

Releases · BurntSushi/ripgrep · GitHub

からバイナリをダウンロードし、rg.exeをPPXフォルダに入れる。

コマンド



%0rg.exe -N ^%"テキストを入力"%E %0ejdic-hand-utf8.txt

単語がたくさんひっかかりすぎる!という場合は、正規表現も使えるので

^%"テキストを入力"%E\s

とテキストの後ろに空白をいれる等、何かしらの工夫をするといいと思う。

参考


2019年12月21日土曜日

一行編集でメモ(Script)


前回の方法だと、与える文字列によってはエラーになるようだ。
なのでスクリプトを用いて同じことをする。



memo.js


//!*script

// 引数の文字列をPPXフォルダのmemo.txtに書き込むスクリプト
// 一行編集からの利用を想定
// 引数がなければエディタで開く

var fso = PPx.CreateObject("Scripting.FileSystemObject");

var filepath = fso.BuildPath(PPx.Extract('%0'),"memo.txt");
var str="\r\n["+PPx.Extract('%*now')+"] ";

// 引数がなければファイルをエディタで開く
if (PPx.Arguments.Length < 1){
  PPx.Execute("editor "+ filepath);
  PPx.Quit(-1);
}

// 引数が複数あればそれをつなげる
for (var i = 0; i < PPx.Arguments.length; i++) {
  if (i==0){
    str=str + PPx.Arguments.Item(i);
  } else {
    str=str + ","+PPx.Arguments.Item(i);
  }
}

// memo.txtに書き込み
var file = fso.OpenTextFile(filepath, 8, true);
file.Write(str);
file.Close();

エイリアスへ登録


A_exec = { ; エイリアス
memo = *script %0\Script\memo.js,
}

やり方


memo

とだけ入力すると、PPxフォルダのmemo.txtをエディタで開く。

memo メモの内容

とすると、メモの内容を日時付きでmemo.txtに追記する。

2019年12月8日日曜日

一行編集で簡易メモ(コマンドプロンプト)




一行編集でメモを取れるようにする。

_Command = { ; ユーザコマンド・関数
memo = *ifmatch 0%*arg(1),0 %: %Ob editor %0memo.txt %: *stop
 %Ob echo [%*now] %*arg(1)>> %0memo.txt
}

*memo

とした場合、memo.txtをエディタで開く。

*memo hogehoge

とすると、日時と一緒にhogehogeをmemo.txtに書き込む。

2019年12月1日日曜日

一行編集で指定ウィンドウをアクティブに

%*inputで読み込ませるファイルに、以下を追加する。

*focus "-xyzzy-",D:\bin\xyzzy\xyzzycli.exe
*focus "PPC[",*ppc
*focus "PPV[",*ppv
*focus " - Kinza",C:\Users\alpha\AppData\Local\Kinza\Application\kinza.exe

これで、あるソフトを使いたいとき、既に起動しているときは窓をアクティブに、起動してないときは起動するようにできる。
ちなみにxyzzyは、設定ファイルをいじってタイトルバーに-xyzzy-を含むようにしている。

つらつらと




窓の切り替えをどうするかは難しい問題だ。
窓間切り替えソフトを使うにしても、

1.窓間切り替えソフトの起動
2.インクリメンタルサーチで絞り込み

という動作が、Alt+Tabより決定的に効率的になるかは微妙だ(10年くらい前の知識で話してるので今は違うかもしれない)。
私は、

・すべての動作をランチャ起点にする
・そこに窓間切り替え操作を含める

が最適解だと思っている。そしてそれは、CuteExecのような「起動してればそのソフトをアクティブに」「起動してなければ起動」という動作になると思うのだ。
僕の場合、使うソフトなんてほぼほぼ決まっている。ファイラ、エディタ、ブラウザの3つだ。ppcを使いたいときは、何も考えずに「ppc」を2文字か3文字まで打って、Enter。xyzzyを使いたいときは、「xyzzy」の2文字か3文字まで打ってEnter。それにより、思考を中断されずに最速で次の操作に移れるはずだ。