Буфер обмена операционной системы и возможность копировать и вставлять текст из одного места в другое очень сильно облегчает работу в терминале. Теперь вам необязательно искать команду в истории или набирать её вручную. Вы можете скопировать текст с другого терминала, файла или браузера, а затем выполнить его. Сложно представить как передать команде длинные и сложные параметры без возможности копирования и вставки.
В этой небольшой статье мы рассмотрим как копировать в терминале Linux в разных ситуациях, а также как вставить полученный текст. В целом, тут нет ничего сложного если вы работаете с графическим окружением и там поддерживается мышь.
Содержание статьи
Как копировать в терминале Linux
1. Обычный терминал
Для того чтобы скопировать текст в обычном графическом эмуляторе терминала достаточно выделить его мышкой и нажать сочетание клавиш Ctrl+Shift+C. Затем, для вставки скопированного в терминал надо нажать Ctrl+Shift+V.
Обычно для копирования и вставки текста используются сочетания клавиш Ctrl+C и Ctrl+V. Однако в терминале сочетание Ctrl+C завершает программу, которая в данный момент выполняется. Поэтому для копирования разработчикам пришлось выбрать новое сочетание. Из традиционных сочетаний клавиш можно использовать Ctrl+Insert и Shift+Insert для копирования и вставки соответственно.
Если программа выводит данные слишком быстро и вы не успеваете их отметить и скопировать, можно нажать сочетание клавиш Ctrl+S для того чтобы приостановить программу. Некоторые программы полностью останавливаются, некоторые останавливают только вывода, но теперь у вас будет достаточно времени для того чтобы скопировать нужные данные. Для того чтобы возобновить работу программы используйте сочетание Ctrl+Q. Теперь вы знаете как копировать текст в терминале linux.
2. Редактор Vim
Если в редакторе включена поддержка мыши, то копировать текст, описанным выше способом у вас не получится. Для того, чтобы всё же иметь возможность скопировать текст средствами операционной системы необходимо зажать кнопку Shift во время выделения мышкой. Для копирования можно использовать то же сочетание клавиш Ctrl+Shift+C или же вызвать контекстное меню с зажатой клавишей Shift и выбрать пункт Скопировать:
Однако при таком способе копирования может быть скопировано много лишнего, например, номера строк. В текстовом редакторе Vim есть встроенная функциональность копирования. Если включена поддержка мыши, вы можете выделить текст мышью. Если нет, для перехода в режим выделения нажмите клавишу V в командном режиме. Затем используется стрелки для выделения нужной области:
Для копирования во внутренний буфер Vim следует использовать клавишу y, а для вставки - p. Если надо выйти с режима выделения без осуществления каких-либо действий - нажмите Esc. Такой способ копирования работает только внутри программы, нигде в системе скопированный текст вставить вы не сможете.
Однако Vim умеет работать и с буфером обмена операционной системы. Вообще у Vim очень широкие возможности копирования и вставки. Здесь поддерживается такая вещь как регистры, в которые можно сохранять данные и извлекать их оттуда. Всего таких регистров 26. По умолчанию используется безымянный регистр. Именно в него попадает текст при копировании с помощью клавиши y или удалении с помощью x. У большинства регистров есть своё предназначение. Однако есть именованные регистры с именами от a до z, в которые вы можете складывать произвольные данные.
Для доступа к регистрам используется символ " в командном режиме или режиме выделения. Если вы редактируете текст, то нужно нажать Esc для выхода в командный режим или выделить нужный текст, затем нажать Shift и кнопку, которая отвечает за " на клавиатуре, а затем кнопку имени регистра. Например, для того чтобы скопировать текст в регистр a используйте такую последовательность "ay.
Для вставки надо будет использовать подобный синтаксис "ap. Аналогично всему этому есть регистр, связанный с буфером обмена операционной системы. Его имя +. Но для того чтобы он работал, необходимо чтобы в системе был установлен пакет vim-gtk3 или gvim. В Ubuntu команда установки будет выглядеть вот так:
sudo apt install vim-gtk3
Затем вы сможете скопировать текст в системный буфер с помощью такой последовательности: "+y. После чего его можно будет вставить в любой программе вне Vim. Если надо вставить такой текст в Vim, используйте последовательность "+p.
3. Терминальный сервер tmux
Если вы используете tmux для разделения одного окна терминала на несколько, то копировать с помощью зажатой кнопки Shift будет не очень удобно. Вы не сможете выделить текст в рамках одного виртуального окна, будет выделяться всё окно терминала и в выделение попадёт много ненужных данных. Для выделения и вставки следует использовать встроенные средства. Если у вас включена поддержка мыши в tmux, то скопировать текст можно просто выделив его мышью.
Если поддержки мыши нет, нажмите управляющее сочетание клавиш, по умолчанию Ctrl+b, а затем символ [ для того чтобы войти в режим выделения. Используйте стрелки для перемещения по тексту. Переместите курсор к началу текста для копирования и нажмите Ctrl+Пробел. Затем переместите курсор к концу фрагмента. Выделенный текст будет подсвечен:
Затем нажмите сочетание клавиш Alt+W для того чтобы скопировать текст в буфер. Для вставки скопированного текста используйте сочетание клавиш Ctrl+b затем ].
Правда этот способ работает только с внутренним буфером обмена tmux. Получить скопированный таким образом текст в системе не получится.
Выводы
В этой небольшой статье мы рассмотрели как копировать в терминале Linux, а также в нескольких популярных программах, таких как Vim и Tmux. А какие ещё способы копирования текста в терминале знаете вы? Напишите в комментариях!
"...необходимо мизинцем левой ноги зажать кнопку Shift во время выделения мышкой, одновременно левой рукой использовать сочетание клавиш Ctrl+Shift+C+Ins, а пяткой правой ноги вызвать контекстное меню с зажатой языком клавишей Shift и выбрать пункт Скопировать"
Нет вообще никакой возможности копировать простым выделением как в putty?