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

时间:2019-12-21 00:27:40

标签: ssh terminal copy-paste paste bracketed-paste

我正在Mac上运行Terminal,并进入Linux主机。关于将文本复制和粘贴到终端中,我遇到了两个问题:

  1. 当我仅在Mac上运行本地终端命令(不是通过ssh)时,有时会在粘贴的文本周围出现奇怪的字符,例如00~pastedtext01~。我四处搜寻,发现这显然是由于“包围式粘贴”所致。只要发生命令printf '\e[?2004l',我就能解决此问题。
  2. 当我在Linux主机中ssh时,粘贴文本时,它通常会大写要粘贴的内容的最后一个字符,并且光标将变成灰色,并且我将无法键入其他字符或从中删除字符无论我粘贴什么。此时,我仅有的两个选择是要么^ C不运行命令而跳至下一行,要么按Enter键并运行messed up命令。并非100%的时间发生。如果我复制某些内容,然后将其重复粘贴到外壳中,则大约90%的时间会发生此问题。我不知道为什么它看起来像是不确定的。我认为这也可能是由于“括号内粘贴”问题所致,但是无论我运行命令printf '\e[?2004l'set enable-bracketed-paste off多少次,问题仍然存在。当我退出并重新连接到主机时,它甚至仍然存在,所以我知道这不是因为运行了像vim这样的程序,因为即使在我将其连接到主机后,问题仍然会立即发生。有人可以帮忙吗???这是我的生产力!

此问题的粘贴内容如下:

Paste with issue

我知道其他类似的问题已经问过了,例如Stack Exchange的this one,但是这些帖子中的任何一个都不对我有用,所以我认为我的问题可能有点与那些不同...

1 个答案:

答案 0 :(得分:0)

检查您的ZSH配置

cat ~/.zshrc

检查在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

作为一个班轮:

if grep -q "safe-paste" "~/.zshrc"; then; sed -e s/safe-paste//g -i ~/.zshrc; fi