粘贴到 SSH 终端将最后一个字符大写,并且不允许我对其进行编辑

Das*_*tor 6 ssh terminal copy-paste paste

我在 Mac 上运行终端并通过 ssh 连接到 Linux 主机。我在将文本复制和粘贴到我的终端时遇到了 2 个问题:

  1. 当我只是在 Mac 上运行本地终端命令时(不是通过 ssh),有时我会在粘贴的文本周围出现奇怪的字符,例如00~pastedtext01~. 我用谷歌搜索,发现这显然是由于“带括号的粘贴”。我能够通过printf '\e[?2004l'在发生时运行命令来解决这个问题。
  2. 当我通过 SSH 连接到我的 Linux 主机时,当我粘贴文本时,它通常会将我粘贴的任何内容的最后一个字符大写,并且光标将变为灰色,我将无法输入其他字符或从我粘贴的任何内容中删除字符. 那时我唯一的两个选择是 ^C 在不运行命令的情况下中断到下一行,或者按 Enter 并运行混乱的命令。它不会在 100% 的情况下发生。如果我复制某些内容然后反复将其粘贴到 shell 中,我会发现大约 90% 的时间都会出现此问题。我不知道为什么它显然是非确定性的。我认为这也可能是由于“括号粘贴”问题,但无论我运行多少次命令printf '\e[?2004l'set enable-bracketed-paste off,问题依旧。当我退出并重新 ssh 到主机时,它甚至仍然存在,所以我知道这不是由于运行任何像 vim 这样的程序,因为即使在我通过 ssh 连接到主机后问题仍然会立即发生。有人可以帮忙吗???这正在扼杀我的生产力!

以下是此问题的粘贴内容:

粘贴问题

我知道,其他问题已经沿着这些线路问,像这样一个从堆栈兑换,但没有任何这些职位的答案都为我工作,所以我想我的问题可能比略有不同...

x3l*_*l51 0

检查您的 ZSH 配置

cat ~/.zshrc
Run Code Online (Sandbox Code Playgroud)

检查是否plugins=(...)找到safe-paste. 如果存在,请编辑配置并删除safe-paste.

if grep -q "safe-paste" "~/.zshrc"; then   # checks if str in contained in file
    sed -e s/safe-paste//g -i ~/.zshrc     # if so, it replaces the str with nothing
fi
Run Code Online (Sandbox Code Playgroud)

作为单行:

if grep -q "safe-paste" "~/.zshrc"; then; sed -e s/safe-paste//g -i ~/.zshrc; fi
Run Code Online (Sandbox Code Playgroud)