Повернення старої поведінки вставлення копії в tmux, за допомогою миші


111

Це те, що я робив у tmux для копіювання та вставки (за допомогою миші клавіатура працює інакше, і це не те, що мене цікавить):

  1. Виберіть текст мишкою, натиснутою лівою кнопкою
  2. Вставте текст середньою кнопкою

Я оновив свою ОС, і це отримало нову версію tmux. Я не змінив свій .tmux.confконфігураційний файл.

Це те , що я повинен зробити з поточною версією tmux, 1.6(який поставляється з попередньо упаковують в останній CrunchBang Linux):

  1. Виберіть текст за допомогою миші, натисніть ліву кнопку та натисніть shiftклавішу
  2. Вставте текст середньою кнопкою
  3. Термінал заблокований, в інформаційній області "litte" відображаються деякі цифри у верхньому правому куті поточної панелі (тобто [0/24], ймовірно, щось пов'язане з тим, скільки символів було вставлено), що для мене мало значить і мені не потрібно / хочу (редагувати: це Здається, copy-modeтут вводиться автоматично)
  4. Мені потрібно натиснути qклавішу, щоб знову отримати функціональний термінал.

Це занадто багато клопоту для того, що я роблю десятки разів на день. Як змусити старий механізм знову працювати?


2
в моєму терміналі st, Shift+ MouseMiddleвставить Xselection як традиційне поведінка. FWIW, MouseMiddleбез модифікатора нічого не робить.
nabin-info

Відповіді:


84

Щоб відновити конфігурацію копіювання / вставлення за замовчуванням, вам потрібно (принаймні тимчасово) відключити підтримку миші в межах tmux:

prefix : set -g mouse off

Де prefixзнаходиться ключ доступу до tmux ( Ctrl+ Bза замовчуванням, якщо ви не повторно відобразите його). :запускає командний режим і set -gвстановлює параметр глобально.

Коли режим миші вимкнено, стандартні функції копіювання / вставки, що надаються вашою операційною системою, працюють як очікується.

Ще щось, що ви можете зробити, це "максимізувати" поточну панель, тому ви можете легко скопіювати кілька рядків.


Якщо ви працюєте зі старою (до-2.1) версією tmux, вам замість цього потрібно використовувати наступне:

prefix : set -g mode-mouse off

Більше деталей та деяких зручних прив’язків ключів для автоматизації всього цього тут:

http://tangledhelix.com/blog/2012/07/16/tmux-and-mouse-mode/

Основна суть статті, пов'язаної вище, - це уривок із .tmux.conf:

# disable mouse control by default - change 'off' to 'on' to enable by default.
setw -g mode-mouse off
set-option -g mouse-resize-pane off
set-option -g mouse-select-pane off
set-option -g mouse-select-window off
# toggle mouse mode to allow mouse copy/paste
# set mouse on with prefix m
bind m \
    set -g mode-mouse on \;\
    set -g mouse-resize-pane on \;\
    set -g mouse-select-pane on \;\
    set -g mouse-select-window on \;\
    display 'Mouse: ON'
# set mouse off with prefix M
bind M \
    set -g mode-mouse off \;\
    set -g mouse-resize-pane off \;\
    set -g mouse-select-pane off \;\
    set -g mouse-select-window off \;\
    display 'Mouse: OFF'
# zoom this pane to full screen
bind + \
    new-window -d -n tmux-zoom 'clear && echo TMUX ZOOM && read' \;\
    swap-pane -s tmux-zoom.0 \;\
    select-window -t tmux-zoom
# restore this pane
bind - \
    last-window \;\
    swap-pane -s tmux-zoom.0 \;\
    kill-window -t tmux-zoom

13
Якщо у вас tmux 1.8 або новішої версії, є вбудована команда Control-B z, яка дозволить змінити масштабований стан поточної панелі. Тому CB z для збільшення масштабу цієї панелі на весь екран, та ж команда знову для відновлення. Це усуває необхідність визначення послідовностей клавіш CB + та CB - в кінці конфігурації, наведеної вище.
dr-jan

9
Якщо у вас є tmux 2.1 або новішої версії, всі команди, пов'язані з мишею, були застарілими, замінені на 'миші', які встановлюють усе. Отже, для відключення режиму миші за замовчуванням використовуйте 'setw -g мишу вимкнено'. Видаліть будь-які посилання на 'режим-миша', 'панель зміни розміру', 'панель вибору миші' або 'вікно вибору миші'.
dr-jan

50
Однак режим миші увімкнений має свої переваги: ​​він дозволяє мені прокручувати. Чи є комбінація налаштувань, яка дозволяє мені використовувати свій термінал, як звичайний терміновий термінал? Копія / вставка та прокрутка включені?
Mihai Danila

1
Є деякі інші настройки я , можливо, переплуталися з, тому що на OSx (Sierra), optionне допомагає. Поворот mode-mouse offдозволяє мені вибрати як звичайне, але тоді я не можу скопіювати у буфер обміну ( cmd+Cабо cmd+shift+Cнічого не робити, або дзвонити у дзвінок помилки, або
підбирати

3
Тестований на tmux v3, одна прив'язка для його включення та вимкнення:bind-key -T prefix m set -g mouse\; display 'Mouse: #{?mouse,ON,OFF}'
Євгеній

248
  1. Скопіюйте текст: виберіть текст і натисніть мишею left-buttonз shiftнатисканням клавіші теж.
  2. Вставте текст shiftклавішею +middle-button

30
Для користувачів OSX це опціональний ключ, як описано в цьому дописі в блозі: awhan.wordpress.com/2012/04/18/tmux-copy-paste-with-mouse
pangratz

3
Насправді, після вибору тексту за допомогою Shift + LMB, ви можете скористатися функціональністю ОС (Ctrl-Shift-C в моєму випадку) для копіювання в буфер обміну не X11.
Євген Паньков

8
В ОП чітко зазначено, що вони хочуть мати можливість копіювати та вставляти за допомогою миші, не використовуючи клавіатуру. Натискання Shift(або клавіша опції на OSX) - найдавніший трюк у книзі і працює на більшості емуляторів, але не відповідає на початкове запитання.
Lqueryvg

1
@pangratz Використання опціональної клавіші може працювати для користувачів iTerm, але не для користувачів рідного терміналу.
anishpatel

Дякую за це вирішення! Це все ще недостатньо оптимально - колесо миші = прокручування історії, а всі інші функції миші = нормальні були б набагато кращими.
Торстен Бронгер

36

Якщо "встановити -g режим миші увімкнено", ви можете виконати цю хитрість:

На Mac натисніть кнопку "fn", потім виберіть текст і скопіюйте клацанням правою кнопкою миші або клавішею cmd + c.


4
для мене це, здається, працює лише в тому випадку, якщо я не прокручую мишкою. як тільки я прокручую мишкою, це більше не працює
Пол

Також ви можете вклеїти за допомогою fn+Middle-Click
spinup

10

Змінено звідси - я використовую xclipзамість xselоригіналу:

bind -T root MouseDown2Pane run -b "xclip -o | tmux load-buffer - && tmux paste-buffer -s ' '"

Це для мене весело працює tmux 2.5-rc2


це добре працює в терміналі, але поводиться це дивно, коли я намагаюся вставити vim
Tropilio

9

Використовуйте <prefix>+mперемикач режиму миші включення або виключення

bind m run "if [[ `tmux show-option -w | grep mode-mouse.*on` ]]; then toggle=off; else toggle=on; fi; tmux display-message \"mouse tmux: \$toggle\"; tmux set-option -w mode-mouse \$toggle &> /dev/null; for cmd in mouse-select-pane mouse-resize-pane mouse-select-window; do tmux set-option -g \$cmd \$toggle &> /dev/null; done;"

Це працювало ідеально для мене. Дуже дякую. Я хотів мати можливість прокрутки в режимі миші, але це порушило мою здатність копіювати текст. Це дозволяє швидко перемикатися, якщо ви хочете відключити режим миші.
Біджан

6
Я використовуюbind m set-option mouse\; display-message "Mouse is now #{?mouse,on,off}"
Максим Суслов

Користувач хоче мати можливість копіювати та вставляти, але не більше .tmux.conf налаштування!
Джек Уейсі

6

У мене були проблеми з тим, щоб приклад Крістіана працював на Tmux 2, я думаю, деякі помилки. Далі я працюю нижче і трохи легше читати та встановлює глобальний та віконний режим. hth хтось. новий користувач і tmux чудово!

bind m run "\
    tmux show-options -g | grep -q "mouse\\s*on"; \
    if [ \$? = 0 ]; \
    then  \
        toggle=off;  \
    else  \
        toggle=on;  \
    fi;  \
    tmux display-message \"mouse is now: \$toggle\";  \
    tmux set-option -w mouse \$toggle; \
    tmux set-option -g mouse \$toggle; \
    "

1
Працює для мене. Тестували на tmux HEAD від github (станом на вчора).
Lqueryvg

2
Щоб зробити цю роботу, мені довелося змінити show-optionsлінію tmux show-options -g | grep -q "mouse\\s*on"; \ . Це тому, що регулярний вирівнюванняmouse.*on відповідає @scroll-in-moused-over-pane "on"частині плагіна nhdaly / tmux-better-mouse-mode
Mandy Schoep

1
Простіша палітурка, яка робить те саме -bind-key -T prefix m set -g mouse\; display 'Mouse: #{?mouse,ON,OFF}'
Євген

6

Для користувачів Mac + iTerm2 + tmux (версія> 2.1) :

Переконайтесь, що режим миші встановлений у налаштуваннях tmux (Просто додайте set -g mode-mouse on~ / .tmux.conf). Тепер скопіюйте текст на панель:

  1. Натисніть option + commandта виберіть текст, який потрібно скопіювати, за допомогою курсору миші. Це як обрізання малюнка.
  2. Вибраний текст буде скопійовано автоматично (не потрібно command + c). Просто наклейте його звичайними засобами.

5

Ів Блюссо допоміг мені зрозуміти, як це працює, але на моїй машині (під управлінням Windows 10 ) поведінка була дещо іншою.

tmux 2.6

З активованою мишкою ( :set -g mouse on)

Скопіювати

  1. Натисніть Shiftі виберіть мишкою текст, який ви хочете скопіювати
  2. Тепер клацніть правою кнопкою миші, щоб скопіювати вибраний текст (без утримування Shift)

Вставити

  1. Натисніть Shiftі натисніть правою кнопкою миші, щоб вставити скопійований текст

Просто як це. Насолоджуйтесь!


Кращий. Простий і елегантний.
слабкий

3

Це модифікована версія відповіді Kaixuan, сумісна з Tmux 2.1.

`bind m run "if [[ `tmux show-options -w | grep mouse.*on` ]]; then toggle=off; else toggle=on; fi; tmux display-message \"mouse tmux: \$toggle\"; tmux set-option -w mouse \$toggle &> /dev/null;`"

Усі mode-mouseваріанти були об'єднані в один mouseваріант і show-optionїх потрібно було замінитиshow-options


1
це, мабуть, на tmux.conf? ??
Арнольд Роа

1
куди це йде?
статичний

@ArnoldRoa @statquant: Так, це переходить у ~/.tmux.confфайл. Це обов'язковий <prefix>+mключ для запуску цього вбудованого сценарію.
inblueswithu

0

в ~/.tmux.conf:

set -g mouse off

що bind r source-file ~/.tmux.confможе бути корисним, так що ви можете зробити ctrl-d rдля завантаження конфігурації, наприклад.


0

На основі інших відповідей, розміщених тут, я створив стисле рішення, яке працює з (принаймні) tmux 2.8 та tmux 3.1 .

Ви можете вмикати tmux mouse supportта вимикати, натискаючи prefix- M. У .tmux.confфайл включіть цей рядок:

bind-key -T prefix m run "m=$(tmux show -g mou|grep -q on;echo $?);tmux set -g mou $m;tmux display mouse:\$m"

Це відображатиметься mouse: 1при ввімкненому та mouse: 0відключеному режимі. Повторне натискання prefix- Mперемикає режим миші між увімкненим і вимкненим .

Дивіться також: Підтримка миші tmux

EDIT: Якщо ви бачите returned 1повідомлення про помилку команди, вам потрібно буде використовувати наступне замість для tmux 3.1 або tmux 3.2 :

bind-key -T prefix m set -g mouse\; display 'Mouse: #{?mouse,ON,OFF}'

(це рішення раніше згадувалося)


-1

Я використовую наступне прив'язування для вибору тексту, натиснувши ліву кнопку миші -

bind -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "/mnt/c/Windows/System32/clip.exe"
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.