这样的问题步骤:
Prefix :
进入tmux命令提示符command+v
以粘贴结果粘贴文字为200~kill-server201~
,而不是kill-server
。这个奇怪的bracketed paste mode文本 not 在shell提示符中发生,但是在tmux命令提示符下,我试过turn off bracketed paste mode但没有运气。
存在此问题的环境:
没有此问题的环境:
答案 0 :(得分:6)
我发布这个作为答案,因为它有点太长了,我需要一些格式......所以这就是它。
我只能使用zsh 5.1+重现。没有理由期待5.0.x上的问题,因为括号粘贴模式是introduced in 5.1。你可能在测试中做错了什么,或者你的设置可能有一些特殊的东西,在这种情况下你必须更好地解释。此外,iTerm2可能在这方面没有任何作用,因为我可以在Terminal.app中重现就好了(当然它们都可能有相同的缺陷......)。
考虑括号粘贴模式是一个ZLE功能,我认为(免责声明:本段的其余部分纯粹是我的推测)真正的问题是tmux使用底层shell的行编辑功能(ZLE,在zsh的情况下)在其命令提示符中提供更好的编辑体验(例如,您可以访问那里的所有Emacs样式快捷方式),但它的命令提示符是一个愚蠢的术语,并且不理解括号内的粘贴序列。所以我们在tmux中有两种终端仿真模式的奇怪情况,一种是在每个窗格内发生的相当聪明,另一种是在命令提示符中发生的愚蠢。
解决方案和解决方法:
这可能值得向tmux汇报。 https://github.com/tmux/tmux/issues
关闭ZLE括号内的糊状物。它确实有效,你可能做错了。如果您不介意在tmux中丢失括号中的粘贴,可以将以下内容放在shell init序列中:
(( $+TMUX )) && unset zle_bracketed_paste
在iTerm2中,您可以访问高级粘贴(编辑 - >粘贴特殊 - >高级粘贴...,或⌥⌘V)。只需取消选中“括号粘贴模式”,就不会看到转义序列。
答案 1 :(得分:0)
我解决了这个问题,最后只是停用了我的oh-my-zsh中的.LeftMouseDownMask
插件。
用于修复safe-paste的zsh up arrow completion issue。但现在,箭头完成问题已经消失,同时导致tmux括号粘贴问题。我还没有深入研究safe-paste
的代码。希望能帮助别人遇到同样的问题。