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

14

Скажем, я набрал следующую длинную команду в командной строке

 $ some very long command that I want to copy to the clipboard

Как я могу получить это в системный буфер обмена эффективно? Я использую Gnome Terminal 2.23.1.

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

Также было бы хорошо, если бы оно распространялось на несколько программ командной строки.

Например, в bash в режиме vi я могу нажать, vа затем отредактировать команду в vim и, таким образом, использовать функцию копирования Vim в буфер обмена, но это не работает при использовании R в командной строке. Это также немного медленно.

Мне бы хотелось, чтобы в режиме vi я мог нажать yyи скопировать содержимое строки в системный буфер обмена, но, похоже, это не работает. Кроме того, кажется, что любые команды восстановления не копируют содержимое в системный буфер обмена; они выглядят только для копирования в буфер, используемый bash.

ОБНОВИТЬ:

После публикации я нашел

Джером англим
источник
1
Не совсем то, что вы спрашиваете: с помощью экрана вы можете добиться того, что вы спрашиваете, следуя этому ответу: askubuntu.com/questions/56570/…
enzotib
Следуя этому ответу ( askubuntu.com/a/503861/43594 ), вы можете включить клавиши мыши в универсальном доступе и использовать цифровую клавиатуру для перемещения мыши, а номер пять действует как щелчок. При быстром двойном щелчке он выберет слово, на которое наведен указатель. Когда он быстро тройной щелчок, он выберет всю строку. Это вместе с ответами о том, как копировать (Ctrl-Shift-C), должно делать большую часть того, что вам нужно.
Джеймс

Ответы:

3

Вы также можете использовать менеджер буфера обмена, как parcellite. Это менеджер буфера обмена GTK +, который также имеет возможности буфера обмена из командной строки

Вы можете использовать его через командную строку

echo "some very long command that I want to copy to the clipboard" | parcellite
##or##
parcellite "some very long command that I want to copy to the clipboard"

Он не установлен по умолчанию, поэтому вам нужно установить parcellite sudo apt-get install parcellite

Нитин Венкатеш
источник
1
спасибо, по крайней мере, когда я в Bash, я иногда использовал echo my command | xclip -se c; однако, когда команда имеет кавычки и другие специальные символы, echoчасто не копируют команду буквально.
Jeromy Anglim
1

Таким образом, закрытие, которое я смог получить, это использование истории и xclip вместе, чтобы сделать это

echo !! | xclip

Это поместит последнюю команду в буфер обмена центральной кнопки. Я все еще ищу что-то лучшее, хотя, как я хотел бы получить это к одной команде. Однако я зависаю, потому что история не работает в сценариях оболочки, и я не знаю, как !!правильно использовать псевдоним. Конечно, это не совсем то, что вы просите о моем намерении использовать это для записи того, что я делаю. Есть мысли?

user27643
источник
Кроме того, все еще остается проблема, как копировать команды с кавычками.
Jeromy Anglim
0

Вы должны иметь возможность использовать Ctrl+ Shift+ Cдля копирования и Ctrl+ Shift+ Vдля вставки в любом месте терминала.

Дирк Хартцер Вальдек
источник
3
Вам все еще нужна мышь, чтобы выделить текст.
энзотиб
DOH! очень верное замечание
Дирк Хартцер Уолдек
2
В связи с этим возникает вопрос: можно ли настроить терминал или bash для выбора текста с помощью клавиатуры?
Джером Энглим
@JeromyAnglim Связанные: stackoverflow.com/q/312213/1172302
Никос Александрис