zsh shell中命令提示符处的Tmux括号粘贴模式问题
问题步骤如下:zsh shell中命令提示符处的Tmux括号粘贴模式问题,zsh,tmux,Zsh,Tmux,问题步骤如下: 将文本“kill server”复制到系统剪贴板 点击前缀:进入tmux命令提示符 点击命令+v粘贴 结果粘贴文本是200~kill-server201~,而不是kill-server。这种奇怪的文本不是在shell提示符中出现的,而是在tmux命令提示符中出现的,我曾经尝试过这样做,但没有成功 存在此问题的环境: Mac OS 10.11.1、iTerm、zsh 5.0.7、Tmux 2.1 Mac OS 10.10.1、iTerm、zsh 5.1.1、Tmux 1.9 没
前缀:
进入tmux命令提示符命令+v
粘贴200~kill-server201~
,而不是kill-server
。这种奇怪的文本不是在shell提示符中出现的,而是在tmux命令提示符中出现的,我曾经尝试过这样做,但没有成功
存在此问题的环境:
- Mac OS 10.11.1、iTerm、zsh 5.0.7、Tmux 2.1
- Mac OS 10.10.1、iTerm、zsh 5.1.1、Tmux 1.9
- MacOS10.11.1、iTerm、bash、TMUX2.1
- 这可能值得向tmux报告
- 关闭ZLE括号内的粘贴。它确实有效,您可能做错了。如果您不介意在tmux中丢失括号内的粘贴,您可以将以下内容放在shell init序列中的某个位置:
(( $+TMUX )) && unset zle_bracketed_paste
- 在iTerm2中,您可以访问高级粘贴(编辑->特殊粘贴->高级粘贴…,或⌥⌘五) .只需取消选中“括号粘贴模式”,您就不会看到转义序列
- 我将此作为答案发布,因为它有点太长,我需要一些格式。。。就这样
我只能用zsh 5.1+复制。没有理由认为5.0.x会出现问题,因为括号中的粘贴模式是错误的。您可能在测试中做了一些错误的事情,或者您的设置可能有一些特殊之处,在这种情况下,您必须更好地解释。此外,iTerm2可能在这方面没有起到任何作用,因为我可以在Terminal.app中很好地复制(当然,它们可能都有相同的缺陷…)
考虑到带括号的粘贴模式是ZLE特性,我认为(免责声明:本段的其余部分纯粹是我的推测),真正的问题是tmux在其命令提示符中使用底层shell的行编辑特性(ZLE,在zsh的情况下)来提供更好的编辑体验(例如,您可以访问那里的所有Emacs样式快捷方式),但它的命令提示符是一个哑词,不理解括号中的粘贴序列。因此,我们在tmux中有两种终端模拟模式,一种是在每个窗格中进行的相当智能的终端模拟,另一种是在其命令提示符中进行的哑终端模拟
解决方案和解决办法:
我终于解决了这个问题,在我的oh my zsh中停用了
安全粘贴
插件
过去是用来修复的。但是现在,箭头完成问题已经消失,而导致tmux括号粘贴问题。我还没有深入到
安全粘贴的代码中。希望能帮助其他遇到同样问题的人。谢谢你的回复。这可能对其他使用zsh 5.1+的人有所帮助。