PuTTY, как выбрать текст и скопировать текст только с клавиатуры

75

Есть ли способ выделить текст с клавиатуры, как я обычно делаю, используя Shift + стрелки.

Flyk
источник
Думаю это невозможно. :(
Лукас Джонс
Я не понимаю Shift и стрелки находятся на клавиатуре.
Скотт

Ответы:

71

Из руководства PuTTY :

Копирование и вставка PuTTY полностью работает с мышью. Чтобы скопировать текст в буфер обмена, достаточно щелкнуть левой кнопкой мыши в окне терминала и перетащить, чтобы выделить текст. Когда вы отпускаете кнопку, текст автоматически копируется в буфер обмена. Вам не нужно нажимать Ctrl- Cили Ctrl- Ins; на самом деле, если вы нажмете Ctrl- C, PuTTY отправит символ Ctrl- Cво время сеанса на сервер, где это, вероятно, приведет к прерыванию процесса.

Асаф
источник
9
Моя строка длиной 24 000 символов. Как я могу скопировать это? Я могу видеть только последнюю часть строки или первую часть на экране буфера.
Gaʀʀʏ
@ Gaʀʀʏ Я знаю, что вы давно отошли от этого комментария, но я просто хотел бы отметить, что если у меня есть строка для копирования 24 Кб, я думаю, что опция «Копировать все в буфер обмена» оправдана. Это конечно то, что я бы назвал крайним случаем.
Шон Оллред
@ Gaʀʀʏ, чтобы добавить к ответу Шона, копия из буфера терминала, а не из stdout. Для очень длинных строк, конечно, возможно, что строка переполнила сам буфер.
ysap
3
Shift + Вставить.
Фокс
26

насколько я знаю, нет способа скопировать выделенную область из окна замазки в буфер обмена Windows без использования мыши. на сайте замазки есть запрос на добавление функций специально для этой функции.

http://www.chiark.greenend.org.uk/~sgtatham/putty/wishlist/keyboard-copy.html

единственный способ скопировать информацию из окна замазки в буфер обмена Windows с помощью сочетания клавиш - это использовать системное меню приложения «копировать все в буфер обмена» (которое вы можете вызвать из alt-space, если вы установили «Окно> Поведение> Системное меню появляется на «ALT-Space», опция настроена в замазке.

Вставить из буфера обмена Windows в замазку можно сделать с Shift- Insert.

Если вам нужно копировать и вставлять только в самом окне терминала, обратитесь к странице руководства для используемой вами оболочки или рассмотрите возможность использования приложения unix «screen» («man screen» для получения дополнительной информации), которое позволяет выбирать текст для копирования / вставки в окне терминала (аналогично тому, как работает копирование / вставка в vi). выдержка из справочных страниц:

   C-a esc     (copy)        Enter copy/scrollback mode.

   C-a ]       (paste .)     Write the contents of the paste buffer to the
                             stdin queue of the current window.

   C-a {
   C-a }       (history)     Copy and paste a previous (command) line.

   C-a >       (writebuf)    Write paste buffer to a file.

   C-a <       (readbuf)     Reads the screen-exchange file into the paste
                             buffer.

   C-a =       (removebuf)   Removes the file used by C-a < and C-a >.
Ives
источник
1
@xgMz - у меня отлично работает. Удивительно, что этот билет был подан более 13 лет назад, и никто еще не удосужился сделать это.
ArtOfWarfare
Ссылка работает сейчас.
xgMz
25

control+ insert= копия

shift+ insert= вставить

vi_dude
источник
2
Я не знаю, почему это было понижено. Это единственный ответ, который работал для меня. Мне удалось создать скрипт AutoHotkey, который копирует текст из GVim в Windows, вставляет его в Putty и запускает в интерактивном сеансе IPython
rsoren
2
control+ insertкажется абсолютно ничего не делает. shift+ insertвставляет, хотя.
ArtOfWarfare
3
С 2016 года он работает с Windows 7 и Putty 0.63. Тем не менее, вопрос, очевидно, включает в себя настройку выбора для копирования, а также AFAICT.
Стефанкт
3
@rsoren - OP запрашивает метод только с клавиатуры. Этот ответ требует пометки мышью в первую очередь. В соответствии с выбранным ответом, однажды отмеченный, подразумевается <Ctrl + Ins>.
ysap
У меня не работает на Windows 7
SherylHohman
3

Чтобы обойти эту проблему, запустите PuTTY в замене консоли Windows, такой как ConEmu или SuperPutty .

Майкл Хэмптон
источник
1
Как вы делаете это в SuperPutty?
грокстер
@ Сатья, как это работает? что сверхспособности имеют над замазкой?
alpha_989
@ Michael-Hampton .. позволяет ли ConEmu вставлять из буфера обмена Windows в терминал Windows только с клавиатуры?
alpha_989
2

Я использую экран GNU,

У меня также есть это в моем screenrc, чтобы хорошо играть с vim:

register [ "\033:se paste\015a"
register ] "\033:se nopaste\015a\033"
bind ^] paste [.]

У моего друга есть зацепка на экране, чтобы скопировать «буфер обмена экрана» в один или оба буфера обмена x (выделение или буфер обмена), и я полагаю, что замазка выполняет необходимые переводы. Я постараюсь выкопать это.

Вы, вероятно, можете организовать то же самое с помощью xclip, то, что вы ищете xclip -selection clipboard

Я быстро проверил бы, xclip -selection clipboard -oвыплевывает ли содержимое вашего буфера обмена.

