粘贴到 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
文件中没有plugins
或safe-paste
。
有没有办法判断safe-paste
模式是否开启?也许它正在其他地方打开?
@Dasmowenator 好的,你用 ctrl+v 还是 ctrl+shift+v 粘贴?现在只是想缩小范围
只是Command+V,不需要Shift(我用的是Mac,所以我猜这相当于Ctrl+V)以上是关于粘贴到 SSH 终端大写最后一个字符,不允许我编辑它的主要内容,如果未能解决你的问题,请参考以下文章