Vim Tmux复制缓冲区限制
每当我从tmux缓冲区复制一些东西(通常是用鼠标),然后将其粘贴到ViM中时,内容就会被截断。最后一次尝试只得到了我复制的完整块的大约750字节 这在Mac上的iTerm中。请确保从tmux缓冲区粘贴 我也有同样的问题,粘贴步骤出错了。我偶然发现 我试图做的是简单地使用ctrl-v从系统剪贴板粘贴(正如您在问题中所解释的那样,这是有效的,但只是部分有效)Vim Tmux复制缓冲区限制,vim,copy-paste,tmux,iterm,Vim,Copy Paste,Tmux,Iterm,每当我从tmux缓冲区复制一些东西(通常是用鼠标),然后将其粘贴到ViM中时,内容就会被截断。最后一次尝试只得到了我复制的完整块的大约750字节 这在Mac上的iTerm中。请确保从tmux缓冲区粘贴 我也有同样的问题,粘贴步骤出错了。我偶然发现 我试图做的是简单地使用ctrl-v从系统剪贴板粘贴(正如您在问题中所解释的那样,这是有效的,但只是部分有效) 相反,使用ctrl-b]从tmux缓冲区粘贴可以正确完成任务。使用tmux 1.8、iTerm2和重新附加到用户名称空间时,我遇到了同样的问题
相反,使用
ctrl-b]
从tmux缓冲区粘贴可以正确完成任务。使用tmux 1.8、iTerm2和重新附加到用户名称空间时,我遇到了同样的问题。我遇到了一个tmux配置绑定,它修复了这个问题:它显式地将最后一个缓冲区选择复制到剪贴板:
bind key q run“tmux保存缓冲区-|重新附加到用户名称空间pbcopy”
将其放入~/.tmux.conf
中,然后C-b q
将在选择后将所有内容拉入剪贴板。要在不使用鼠标的情况下复制到Vim中,您可以将tmux粘贴缓冲区
命令输出直接粘贴到正在编辑的文件中
noremap <leader>p :r !tmux paste-buffer<cr>
比如说
(*)在Vim的限制范围内,即。问题已解决。几点建议
不需要重新附加到用户命名空间
。只需pbcopy
使用tmux 2.3测试
诀窍是让MouseDragEnd1Pane
事件触发pbcopy
使用iTerm2
,这意味着鼠标支持可以正常工作。
从tmuxv2.1
仅设置选项-g鼠标打开
是必需的
您不需要vi复制模式。只需确保MouseDragEnd1Pane
绑定如下
这是我的精简版~/.tmux.conf
# --------------------------------
# Turn on the Mouse Support - defaults seem good
# --------------------------------
set-option -g mouse on
# when we finish "selecting" send it to pbcopy (and into the OS X buffer)
bind-key -t vi-copy MouseDragEnd1Pane copy-pipe "pbcopy"
# --------------------------------
# Use vim keybindings in copy mode
# --------------------------------
setw -g mode-keys vi
# Setup 'v' to begin selection as in Vim
# You enter with C-b [ and then "v" - then normal keypresses to "highlight"
# .. [Enter] or "y" will select (because of below bindings)
bind-key -t vi-copy v begin-selection
#
# 'y'ank will send the selection to the OS X buffer
bind-key -t vi-copy y copy-pipe "pbcopy"
# --------------------------------
# Update default binding of `Enter` to also use Send the selection to OS X buffer
# --------------------------------
unbind -t vi-copy Enter
bind-key -t vi-copy Enter copy-pipe "pbcopy"
# selecting can now be done with
# hilighting with a mouse
# selecting with C-b [ v .. now vi mode for selecting text
#
# pasting can now be done with
# ⌘ - V
# C-b ]
我回答了一个类似的问题。这里有几点可能会对您产生影响:
终点站
tmux设置
操作系统
如果您试图从系统缓冲区粘贴并获得此行为,那么终端中可能存在截断tmux可以设置的数据大小的限制。解决方案(在tmux 2.6+中)是使用如下内容:
# disable built-in setting of system clipboard
set-option -g set-clipboard off
# use external utility for setting system clipboard
# on Linux - xclip (+ssh display forwarding for remote machines)
# on osx - pbcopy
# on cygwin - cat > /dev/clipboard
# on Windows Subsystem for Linux (WSL) - clip.exe
# copy-pipe-* commands also copy to the tmux clipboard
# y yanks to clipboards but stays in copy mode
bind -T copy-mode-vi y send-keys -X copy-pipe "xclip -in -selection clipboard"
# Remove default handling
unbind -T copy-mode-vi Enter
# Enter yanks to clipboards then exits copy mode
bind -T copy-mode-vi Enter send-keys -X copy-pipe-and-cancel "xclip -in -selection clipboard"
你可能应该提供更多的信息。以什么方式截断?从一开始?从最后开始?“完整块”是多少?如果只是从一开始,粘贴前是否进入插入模式?复制的文本中可能有一个特殊字符与vim模式不符。您是否尝试过在粘贴之前在vim中使用:设置粘贴切换粘贴模式?@pandubear粘贴刚刚结束时就被切断了。此外,这看起来更像是tmux而不是vim。粘贴到其他地方也有同样的问题。我已经有很长一段时间(使用Tmux、iTerm2)在使用重新附加到用户名称空间时遇到了这个问题,我求助于直接从Tmux的缓冲区粘贴,如下面的回答所述。请参阅我对这个类似问题的回答。您需要更新配置以使用copy pipe命令将数据传递给pbcopy。这不起作用,它只打印所选内容的2行。正如所回答的,系统剪贴板被截断的唯一原因是由于终端限制。您可以重新配置终端或使用外部实用程序将文本放入系统剪贴板。
# disable built-in setting of system clipboard
set-option -g set-clipboard off
# use external utility for setting system clipboard
# on Linux - xclip (+ssh display forwarding for remote machines)
# on osx - pbcopy
# on cygwin - cat > /dev/clipboard
# on Windows Subsystem for Linux (WSL) - clip.exe
# copy-pipe-* commands also copy to the tmux clipboard
# y yanks to clipboards but stays in copy mode
bind -T copy-mode-vi y send-keys -X copy-pipe "xclip -in -selection clipboard"
# Remove default handling
unbind -T copy-mode-vi Enter
# Enter yanks to clipboards then exits copy mode
bind -T copy-mode-vi Enter send-keys -X copy-pipe-and-cancel "xclip -in -selection clipboard"