粘贴到 SSH 终端大写最后一个字符,不允许我编辑它

Posted

技术标签:

【中文标题】粘贴到 SSH 终端大写最后一个字符,不允许我编辑它【英文标题】:Paste into SSH terminal capitalizes last character and doesn't allow me to edit it 【发布时间】:2020-04-13 09:41:48 【问题描述】:

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

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

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

我知道有人问过其他问题,例如 Stack Exchange 的 this one,但这些帖子中没有一个答案对我有用,所以我认为我的问题可能与那些……

【问题讨论】:

小更新:我注意到粘贴后,我可以按i 键,然后它可以让我编辑我粘贴的文本。这与您在 vim 中用于进入“插入”模式的键相同,所以现在我认为它可能与 vim 有关,但鉴于这个问题,我仍然不明白这怎么可能即使在我从未打开过 vim 的新终端上也会发生。 您使用的是哪个外壳? 看来我只是用zsh 【参考方案1】:

检查您的 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

【讨论】:

感谢您的回复。不幸的是,我的~/.zshrc 文件中没有pluginssafe-paste 有没有办法判断safe-paste 模式是否开启?也许它正在其他地方打开? @Dasmowenator 好的,你用 ctrl+v 还是 ctrl+shift+v 粘贴?现在只是想缩小范围 只是Command+V,不需要Shift(我用的是Mac,所以我猜这相当于Ctrl+V)

以上是关于粘贴到 SSH 终端大写最后一个字符,不允许我编辑它的主要内容,如果未能解决你的问题,请参考以下文章

ssh终端常用快捷键

cPanel SSH 访问 Linux 终端不允许我使用某些命令

如何复制vim编辑器中的内容粘贴到另一个终端的编辑器里

如何复制vim编辑器中的内容粘贴到另一个终端的编辑器里

Mac使用Shell(终端)SSH连接远程服务器的方法

linux 工作常用命令