🟩 もくじ

●●●タイトル

#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")
    }
}
◀
 
▶

↑