richo
источник
Я хотел бы, чтобы это работало в PuTTY! Я пытался. Он жаловался на «не могу открыть дисплей»
Брайан Петерсон
Использование xclipдолжно работать. Я использую tmuxи xselкопировать из Puty с помощью клавиатуры .. Мне еще предстоит выяснить, как вставить в терминал Windows с помощью клавиатуры
alpha_989
2

Это может быть больше обходного пути, чем решение.

В vim, если вы хотите скопировать блок, который вы выбрали в визуальном режиме (обычно это блок, занимающий много страниц), вы можете записать его в файл (печатая, :w filename.txtкогда текст выделен и пока вы все еще находитесь в визуальном режиме). ). Сделав это, вы можете:

  1. Откройте файл в редакторе Windows, если он смонтирован поверх Samba
  2. Чтение содержимого файла через Apache или FTP-сервер
  3. Отправьте файл по электронной почте как вложение (см. Команду ниже - требуется Mutt):

    echo "My Message Body" | mutt -s "my subject line" -a filename.txt -- recipient@email-server.com
    

Лично я предпочитаю вариант 1.

Homer6
источник
2

Еще одно временное предложение - активировать клавиши мыши в Windows. В Windows 7 он находится в центре легкого доступа.

  1. Нажмите «Сделать мышь проще в использовании».
  2. Установите флажок «Включить клавиши мыши».
  3. Нажмите «Настроить клавиши мыши» для дополнительных настроек.

Горячая клавиша мыши по умолчанию Alt+ Shift+ NumLock.

Надеемся, что нажатие на эту комбинацию клавиш не помешает вашей сессии (или просто Alt+ Tabи активируйте ее снаружи замазкой). Я считаю, что нажатие 0 на цифровой клавиатуре запускает блокировку щелчка, позволяя вам перетаскивать часть текста, которую вы хотите выделить / скопировать.

Белый Феникс
источник
2

Мне надоело прокручивать строку за строкой с помощью левой кнопки мыши, чтобы скопировать вывод сессии. Но теперь мне нужно дважды нажать среднюю кнопку ; первый в начале и второй в конце. Как я это сделал:

  1. Перейти к окну конфигурации замазки
  2. Выберите «Выбор» из категории в левой части окна.
  3. В разделе «Управление использованием мыши» выберите «Компромисс (Средняя часть, Правая вставка)», если она еще не выбрана.
Седата
источник
2
Пожалуйста, прочтите и убедитесь, что вы поняли вопрос, а затем попытайтесь ответить на него.
Рэндзю Чандран Чингат
Это лучший способ выбора, и Putty позаботится о копировании. Однако, чтобы скопировать несколько экранов текста, я думаю, что вам, скорее всего, нужно использовать cat. vi продолжает двигать курсор.
Нумен
1

Некоторое время работал над этим, и сама Putty не может позволить вам копировать с помощью только буфера обмена.

Однако Putty может облегчить обратную передачу данных с удаленной стороны. Если вы используете такой инструмент, как Vim или Tmux, для выбора текста на основе клавиатуры, вы можете записать вывод в файл, и (встречаясь здесь) netcat в туннель обратного порта с замазкой в ​​локальный сервис, который сбрасывает ввод в локальный буфер обмена.

Я сделал видео о том, как это сделать, здесь: https://www.youtube.com/watch?v=RI79eeCuyvE , но вот короткая версия:

Настройте туннели putty> connection> SSH> для перенаправления R11311 на localhost: 1234. Используйте netcat в качестве прослушивающего сервера, который направляет вывод в команду клипов windows 10, которая отправляет ввод в буфер обмена Windows. Оберните это в вечный цикл for следующим образом:

for /L %N IN () do nc -lp 1234 | clip

Запустите вышеуказанное в командной строке, которую вы запускаете от имени администратора, потому что вы подключаетесь к порту.

На удаленном * nix-сервере вам нужно использовать vim или Tmux для отправки текстовых выделений в файл.

Используйте команду, чтобы отправить ваш выбор текста в файл

tmux save-buffer ~/.clipboard

Или вы можете использовать Vim для сохранения буфера (в данном случае z) в файл

silent! redir! > ~/.clipboard
silent! echo @z
silent! redir END

Я интегрирую буфера обмена vim и tmux, используя файл .clipboard в качестве посредника, используя суть функции vim .

Как только выделенный текст находится в файле, вы можете направить вывод на удаленную сторону порта вперед:

cat ~/.clipboard | nc 127.0.0.1 11311

Или внутри скрипта vim

silent! !cat ~/.clipboard | nc 127.0.0.1 11311 &

Обратите внимание, что амперсанд необходим, потому что я не мог заставить -q 0флаг netcat работать должным образом. Может быть, вы можете. Если он не работает, он ждет целую секунду перед закрытием, что может нарушить ход вашей работы. С амперсандом он мгновенно прекращает процесс, который завершается в течение 1 секунды в фоновом режиме.

Выполнение всего вышеперечисленного полностью интегрирует буфер обмена Tmux, Vim и локального клиента-замазки без прикосновения к мыши! Это был единственный способ найти это.

Трой Флетчер
источник
Кроме того, если вы используете это для многострочных вставок между ОС, не забудьте конвертировать между окончаниями строк DOS / Unix
Трой Флетчер
-1

Если вы работаете на машине с Windows, она будет работать нормально, но если на машине с Linux она не будет работать. Чтобы заставить его работать, просто скопируйте содержимое в любом текстовом редакторе и просто используйте клавиши Shift + Insert в строке, куда вы хотите вставить это.

Надеюсь, это поможет!

Нихил Бангар
источник