🟩 もくじ
●●●タイトル
#Requires AutoHotkey v2.0
#SingleInstance Force
; テキストスタック(配列)の初期化
global TextStack := []
; --- [Ctrl + C] テキストをスタックへ格納(LIFO吸い込み) ---
~^c:: {
global TextStack
; クリップボードの内容が更新されるのをわずかに待つ
if !ClipWait(0.5)
return
; 空白文字のみでなければスタックの一番最初(先頭)に挿入する
currentText := A_Clipboard
if (Trim(currentText) != "") {
TextStack.InsertAt(1, currentText)
}
}
; --- [Ctrl + V] スタックから逆順に吐き出し(LIFO貼り付け) ---
$^v:: {
global TextStack
; スタックにデータがある場合
if (TextStack.Length > 0) {
; 先頭(最後にコピーした最新のもの)を取り出す
targetText := TextStack.RemoveAt(1)
; 一時的にクリップボードを書き換えて貼り付け
A_Clipboard := targetText
Send("^v")
Sleep(50) ; 貼り付け処理の安定用ディレイ
; 【重要】吐き出しきってスタックが空になったら、クリップボードもクリア
if (TextStack.Length == 0) {
A_Clipboard := ""
}
}
; スタックが空の場合は、通常のCtrl+Vとして動作
else {
Send("^v")
}
}