为什么在 Firefox 上粘贴到 Gmail 中的 xclip 复制文本会将换行符变成空格?

为什么在 Firefox 上粘贴到 Gmail 中的 xclip 复制文本会将换行符变成空格?

我制作了一个文本编辑器,它使用 xclip 来复制文本。我注意到,当我将 xclip 复制的文本(按常规方式粘贴,使用 ctrl+v)粘贴到我正在撰写的 Firefox 54.0(64 位)上的 Gmail 电子邮件中时,它会将所有换行符替换为空格(如果连续有多个换行符,则会将所有换行符合并为一个空格)。当我将其粘贴到其他地方时,我没有这个问题。然而,当我从 Leafpad 之类的地方复制并将其粘贴到 Firefox 中的 Gmail 电子邮件中时,它会保留换行符。 Chromium 网络浏览器中的 Gmail 不会出现同样的问题。

为什么会发生这种情况,有没有办法修复它,这样就不会消除换行符?

我在 Xubuntu 16.10(64 位)上使用 xclip 0.12。这是我用来复制文本的命令:

xclip -selection clipboard [seeBelow]

我使用这行 Python 代码在上面 [seeBelow] 的位置插入文本:

subprocess.Popen(command, stdin=subprocess.PIPE).communicate(text.encode());

我正在从 Python3 Tkinter 多行文本小部件复制文本(嗯,一个继承 Text 的小部件,并且对于我们的目的来说实际上应该是相同的)。

这个问题似乎只发生在 Firefox 中的 Gmail 中。然而,这是我经常喜欢粘贴的地方,因为我经常在编辑器中编写电子邮件。

答案1

这也让我疯狂了一段时间。我可以从各种来源复制和粘贴,但不知何故,来自xclipnvim-qt(NeoVim GUI)的任何内容都会导致换行符折叠成空格。顺便说一句,同样的问题出现在 Slack 和 Rocket Chat 上,但显然没有出现在 Stack Exchange 上。同时,在相同的文本区域中,浏览器内的 vim 克隆wasavi具有相反的问题:每个换行符加倍。

我的解决方法是使用一个简单的替代品xclip。代码在Python 2.7中测试如下:

#!/usr/bin/env python

import pyperclip   # pip install --user pyperclip
import sys

filename = sys.argv[1]

with open (filename) as f:
    pyperclip.copy (f.read ())

同样,您可以使用 从剪贴板中提取文本s = pyperclip.paste()

答案2

我刚刚发现,虽然 Ctrl+V 确实会粘贴到 Firefox 中,并将新行替换为空格,但 Ctrl+Shift+V 会保持新行完好无损。

相关内容