Tmux复制缓冲区限制

时间:2014-03-27 20:11:01

标签: vim copy-paste tmux iterm

每当我从tmux缓冲区复制某些内容(通常使用鼠标),稍后将其粘贴到ViM中时,内容将被截断。最后的尝试只给了我大约750字节的我复制的整个块。

这是在Mac上的iTerm。

5 个答案:

答案 0 :(得分:3)

请务必从tmux缓冲区

粘贴

我遇到了同样的问题,并且导致粘贴步骤错误。我遇到了this post

我试图做的是简单地使用ctrl-v从系统剪贴板粘贴(虽然有效,但只是部分,如你在问题中所解释的那样)。

相反,使用ctrl-b ]从tmux缓冲区粘贴可以正确完成工作。

答案 1 :(得分:1)

使用tmux 1.8,iTerm2和reattach-to-user-namespace时遇到了同样的问题。我遇到了修复问题的tmux配置绑定:它将最后一个缓冲区选择显式复制到剪贴板:

bind-key q run "tmux save-buffer - | reattach-to-user-namespace pbcopy"

将其放入~/.tmux.conf,然后C-b q会在选择后将所有内容都放入剪贴板。

答案 2 :(得分:0)

要在没有鼠标的情况下复制到Vim,您可以将tmux paste-buffer命令输出正确粘贴到您正在编辑的文件中。

noremap <leader>p :r !tmux paste-buffer<cr>

将其保存在vimrc

它将 \ + p 映射到来自缓冲区的粘贴。

<leader>默认为反斜杠( \ )。

但您可以通过设置:

将其更改为您喜欢的任何其他键(*)
let mapleader="\<Space>"
例如

(*)在Vim的限制范围内,即。

答案 3 :(得分:0)

解决了问题。几点指示。

  1. Sub MG30Nov12() 'Updateby20150519 Dim Rng As Range Dim InputRng As Range Dim nRng As Range Set InputRng = Application.Selection Set InputRng = Application.InputBox("Range :", xTitleId, InputRng.Address, Type:=8) Set InputRng = InputRng.Parent.Range(InputRng.Columns(1).Address) With CreateObject("scripting.dictionary") .CompareMode = vbTextCompare For Each Rng In InputRng If Not .Exists(Rng.Value) Then .Add Rng.Value, Rng.Offset(, 1) Else .Item(Rng.Value).Value = .Item(Rng.Value).Value + Rng.Offset(, 1) If nRng Is Nothing Then Set nRng = Rng Else Set nRng = Union(nRng, Rng) End If End If Next If Not nRng Is Nothing Then nRng.EntireRow.Delete End If End With End Sub 不是必需的。只需reattach-to-user-namespace
  2. 使用pbcopy
  3. 进行测试
  4. 诀窍是让tmux 2.3事件触发MouseDragEnd1Pane
  5. 使用pbcopy表示鼠标支持正常工作。 仅iTerm2只需tmux v2.1
  6. 您不需要vi-copy模式。只需确保set-option -g mouse on绑定如下
  7. 这是我的精简MouseDragEnd1Pane

    ~/.tmux.conf

答案 4 :(得分:0)

我回答了类似的问题here。有几件可能会影响你的地方:

  1. 终端
  2. tmux settings
  3. OS
  4. 如果您尝试从系统缓冲区粘贴并获得此行为,则终端可能会限制截断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"