[PhraseExpress]一部文字化けの対処方法 – クリップボードを噛ませて出力する

PhraseExpressLogo PhraseExpress

島根の司法書士、坂根(@sakane0958)です。

PhraseExpressと日本語の間にはなかなか大きな溝が横たわっているようです。
PhraseExpressのVersion10で日本語が文字化けして使いものにならないバグを回避する方法 | jMatsuzakiでPhraseExpressの文字化けから解放されたのもつかの間のこと、何回かのバージョンアップのうちに動かないスニペットがいくつか出てきました。

今日思い立って、うまく動かないスニペットの確認と、それらがどうダメなのかを記録しながらガチャガチャやっていたら、なんと良い解決パターンを見つけました。

なお、現時点の私の環境を載せておきます。
日本語入力:ATOK2016
PhraseExpress:v11.0.133f
Paste Method:Paste text using Windows Clipboard

[2016年5月14日訂正]
「Paste text using Windows Clipboard」だと「..」を入力したら「:」を出力するスニペットがうまく動作しないことに気付きました。
「Paste text via keystroke simulation(key-by-key) with method」に戻してみたら元通り動くようになり、今回導入したクリップボードを噛ませるやり方もうまく動きました。
というわけで、Paste Methodは「Paste text via keystroke simulation(key-by-key) with method」推奨です。 PasteMethodBadCorrect

解決法:いったんクリップボードを経由して出力する

最初に2つの事例のBefore・Afterを示します。
ご自身と同様の事象か、ご確認下さい。

事例1:リンクを含む1行のスニペット

Before

{#insert IMEOFF}島根の司法書士、坂根(<a href="http://twitter.com/sakane0958" target="_blank">@sakane0958</a>)です。{#insert IMEON}

出力結果:䖁䕅居根の司法書、坂根(@sakane0958)です。

After

{#setclipboard 島根の司法書士、坂根(<a href="http://twitter.com/sakane0958" target="_blank">@sakane0958</a>)です。}{#CTRL -chars v}

出力結果:島根の司法書士、坂根(@sakane0958)です。

事例2:複数行にわたるスニペット

Before

{#insert IMEOFF}事象
経過
原因
対処
総括
知識化{#insert IMEON}

出力結果:
䖁䕅久腡
経過
原因
対処
総括
知識化

After

{#setclipboard 事象
経過
原因
対処
総括
知識化}{#CTRL -chars v}

出力結果:
事象
経過
原因
対処
総括
知識化

処理の中身

Beforeの方でやっていることは、最初に日本語入力をOFFにしてテキストを出力、日本語入力をONに戻す、という処理。
ATOKでは日本語入力ONだとPhraseExpressがうまく動作しないためです。

一方のAfterでやっているのは、クリップボードにテキストを突っ込んで、Ctrl+Vを押す。

それぞれのパターンを整理すると、こんな感じになります。
Before:{#insert IMEOFF}[出力テキスト]{#insert IMEON}
    ※IMEOFF及びIMEONのスニペットを別途設定要
After:{#setclipboard [出力テキスト]}{#CTRL -chars v}

クリップボード経由方式のメリット:シンプル、速い、文字化けしない

日本語入力のON・OFFというわずらわしい処理をイチイチかまさなくて良いのはGoodです。
また、スニペット発動後の動作が速く、一瞬でテキストが出力されます。
そして日本語が文字化けしないのは、言うまでもなく一番大事なメリット。

クリップボード経由方式のデメリット:クリップボードが上書きされる

上記のスニペットを素直にそのまま使うと、直前にクリップボードにあったものが上書きされてしまいます。
ただ、Clibor等のクリップボード履歴ソフトを使えば、たいていの不便はなんとかなるでしょう。
TaskChuteもクリップボードを上書きするので、私はクリップボードを上書きするソフトに免疫有り)

または、スニペットの中で変数等にクリップボードの内容を退避させておいて、終了時に戻す、というようなこともPhraseExpressの中でできるかもしれません。
(私はCliborで用が足りているので、当面挑戦する予定はありません)

編集後記

何回かのバージョンアップのうちに動かないスニペットがいくつか出てきてTwitterで愚痴をこぼしていたら、PhraseExpressのアカウント(@PhraseExpress)からメンションが来ました。

これを受けて「そうか、PhraseExpress側でも日本語等々の処理に問題があることは認識しているのか、報告だけでもしておくか」と思いました。
ただ、「英語で事象を報告するのが面倒臭いなぁ」という部分が大きな障壁。
忙しかったのでしばらく先延ばしの日々。

今日、ようやく重い腰をあげて整理にとりかかったところ、たまたま今回の発見に至りました。
PhraseExpressを安心して使えない状態が続いていたので、実は使用を縮小しようかと考えていました。
今回、良い解決策が見えて良かったです。

関連記事

[PhraseExpress]私が使っているスニペットの紹介 | 流れるような一日を

今回具体例として挙げた2つを含め、24個のスニペットを紹介しています。

[PhraseExpress]つまづきやすいポイントとその対処法 – 発動しない、余分に削除される、途中で止まる、文字化けする等 | 流れるような一日を

PhraseExpressは元々が英語圏のツールなので、日本語環境で使うにはいくつかの気をつけるべきポイントがあります。

[PhraseExpress]発動するけど何か変?という時にはDelaysを増やしてみる – 流れるような一日を

今回、症状が似ているような気がしたのでこの記事を思い出し、Delaysの項目も見てみました。
ただ、当時と設定項目が変わっていて、どれを増やしたらいいのかイマイチわからなかった上、それぞれ2倍程度の数字に変更してみましたが、改善しませんでした。

[PhraseExpress]英数字が全角未確定状態になる問題への対処方法 – PhraseExpressとATOKの相性問題 – 流れるような一日を

PhraseExpressとATOKの環境において、日本語入力ONの状態でPhraseExpressを発動させると、ちょっとイマイチな感じになります。
それを無理矢理克服したときの話。

コメント

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