скопіювати ярлик (у буфер обміну X) у .tmux.conf


22

Для того, щоб скопіювати текст у буфер обміну X у tmux, я зараз це:

  • перейти в режим вибору за допомогою prefix[
  • почати вибір з space(використовуючи mode-keys vibtw)
  • виберіть текст і натисніть enter
  • скопіюйте буфер tmux в буфер обміну за допомогою prefixctrl+c

(У мене є відображення як bind C-c run "tmux show-buffer | xclip -selection clipboard -i"

Я намагаюся усунути деякі з цих кроків, зробивши відображення для режиму вибору. Я намагався:

bind-key -t vi-copy C-c run "tmux show-buffer | xclip -selection clipboard -i"

що дає мені і помилку:

.. usage: bind-key [-cnr] [-t key-table] key command [arguments]

(Не вдалося скопіювати помилку)

як я можу це виправити?

EDIT: Я зрозумів, що можу вибрати та скопіювати в буфер tmux (перші 3 кроки) за допомогою миші так само, як і звичайний вибір (хоча виділення не триває, він все одно вибирає текст), а потім скористатись наступним прив’язкою для копіювання до буфера обміну x :

bind-key -n C-c run "tmux show-buffer | xclip -selection clipboard -i"

(Я використовував цей метод, щоб скопіювати цей текст, і це було легко;)

зауважимо, що -nпозначає "немає префікса", тому не потрібно виконувати жодних пробіг. якщо вас не бентежить зникаюча родзинка, це аналог звичайному (загальноприйнятому користувальницькому інтерфейсу) копіюванню.

це найкраще, що я придумав дотепер ..

EDIT2: виявилося, що ctrl+cперекривається річ з перериванням процесу, тому я зараз змінив ctrl+alt+c. (це не дуже сподобалось)

EDIT3: tmux 1.8 або ін. Додана підтримка для додавання вкладених клавіш в режимі копіювання, тому тепер мій перший оригінальний намір можливий, використовуючи щось на кшталт:

bind-key -tvi-copy y copy-pipe "xclip -selection clipboard -i"
bind-key -tvi-copy enter copy-pipe "xclip -selection clipboard -i"

Ці два вкладення дозволяють копіювати текст у буфер обміну, коли я використовував, enterабо yзакінчувати копіювання.

Я все ще зберігаю цей рядок у випадку, якщо я виконую копіювання за допомогою миші та вирішую пізніше отримати вміст буфера tmux у буфер обміну:

bind-key y run "tmux show-buffer | xclip -selection clipboard -i"

1
Ви можете змінити переривання з ctrl-c на щось інше, використовуючи stty. Наприклад, використовувати Ctrl-Z : stty intr=^Z. Будьте обережні з цією командою, можна встановити звичайний символ як символ переривання (якщо ви це зробите, використовуйте ctrl-v, щоб ввести його до виправлення налаштування). І не плутайтесь у тому, який ключ використовується (наприклад, ctrl-z - це звичайно ключ призупинення).
попіл

@ash зазначив, спасибі .. але я думаю, що я буду залишатися ^cключем переривання, оскільки використовую його частіше, ніж копіюю. Я також оновив відповідь, щоб відобразити моє поточне рішення цієї проблеми.
немає

звучить добре. Також зауважте, що багато запусків xmodmap можуть привести речі в смішний стан, який важко виправити, тому я рекомендую розпочати нову з нового сеансу X, якщо вплив команд видається неправильним.
попіл

працює в bind-key -t vi-copy C-c run "tmux show-buffer | xclip -selection clipboard -i"прямому ефірі:Unknown command: run
Олексій Магура

1
Однак біг bind-key C-c run "tmux show-buffer | xclip -selection clipboard -i"працює просто чудово.
Олексій Магура

Відповіді:


13

Ця відповідь не відповідає безпосередньо на ваше запитання щодо створення ярлика. Але ось що я роблю.

Ви можете тимчасово призупинити передачу своїх подій ключів / миші на tmux, утримуючи shift. Таким чином, ви можете натиснути та утримувати звичайні комбінації клавіш Shift та користувача терміналу / X, щоб зробити копію. У моєму випадку, використовуючи Terminator, натискаю shift, виділяю мишкою все, що завгодно, копіююCtrl+Shift+C

І якщо у вас розділені панелі, ви можете збільшити масштаб поточної панелі за допомогою перемикача масштабування Prefix + zта виконати операцію копіювання. (тестовано на tmux v1.8)


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

Це точно працює в gnome-терміналі; але чи стосується він всіх терміналів-емуляторів? Напевно, ні
jpaugh

У wsl-терміналі це працює. Врятуй мій день!
Qinsi

1

Це не відповідає безпосередньо на ваше запитання, але погляньте на tmux-yank , як описано у розділі Використання системного буфера обміну в режимі vi-copy у tmux та Отримання tmux для копіювання буфера в буфер обміну . Після встановлення

prefix + y - копіює текст з командного рядка в буфер обміну.

прив’язки режиму копіювання:

y - вибір копії в буфер обміну системи

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.