7

Вопрос: Как мне увеличить размер буфера копирования в tmux?

Данные: когда я запускаю следующую команду ...

$ for i in {1..1000}; do echo "$i"; done  

... и выделите весь вывод в tmux (используя команды мыши или клавиатуры), вот что отправляется на системный монтажный щит:

1  
2  
3  
4  
--snip--
205  
206  
207  
208  
20   (<--- Notice where it cuts off)

Triage:
- Это сохраняется, когда я покидаю tmux и убиваю сервер, перемещаю tmux.conf и запускаю новый экземпляр tmux с файлом conf по умолчанию. (Необходимость повторного изучения ключей по умолчанию была сложной задачей X_X).
- Также сохраняется на другом компьютере (опять же, с настройками tmux по умолчанию) с точным программным обеспечением (перечисленным ниже).
- Также сохраняется в Terminal.app по умолчанию (опять же, с настройками tmux по умолчанию)

Система:
OS X 10.9.2
tmux 1.9a (homebrew) + присоединение пространства имен пользователя (homebrew)
iTerm Build 1.0.0.20140421

3 ответа3

1

После прочтения этой статьи я узнал о новой команде copy-pipe которая была добавлена в tmux 1.8:

команда режима copy-pipe для копирования выделения и передачи выделения в команду.

Изменение привязок режима копирования для использования новой команды copy-pipe решило проблему для меня:

# (from my tmux.conf)...
# Change copy / paste bindings to work like Vim
# Note this used to use `copy-selection` but that has been replaced
# with `copy-pipe` as of Tmux 1.8. See: https://goo.gl/ea3CRO
bind Escape copy-mode
bind p paste-buffer
bind-key -t vi-copy v begin-selection
bind-key -t vi-copy y copy-pipe "reattach-to-user-namespace pbcopy"

# Update default binding of `Enter` to also use copy-pipe
unbind -t vi-copy Enter
bind-key -t vi-copy Enter copy-pipe "reattach-to-user-namespace pbcopy"
0

Задача решена. Несколько указателей.

  1. reattach-to-user-namespace не требуется. Просто pbcopy .
  2. Протестировано с tmux 2.3
  3. Хитрость заключается в том, MouseDragEnd1Pane событие pbcopy .
  4. Используйте iTerm2 что означает, что поддержка мыши просто работает. Начиная с tmux v2.1 требуется только set-option -g mouse on .
  5. Вам не нужен режим vi-copy. Просто убедитесь, что 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 ]
-1

Кажется, это сработало для меня:

https://stackoverflow.com/a/24973743/35003

У меня была та же проблема с использованием tmux 1.8, iTerm2 и reattach-to-user-space. Я наткнулся на привязку конфигурации tmux, которая решает проблему: он явно копирует последний выбранный буфер в буфер обмена:

bind-key q запустить "tmux save-buffer - | reattach-to-user-namespace pbcopy"

Поместите его в ваш ~/.tmux.conf, а затем Cb q вытянет все в ваш буфер обмена после выбора.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .