Копирование и вставка с помощью URxvt


27

Я использую URxvt 9.20 на Debian Jessie, и я ищу способ скопировать и вставить текст, как я привык с помощью терминала gnome ( Ctrl+ Insertдля копирования, Shift+ Insertдля вставки).

Он работает в разных консолях urxvt, но не работает, например, между urxvt и iceweasel.

Я попытался в соответствии с руководством по archlinux , но это не сработает (хотя я на самом деле не хочу использовать Shift+ Ctrl+ C/ Vэто стоило попробовать).

.Xresources:

! ******************
! urxvt config
! ******************

! Disable Perl extension
! If you do not use the Perl extension features, you can improve the security
! and speed by disabling Perl extensions completely. 
URxvt.perl-ext:
URxvt.perl-ext-common:

! Font spacing
! By default the distance between characters can feel too wide. It's controlled
! by this entry: 
! URxvt.letterSpace: -1

! -- Fonts -- !
URxvt.font:xft:Monospace:pixelsize=13
URxvt.boldfont:xft:Monospace-Bold:pixelsize=13
!URxvt*font:  -xos4-terminus-medium-*-*-*-14-*-*-*-*-*-iso8859-15,xft:terminus:pixelsize:12
!URxvt*boldFont:  -xos4-terminus-bold-*-*-*-14-*-*-*-*-*-iso8859-15,xft:terminus:bold:pixelsize:12
!URxvt*italicFont:  xft:Bitstream Vera Sans Mono:italic:autohint=true:pixelsize=12
!URxvt*boldItalicFont:  xft:Bitstream Vera Sans Mono:bold:italic:autohint=true:pixelsize=12

! Disable scrollbar
!URxvt*scrollBar: false

! Scrollbar style - rxvt (default), plain (most compact), next, or xterm
URxvt.scrollstyle: plain

! Background color
!URxvt*background: black
URxvt*background: #1B1B1B

! Font color
!URxvt*foreground: white
URxvt*foreground: #00FF00

! Other colors
URxvt*color0: black
!URxvt*color1: red3
URxvt*color1: #CD0000
URxvt*color2: green3
!URxvt*color3: yellow3
URxvt*color3: #C4A000
URxvt*color4: blue2
!URxvt*color4: #3465A4
URxvt*color5: magenta3
URxvt*color6: cyan3
URxvt*color7: gray90
URxvt*color8: grey50
URxvt*color9: red
URxvt*color10: green
URxvt*color11: yellow
!URxvt*color12: blue
URxvt*color12: #3465A4
URxvt*color13: magenta
URxvt*color14: cyan
URxvt*color15: white
! ******************
! /urxvt config
! ******************

Вы знаете, что вы можете скопировать, выделив текст мышью и вставив, нажав среднюю кнопку мыши, верно? Если нет, этого достаточно?
— Тердон

2
Проблема здесь заключается в том, что обе программы используют разные выделения в X-Windows, традиционные программы используют PRIMARYвыделение с помощью Shift + Insert, а новые программы, которые пытаются имитировать привязки клавиш из других систем, вставляют CLIPBOARDвыделение для одной и той же привязки клавиш. В GTK + стало сложнее вставлять PRIMARYбез использования мыши (средний щелчок, как сказал @terdon, или левый + правый щелчок, если включена эмуляция третьей кнопки). Но, хотя это объясняет, почему программы не передают данные между ними, мне интересно, почему предложение arch wiki не сработало.
— njsg

Как вы попробовали предложения от ArchWIki? Если вы используете графический экран входа в систему для запуска X, вам нужно будет перезагрузить ресурсы X, используя xrdb(это должно быть xrdb ~.Xresourcesили что-то подобное). В любом случае, вам также нужно перезагрузить компьютер urxvt. В некоторых дистрибутивах вам может понадобиться установить отдельный пакет с расширениями perl, но, похоже, он включен в базовый rxvt-unicodeпакет в Debian (хотя я могу ошибаться).
— njsg

1
@terdon спасибо за ваш комментарий. Выбор с помощью мыши и вставка с помощью среднего щелчка действительно работает. Увы, это не то, чего я хотел бы достичь, я хотел бы использовать Ctrl + Insert / Shift + Insert, как я привык (привычки и мантры делают нас эффективными и быстрыми, я не часто использую мышь (Я использую i3wm).)
— Томас Джон

@njsg большое спасибо за объяснение различий между основным и буфером обмена. Я попробовал расширение Perl, упомянутое в ArchWiki на «Пользовательские привязки клавиш», оно не имело никакого значения (я прокомментировал часть «Отключить расширение Perl» в моем .Xresources, прежде чем, конечно, использовать его). - Да, я сделал $ xrdb -merge ~/.Xresourceсначала - Да, я перезапустил urxvt или открыл новые окна терминала urxvt, что дает тот же эффект, что я забыл упомянуть наиболее вероятный важный момент: у меня не установлена ​​среда рабочего стола: - Я ' я использую только менеджер окон (i3wm) - я использую графический менеджер входа в систему
— Томас Джон

Ответы:


16

К сожалению, система X Window имеет несколько различных механизмов копирования и вставки .

Rxvt, как и большинство старых приложений X, использует первичный выбор. Как правило, когда вы выбираете что-то с помощью мыши, оно автоматически копируется в основной выбор, а когда вы нажимаете средний щелчок для вставки, это вставляет основной выбор.

Ctrl+ Cи Ctrl+ V(или другие привязки клавиш) в приложениях, использующих современные GUI-инструментарии, такие как Gnome-терминал и Firefox, копировать / вставлять из буфера обмена.

Есть инструменты для облегчения работы с выборами. В частности, если вы просто хотите иметь один выбор, который копируется в то, что вы выбираете с помощью мыши или нажатия Ctrl+ C, вы можете запустить autocutsel (запустить его из ваших .xinitrcили из программ запуска вашей среды рабочего стола), который обнаруживает, когда что-то копируется в один из выборов и автоматически копирует его в другой.


20

Для вставки текста в urxvt / rxvt-unicode вы можете использовать middle buttonдля вставки ПЕРВИЧНЫЙ выбор и Alt/Meta+ middle buttonдля вставки CLIPBOARD.

Для копирования, просто маркировка текста в терминале копирует его в ПЕРВИЧНЫЙ выбор. Тем не менее, некоторая работа необходима для копирования в выборку CLIPBOARD. Я соединил информацию со страницы Archlinux, которую вы связали, с помощью сценариев, включенных в rxvt-unicode-9.19, и получил скрипт, подобный следующему: https://gist.github.com/xkr47/98224ed6b0860cb55ec0 . Это позволяет использовать Ctrl+ Insertили Ctrl+ Shift+ c`, чтобы скопировать выбранный в данный момент текст в CLIPBOARD.

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

Кстати, я также не запускаю рабочую среду; используя Sawfish в качестве оконного менеджера.

Совет : Вы можете контролировать буфер обмена в терминале, используя программу "xclip":

while :; do echo -ne '\033[31;1mCLIPBOARD: ' ; xclip -o -sel c ; echo ; echo -ne '\033[32;1mPRIMARY:   ' ; xclip -o -sel p ; echo ; echo -e '\033[m--------' ; sleep 1 ; done

или используя программу "xsel":

while :; do echo -ne '\033[31;1mCLIPBOARD: ' ; xsel -b -o ; echo ; echo -ne '\033[32;1mPRIMARY:   ' ; xclip -p -o ; echo ; echo -e '\033[m--------' ; sleep 1 ; done

Дополнительная тема: Информация о том, как работают выборки PRIMARY и CLIPBOARD в Emacs: emacswiki.org/emacs/CopyAndPaste
— Jonas Berlin,

Alt / Meta + средняя кнопка работает для меня в Debian
— Jing

Это правильный ответ.
— Винни

15

Существуют встроенные механизмы для копирования / вставки в / из PRIMARY(используется, когда пользователь выбирает некоторые данные) и CLIPBOARD(используется, когда пользователь выбирает некоторые данные и явно запрашивает их «копирование» в буфер обмена, например, путем вызова «Копировать» в меню «Редактировать» приложения). Подробнее о различных блокнотах в X .

Для CLIPBOARDбуфера это CTRL+META+C( CTRL+ALT+Cдля стандартной клавиатуры ПК) для копирования и CTRL+META+V( CTRL+ALT+V) для вставки.

Цитата из urxvt man :

ВЫБОР: ВЫБОР И ВСТАВКА ТЕКСТА

Поведение механизма выделения и вставки / вставки текста аналогично xterm (1).

Выбор :

Щелкните левой кнопкой мыши в начале области, перетащите в конец области и отпустите; Щелкните правой кнопкой мыши, чтобы расширить отмеченную область; Дважды щелкните левой кнопкой мыши, чтобы выбрать слово; Трижды щелкните левой кнопкой мыши, чтобы выбрать всю логическую строку (которая может занимать несколько строк экрана), если только это не было изменено с помощью тройных кликов ресурсов.

Запуск выделения при нажатии клавиши Meta (или клавиш Meta + Ctrl) (Compile: frills) создаст прямоугольное выделение вместо обычного. В этом режиме каждая выбранная строка становится отдельной строкой в ​​выделении, а завершающие пробелы визуально подчеркиваются и удаляются из выделения.

Приклеивание :

Нажатие и отпускание средней кнопки мыши в окне urxvt приводит к тому, что значение основного элемента (или КЛИПОВОЙ ПЛАТЫ с модификатором Meta) вставляется так, как если бы оно было напечатано на клавиатуре.

Нажатие Shift-Insert также приводит к вставке значения ПЕРВИЧНОГО выбора.

rxvt-unicode также предоставляет привязки Ctrl-Meta-c и для взаимодействия с выбором CLIPBOARD. Первая привязка вызывает копирование значения внутреннего выбора в выборку CLIPBOARD, в то время как вторая привязка вызывает вставку значения выбора CLIPBOARD.


Почему я никогда не думаю, что решения находятся на странице руководства? Теперь мне все ясно! Спасибо!
— Энрико Мария Де Анжелис

1
Между прочим, я постоянно забывал, в какую область между основным выбором и буфером обмена вставляется, когда я выбираю что-то перед щелчком правой кнопки мыши и вставкой. Теперь понятно: до → ПЕРВИЧНЫЙ .
— Энрико Мария Де Анжелис

12

Вы можете сделать urxvt-копию как в основной, так и в буфер обмена с расширением perl для выделения в буфер обмена. Это поддерживает их синхронизацию, поэтому вы просто копируете один раз в urxvt, и это должно работать в приложениях, которые также используют.

URxvt.perl-ext-common: selection-to-clipboard

2
Могу ли я изменить ярлык для этого расширения? Я не люблю по умолчанию Ctrl-Alt-C / V. Я хотел бы иметь ctrl-shift-c / v.
— Трисмегистос

3
@Trismegistos, посмотри сюда
— кодер
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.