我定期在电子表格,电子邮件,浏览器窗口等之间复制和粘贴文本。想保留源文本的格式时,我想不到一次。
我已经知道以下解决方法:
- 使用“编辑”→“特殊粘贴”→“未格式化的文本”
- 粘贴到记事本并从那里复制
- 安装一个接管剪贴板的程序
我要告诉Windows默认情况下执行此操作。
这可能吗?
我定期在电子表格,电子邮件,浏览器窗口等之间复制和粘贴文本。想保留源文本的格式时,我想不到一次。
我已经知道以下解决方法:
我要告诉Windows默认情况下执行此操作。
这可能吗?
Answers:
抱歉不行。我相信这是设计使然。
问题是Windows剪贴板不必存储数据。它实际上是一个票据交换所,任何应用程序都可以列出刚刚复制(或剪切)的数据,并将其提供给要粘贴的任何应用程序(包括其本身)。剪贴板包含可用数据的格式列表,如果应用程序选择这样做,则数据本身采用其中某些格式。
然后,处理粘贴操作的应用程序可以选择最适合它的数据格式。某些应用程序(例如记事本)将仅接受一种特定格式(例如纯文本),如果该格式不可用,则不执行任何操作。其他默认情况下会选择一种首选格式,但是提供了一个UI,供用户在该应用程序可以理解的替代方案中进行选择。
原则上可以编写一个程序,监视剪贴板中的新内容并将所有非文本内容展平为纯文本。有一个事件可用来通知这样的监视器剪贴板上的新内容。但是,我怀疑实现这样的事情会破坏很多程序,并且可能以令人惊讶的方式破坏程序。
在普通XP中,一种简单的解决方法是使用记事本在需要时展平数据,或者使用许多工具来实现剪贴板,这些工具可通过实现堆栈,提供其内容的视图来改进剪贴板等。
如果您想尝试建立自己的工具,可能会受益于这个问题上的SO,及其相关问题....
默认情况下没有方法可以执行此操作,但是如果有一些黑客,我们可以解决此问题。
你会需要:
使用以下代码创建一个AutoIt脚本:
$ptcPath = "C:\Program Files (x86)\Plain Text Clipboard\PlainTextClipboard.exe"
HotKeySet("^v", "PastePlainText")
While True ;Keep it running indefinitely.
WEnd
HotKeySet("^v") ;unregister the hotkey
Func PastePlainText()
Run($ptcPath);
Send(ClipGet())
EndFunc
当您按Ctrl+时V,这将运行PlainTextClipboard程序,然后将剪贴板的内容发送到当前窗口。不幸的是,它将一次只发送一个字符的内容,所以它有点慢。这是我正在研究的问题,但应该作为一个合理的开始。如果有任何AutoHotKey / AutoIT专家,请随时制作自己的脚本版本。一旦弄清楚如何解决该问题,我将对其进行更新。
我也一直遇到这个问题。除了使用/编写程序来剥离多余的格式,我发现剥离格式的最简单方法是将文本粘贴到“运行”窗口(可通过WIN+ 到达R)并从那里重新复制。
因此,我最终很快就完成了此操作:CTRL+ C,WIN+ R,CTRL+ V,SHIFT+ HOME,CTRL+ C,ALT+ TAB,CTRL+ V-我不禁怀疑现在是否已经执行了太长时间了...
不过,仅适用于单行文本。
检查了annoyances.org和其他几个地方之后,我发现,共识是没有关于Windows剪贴板行为的注册表调整。我确实找到了另一个免费软件工具(ArsClip),可以完成您要寻找的东西。
我分享你的问题。令人沮丧,不是吗?
我使用[本指南] [1]准备一个可视的基本宏并定义一个快捷键。
[1]:https://web.archive.org/web/1/http://blogs.techrepublic%2ecom%2ecom/msoffice/?p = 264
->这也是我的首选解决方案。我的VBA Makro是这样的:
Sub PastePlainText()
Selection.PasteAndFormat wdFormatPlainText
End Sub
我将其附加到快捷键Ctrl + Alt + V。它在我已经使用了10多年的所有Word / Office版本中都可以完美运行。