有没有这样的复制粘贴工具

大佬,按你说的改代码后,不可行哎,改成:
output := lines%n%
Sendinput,{blind}{text}output

只有第一次执行可行,后面再复制粘贴按快捷键就没反应了。每次都要重新reload ahk。

免费可以用

我用的就是免费的。

@dog 的确存在问题。经过测试,此代码存在一些与快捷键冲突的问题:比如我使用的快捷键是shift+V,如果粘贴内容首字母与SHIFT开头的电脑上的快捷键字母一样,这个字母就会被截断。比如我使用的SHIFT+E打开everything,如果粘贴内容是EMMA,那么就会输出MMA。

#SingleInstance force
n := 1
prevClipboard := ""

+V::
    if (prevClipboard != Clipboard) {
        n := 1
        prevClipboard := Clipboard
    }
    StringSplit, lines, Clipboard, `n
    if (n <= lines0) {
        SendInput % lines%n%
        n++
    }
return

额,那看来那样不行。
不过原本的那个方法如果出现 感叹号 之类的符号,会转成按键,也不行。
得改改。

试试这个,不用send方法可以避免很多奇怪问题

#SingleInstance force
n := 1
prevClipboard := ""

^j::
    if (prevClipboard != Clipboard) {
        n := 1
        prevClipboard := Clipboard
    }
    StringSplit, lines, Clipboard, `n
    if (n <= lines0) {
	
        Clipboardtemp := clipboard
	;Clipboard := ""
	Clipboard := lines%n%
	sleep,10
        Send,^v
	clipboard := Clipboardtemp
        n++
    }
return

试了下,在文本中测试,粘贴同样的内容,没发现出现刚才字母被截断的错误。

在网页输入框中测试,出现的问题是:

有的框内一次只会粘贴一行,有的框内一次则粘贴了剪贴板上的全部内容,是输入框问题?

image

image

奇怪 不应该啊
我猜测是因为两次复制的内容本质上不太一样吧
换行有两种 /n /r
上面的代码只适配了 /n 一种换行

其它可能性暂时没想到,不过应该和输入框没啥关系

你可以说说出问题的是什么输入框,我测测

经排查,可能是我安装的插件的问题。

感谢大家提供帮助!

一般的剪贴板软件, 都有类似功能. 你指定快捷键即可.

如果位置固定的话可以用搜索酱

image
%s改为%s[]就代表按行分隔

默认按行或者按空格分隔,依次取下一项
%s[-1]代表从后往前依次取下一项
%s[0]代表取第一项,%s[1]代表取第二项
%s[5|$]代表以$分隔后取第6项

也可以自定义规则,例如
#p{@=%s[]}代表点击之后给处于当前焦点的输入框赋值,内容为按换行或者空格分隔的下一项,可以绑定一个快捷键,点一下输入框按一下快捷键

之前那个版本存在两个广泛性问题,一个是对于

`n `r `n`r `r`n

有时不能正确处理,一个是部分情况下粘贴的是全部而不是一行。

下面的版本我纠正了这些问题,不得不说,new bing对于这些小细节还是很难处理到位的:

#SingleInstance force
#InstallKeybdHook
n := 1
prevClipboard := ""
Clipboardtemp := clipboard

^j::
    clipboard := clipboard
    k:=n-1
    if (prevClipboard != Clipboard && lines%k% != Clipboard) {
        n := 1
        prevClipboard := Clipboard

	ClipboardP := StrReplace(Clipboard, "`r`n", "`n")
        ClipboardP := StrReplace(ClipboardP, "`n`r", "`n")
        ClipboardP := StrReplace(ClipboardP, "`r", "`n")
        ClipboardP := StrReplace(ClipboardP, "`n", "`r`n")

        StringSplit, lines, ClipboardP, `r

    }else{
    clipboard := Clipboardtemp
    }

    if (n <= lines0) {
	
        Clipboardtemp := clipboard

	Clipboard := lines%n%
	sleep,10
        Send,^v

        n++
    }
return

@Hoothin 看起来略显复杂,需要仔细研究一下。搜索酱功能的确强大。

ChatGPT写的代码细节微调确实是个灾难,越改问题越多,最后相比耗费的时间还不如自己写。

感觉能完美覆盖的只有没有疑义的常见问题。

1 个赞

copyq能自己写脚本.

还有一个收费的软件, 叫做 ClipboardFusion , 支持 C# 代码, 只有想不到的功能,没有无法实现的功能.

我不会写脚本, 感觉平时用clibor比较顺手了。

亲测,这个版本也可行。没有发现整体粘贴的情况。

不过这几个版本都有问题,在文本里粘贴都会自动换行保持原来的排版,但是在Excel里会隔一个空行,应该是n r的问题吧。如果要在Excel里粘贴,是不是要去掉n r?算了, 这个要求有点多了。 ::

把这句
StringSplit, lines, ClipboardP, `r
里面的
撇r 换成 撇r撇n
会去掉尾部换行

不过这样一来在同一个编辑框连续粘贴会胡成一片
你可以把这俩情况分配成两个快捷键
更加方便

换成

`r`n

后,需要手动换行,并且需要按两次快捷键才会出结果。

那你试试换成

`n

试试。
总之就这么三种情况,应该总有一个符合的【表情】