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

Brō*_*rāx 6 firefox xclip python3

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

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

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

xclip -selection clipboard [seeBelow]
Run Code Online (Sandbox Code Playgroud)

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

subprocess.Popen(command, stdin=subprocess.PIPE).communicate(text.encode());
Run Code Online (Sandbox Code Playgroud)

我正在从 Python3 Tkinter 多行 Text 小部件(嗯,一个继承 Text 的小部件,对于我们的目的应该几乎相同)复制文本。

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

小智 2

这也让我疯狂了一段时间。我可以从各种来源复制和粘贴,但不知何故,来自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 ())
Run Code Online (Sandbox Code Playgroud)

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