Ответы:
Вам придется использовать ярлыки tmux. Если предположить, что ярлык команды tmux используется по умолчанию: Ctrl+ b, то:
Ctrl+ b, [Войдите в режим копирования (?).
Переместить в начало / конец текста, чтобы выделить.
Ctrlspace
Начните выделять текст (в Arch Linux). Когда я скомпилировал tmux из исходного кода для OSX и других Linux, Spaceон обычно работает сам по себе. Выбранный текст меняет цвета, поэтому вы будете знать, сработала ли команда.
Переместитесь в противоположный конец текста для копирования.
Alt+ wКопирует выделенный текст в буфер обмена Tmux. (На Mac используйте Esc+ w.)
Переместите курсор в противоположную панель tmux или в совершенно другое окно tmux. Поместите курсор туда, куда вы хотите вставить только что скопированный текст.
Ctrl+ b, ]Вставить скопированный текст из буфера обмена Tmux.
tmux неплохо умеет сопоставлять команды с пользовательскими сочетаниями клавиш.
Смотрите Ctrl+ b, ?для полного списка установленных сочетаний клавиш.
screen
ярлыки: Ctrl + A [
(войдите в режим копирования), Space
(начните выделение), Enter
(завершите выделение), Ctrl + A ]
(вставьте).
Enter
ключ.
К сожалению, я пока не могу добавить комментарий к ответу Алекса Лича, поэтому я собираюсь добавить здесь дополнение для пользователей Mac OS X:
byobu
/ tmux
со всеми настройками по умолчанию, это сработало, Alt + w - нет.
Если вы используете vim и tmux на macOS (протестировано на macOS 10.12.2, tmux 2.3):
(Предположим, что сочетание клавиш префикса tmux равно prefix. Префикс ctrl+ bпо умолчанию.)
Я подключаюсь к своему серверу CentOS на компьютере с Windows, используя ssh-клиент ZOC-терминала . Вот что работает для меня:
<prefix>
+[
<Space>
<Enter>
<prefix>
+]
Вы можете использовать системный буфер обмена с «* y и» * p вместо обычных y и p.
"+2yy
- скопировать две строки в буфер обмена X11 "+dd
- вырезать строку в буфер обмена X11 "+p
- вставить буфер обмена X11
h,j,k,l
для переместить. Я также видел иногда на моей Ubuntu VM, регистр "+" исчезает, по неизвестной причине. Чтобы убедиться, что у вас есть +
регистр, вы можете ввести :reg
и проверить, есть ли строка "+
в первом столбце.
y
и p
на "+y
и "+p
?
Если у вас vim
открыт, лучше использовать vim copy paste для копирования текста.
Tmux copy paste будет работать, однако есть несколько недостатков.
Во-первых, при копировании нескольких строк текста вам нужно будет выбрать несколько строк. Tmux copy paste обычно не понимает, что в vim
строке vim есть номера строк или есть пометки (например, относительные числа / абсолютные числа). В результате он также будет копировать их.
Во-вторых, я обнаружил, что если текст имеет форматирование определенного языка, и вы напрямую пытаетесь скопировать вставить с помощью tmux в vim, это приведет к неправильному форматированию. Этого можно избежать с помощью set paste!
. Однако это требует гораздо больше работы.
"+y
для копирования и "+p
вставкиVim
изначально предоставляет метод для копирования вставки между буфером vim и системным буфером обмена, используя либо "+y
или "*y
. Затем вставьте с помощью "+p
или "*p
. Это позволит избежать копирования относительных чисел в желобе или других случайных меток, которые не имеют отношения к vim
Несколько вариантов использования vim, поскольку последовательность ярлыков tmux немного длинная, и мне трудно ее запомнить
Как и в ответах выше, вы можете использовать "+y
и "*y
для копирования, а затем "+p
и "*p
соответственно для вставки. Если вы хотите, чтобы vim по умолчанию использовал буфер обмена, вы можете просто использовать его y/p
напрямую.
set clipboard=unamed "sets the default copy register to be *
set clipboard=unamedplus "sets the default copy register to be +
Источник команды буфера обмена: https://vi.stackexchange.com/questions/84/how-can-i-copy-text-to-the-system-clipboard-from-vim
:w /tmp/lines
, а затем:r /tmp/lines
в другом случае). Или, если ваш Vim знает, как общаться с системным буфером обмена, вы можете использовать регистры+
или,*
чтобы избежать временного файла.