クリップボードのスタック履歴化について
-
Vz-likeなコンソールテキストエディタneのUTF-8対応版n8を見つけ、Vzはカット&コピー&ペーストのスタック履歴が便利だったなと思いだし、Meryでも実現できないか試行してみました。
https://github.com/nanshiki/n8
Mery独自のクリップボード履歴をマクロで操作できればよかったのですが、マクロリファレンスを見てもそんな機能はなさそうでした。
https://www.haijin-boys.com/wiki/マクロリファレンス:ClipboardData_インターフェイス
なのでMeryのクリップボード履歴を無効化し、フリーソフトのCopyQのコマンドレットでやってみました。
CopyQはクロスプラットフォーム(Windows,Mac,Linux)の高機能クリップボード履歴ソフトです。1、CopyQのメイン画面を開く
2、F6を押して「コマンド」ダイヤログを開く
3、左上の「+追…)」ボタンを押して、「コマンドを追加」ダイヤログを開く
4、左上の「新しいコマンド」をダブルクリック
4、名前(N)に「貼り付けて履歴から削除」と入力
5、コマンド(D)に以下を入力copyq: try { select(0) paste() remove(0) } catch (e) { abort() }6、「グローバルショートカット」を選択し、任意のキーバインドを登録
7、「OK」で閉じる以上で、登録したキーバインドでクリップボードスタックの貼り付けが実現できます。
CopyQはWindows環境で長らくメモリリークのバグがあり、サスペンドで一週間ぐらい起動し続けると1GB超メモリを浪費し常用しにくかったのですが、Ver15以降で直って軽く使いやすくなりました。
| enaka | 返信 -
情報共有ありがとうございます。
> Mery独自のクリップボード履歴をマクロで操作できればよかったのですが、マクロリファレンスを見てもそんな機能はなさそうでした。
参照されているマクロリファレンスは v2 系のものですね。
v3 系のマクロリファレンスはこちらになります。(MeryWiki → マクロリファレンス → 「Mery Ver 3.0.0 以降のマクロリファレンスはこちら」のリンクからも辿れます)
https://www.haijin-boys.com/wiki/マクロリファレンス:3:ClipboardData_オブジェクト
v3 系では、ClipboardData の各メソッドの第 2 引数にインデックス番号を指定できるようになっており、特定のクリップボード履歴を操作できます。
たとえば、「先頭の履歴を貼り付けて、その履歴を削除する」という処理であれば、こんな感じで実現できます。
document.selection.Text = clipboardData.GetData("Text", 0); clipboardData.ClearData("Text", 0);とはいえ、Mery のクリップボード履歴機能はどちらかというとオマケ程度の機能なので、本格的に活用するのであれば、やはり CopyQ のような専用ツールのほうが便利だと思います。
> CopyQはWindows環境で長らくメモリリークのバグがあり、サスペンドで一週間ぐらい起動し続けると1GB超メモリを浪費し常用しにくかったのですが、Ver15以降で直って軽く使いやすくなりました。
最近の Windows 環境だと、PC をスリープやサスペンドのまま何日も使い続けることも珍しくないので、その問題が解消されたのはありがたいですね。知らなかったので参考になりました。
あと、Windows 10 以降では Windows キー +
Vで利用できる OS 標準のクリップボード履歴機能もあるので、Mery のクリップボード履歴機能の出番は少なくなってしまいましたね。| Kuro | 返信 -
追伸です。
クリップボード履歴が空の場合に何もしないよう、こんな感じで書いておくと安心かもしれません。
var s = clipboardData.GetData("Text", 0); if (s !== "") { document.selection.Text = s; clipboardData.ClearData("Text", 0); }| Kuro | 返信