Как скопировать и вставить с терминала с клавиатуры?
Я пытаюсь уйти от использования мыши настолько, насколько могу (только проект для домашних животных). Я знаю, что в терминале вы можете сделать ck, чтобы сократить строку и cu, чтобы вставить эту строку обратно в тот же терминал, но я ищу что-то, где я могу скопировать строку в терминале в буфер обмена gnomes, чтобы я мог вставить ее скажем, браузера или чего-то подобного.
Я знаю, что если я использую мышь, чтобы выделить текст, я могу нажать shift-insert, чтобы вставить этот текст, и это здорово, но теперь я просто хочу, чтобы это можно было сделать без мыши. Что-то вроде подсветки c-space в emacs (но даже это не копирует в буфер обмена gnome).
Спасибо
Еще несколько пояснений, у меня открыто несколько разных терминалов, и многие из них я нахожу в разных удаленных машинах, где утилиты, такие как xclip/xsel, не так полезны.
Ответы
Ответ 1
Указанный здесь, команды по умолчанию для копирования и вставки GNOME: CTRL - SHIFT - C и CTRL - SHIFT -. V
Изменить: я нашел полезный пост в блоге, который позволяет вам разрешать копирование/вставку терминала на CTRL - C и CTRL - V в GNOME.
Ответ 2
Shift + Вставить для вставки. Я думаю, это то, что вам нужно, но я не знаю, как копировать с терминала.
Ответ 3
Для взаимодействия с буфером обмена X11 из командной строки см. этот вопрос.
Может быть, боковая дорожка к тому, что вы просите, но для взаимодействия с терминальным окном я могу порекомендовать screen, где вы используете ключи для копировать и вставлять (из буфера с прокруткой для поиска!). Операция копирования и вставки выполняется только между экранами, управляемыми экраном, как описано с оконечным окном и cu и ck, но вы можете легко сбрасывать на /tmp/screen -xchange, а затем использовать xclip для копирования в буфер обмена X11.
Ответ 4
Это легко! Просто запустите две команды, и вы сможете скопировать и вставить с помощью Ctrl+C
Ctrl+V
!
gconftool-2 -t str -s /apps/gnome-terminal/keybindings/copy "<Control>c"
gconftool-2 -t str -s /apps/gnome-terminal/keybindings/paste "<Control>v"
Счастливое копирование в скобки!
Ответ 5
Я пробовал использовать hlovdal и использовал GNU screen
и xclip
.
Результатом стал простой script:
cat /tmp/screen-exchange | xclip
который я настроил на C-a e
в .screenrc
:
bind e exec !!! $HOME/bin/screen-exchange-to-primary
то я просто вхожу в режим копирования/прокрутки на экране с помощью C-a [
mark/select с помощью >
и копирует в основной выбор с помощью C-a e
.
Возможно, это не самая плавная последовательность комбинаций, но это лучшее, что я получил до сих пор.
Ответ 6
Вы можете запустить оболочку внутри Emacs, затем вы можете выбрать и скопировать в буфер обмена, как обычно это делаете в Emacs.
Что касается "запуска оболочки внутри Emacs", существует несколько опций: M-x shell
, M-x eshell
и различные элементы term
/eterm
/ansi-term
(режимы) (эти "* term" должно быть лучше для псевдографических проклятий и т.д.)
Что касается меня лично, пытаясь держаться подальше от мыши, я стараюсь использовать eshell
в первую очередь (обычно мне не нужны программы curses), emacs-w3m
для веб-браузера, просто Emacs в основном для всего остального, и ratpoison
в качестве диспетчера окон.
Ответ 7
В течение долгого времени я также пытался его отсортировать, используя vt100.translations.
Взято из http://www.fifi.org/doc/xterm/xterm.faq.html#future_work:
"XTerm*vt100.translations: #override \n\
<Key>Insert: string(\001) \n\
Shift <Key>Up: scroll-back(1,lines) \n\
Shift <Key>Down: scroll-forw(1,lines) \n\
Shift <Key>Right: string(0x1b) string("f") \n\
Shift <Key>Left: string(0x1b) string("b") \n\
Shift <Key>Delete: string(0x1b) string(0x08) \n\
Shift <Key>Tab: string(0x1b) string("*") \n\
<Key>0x1000FF0D: scroll-back(1,page) \n\
<Key>0x1000FF0E: scroll-forw(1,page) \n\
<Key>0x1000FF09: string(\010) \n\
<Key>0x1000FF0A: string(\005) \n\
<Key>BackSpace: string(0xff) \n\
<Key>Select: select-start() \n\
<Btn1Motion>: select-extend() \n\
<Key>0x1000FF02: select-end(PRIMARY,CUT_BUFFER0) \n\
Meta <Key>0x1000FF02: select-end(CLIPBOARD) \n\
<Key>0x1000FF04: insert-selection(PRIMARY,CUT_BUFFER0) \n\
Meta <Key>0x1000FF04: insert-selection(CLIPBOARD) \n\
<Key>F1: string(0x1b) string("OP")
нет успеха
ОК, если мы установили некоторый ключ для select-start select-end..extend
но как привозить курсор.
экран gnu может быть решением, но он не будет корректно в zsh, и мы не сможем
вырезать текст в Xclipboard.
Ответ 8
Я знаю, если ваша программа оболочки bash или tcsh, она использует библиотеку readline для редактирования строки, поэтому функция Control-K обрабатывается readline и хранится в буфере "kill-ring" внутри вашей программы оболочки, Невозможно украсть содержимое kill-ring из вашей оболочки (если только ваша оболочка не имеет определенных функций, запрограммированных в нее, чтобы разрешить это), однако вы можете повторно настроить Control-K для выполнения некоторых других действий, настроив .inputrc файл в вашем домашнем каталоге. Таким образом, вы можете настроить его для выполнения макроса, например, вывод текста "xclip -in\n", а затем сброс содержимого "кольца-убийцы" на выход вместе с действием "Control-D" для завершения текста. Это в основном объясняется в man файле readline.
Я никогда не пробовал ничего подобного раньше, поэтому я не знаю, будет ли это работать или нет, но этот маршрут я бы попробовал первым.
Ответ 9
Могу ли я предложить RatPoison как ваш оконный менеджер? Как следует из названия, вам не нужна мышь вообще. Я не уверен, как он обрабатывает буфер обмена, хотя я использовал его только для удовольствия. Это может зависеть от того, какую терминальную программу вы используете.
Ответ 10
Это супер-неуклюжий взлом, но он работает для копирования последней строки вывода из последней команды запуска в терминале, используя только клавиатуру (и python script), и она может работать поверх ssh.
Вот как вы его используете.
- В gnome-терминале (или подобном) Alt + E, A. Это для выбора всех.
- Если вы находитесь в ssh, откройте другой терминал на своей локальной машине.
- Запустите прикрепленный script, который я вызываю на моем компьютере.
Затем у вас есть одна строка текста без новой строки в вашем буфере обмена gtk. script работает с помощью буфера обмена выбора x из выбора всего текста терминала и размещения третьей-последней строки в буфере обмена gtk. Этот script можно изменить, чтобы выбрать различные части выбора x, которые будут соответствовать различным частям текстового буфера терминала. Однако это еще долгий путь от интерактивного курсора: (
Было бы здорово, если бы поддержка gnome-terminal интегрировала поддержку выбора с клавиатуры.
В этом примере помещается "/usr/bin/gcc" в буфер обмена gtk (не забудьте выбрать "Все до запуска последней линии" ):
$ which gcc
/usr/bin/gcc
$ lastline
Здесь script я call lastline:
#!/usr/bin/env python
import sys, subprocess
import optparse
__version__ = "0.1"
def main():
try:
process = subprocess.Popen(["xsel"], stdout=subprocess.PIPE)
except OSError:
sys.exit("you must install xsel")
(stdout, _) = process.communicate()
lines = stdout.split("\n")
if len(lines) < 3:
text = ""
else:
text = lines[-3]
import gtk
clipboard = gtk.clipboard_get()
clipboard.set_text(text)
clipboard.store()
if __name__ == "__main__":
parser = optparse.OptionParser(version=__version__)
(options, args) = parser.parse_args()
main()