我经常在电子表格、电子邮件、浏览器窗口等之间复制和粘贴文本。我想不出有哪一次我想保留源文本的格式。
我已经知道以下解决方法:
- 使用“编辑”→“选择性粘贴”→“无格式文本”
- 粘贴到记事本并从那里复制
- 安装接管剪贴板的程序
我想要的是告诉 Windows 默认执行此操作。
这可能吗?
答案1
很遗憾,没有。我相信这是设计使然。
问题是 Windows 剪贴板不必存储数据。它实际上是一个信息交换所,任何应用程序都可以在其中列出刚刚复制(或剪切)的数据,并将其提供给任何应用程序(包括它自己)进行粘贴。剪贴板包含可用数据格式的列表,如果应用程序选择这样做,则数据本身将采用其中一些格式。
然后,处理粘贴操作的应用程序可以选择最适合它的数据格式。某些应用程序(例如记事本)只接受一种特定格式(例如纯文本),如果该格式不可用,则什么也不做。其他应用程序默认选择首选格式,但提供 UI 供该应用程序在可以理解的备选方案中进行选择。
原则上,可以编写一个程序来监视剪贴板中的新内容,并将任何非文本内容平铺为纯文本。有一个事件可用于通知此类监视器剪贴板上的新内容。但是,我怀疑实现这样的功能会破坏相当多的程序,而且可能以令人惊讶的方式破坏。
普通 XP 中的简单解决方法是在需要时使用记事本来拼合数据,或者使用许多可通过实现堆栈、提供其内容视图等方式改进剪贴板的工具之一。
如果你想尝试自己构建一个工具,可能会受益于这个问题在 SO 上,以及其相关问题......
答案2
这是一个相当不错的妥协:纯文本。
这可能不是您所提问题的直接答案,但对于有更笼统问题版本的人可能会有所帮助。
答案3
默认情况下没有办法做到这一点,但通过一些黑客技术,我们可以解决这个问题。
你会需要:
使用以下代码创建 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 专家,请随意制作您自己的版本的脚本。一旦我弄清楚如何解决问题,我就会更新它。
答案4
我无法为您提供一个简单的解决方案,但与其他人一样,我会为您提供一个解决方法:
第一个选项的快捷方式是使用Ctrl+ Alt+v弹出特殊粘贴对话框,无需使用鼠标。键入u以跳至未格式化的 Unicode 文本条目(或u u获取非 Unicode 版本)然后Enter会为您完成。不完美,但内置。