Копіювання та вставка з URxvt


27

Я використовую URxvt 9.20 для debian jessie, і шукаю спосіб скопіювати та вставити текст, як я звик до gnome-терміналу ( Ctrl+ Insertдля копіювання, Shift+ Insertдля вставки).

Він працює в різних консолях urxvt, але він не працює, наприклад, наприклад, urxvt та iceweasel.

Я спробував відповідно до посібника по archlinux , але він не буде працювати (хоча я фактично не хочу використовувати Shift+ Ctrl+ C/ Vварто було спробувати).

.Ресурси:

! ******************
! 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, або лівий + правий клацання, якщо ввімкнено третю кнопку емуляції). Але, хоча це пояснює, чому програми не передають дані між собою, мені цікаво, чому пропозиція аркі-вікі не працювала.
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, що має той самий ефект, що я забув згадати найімовірніший момент: у мене не встановлено середовище робочого столу: - я ' я використовую лише менеджер Windows (i3wm) - я використовую графічний менеджер входу
Thomas John

Відповіді:


16

На жаль, система вікон X має кілька різних механізмів копіювання-вставки .

Rxvt, як і більшість програм X-Old-School X, використовує основний вибір. Як правило, коли ви вибираєте щось за допомогою миші, воно автоматично копіюється в основний вибір, а при натисканні клавішею миші, щоб вставити його, вставляє основний вибір.

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

Існують інструменти для полегшення роботи з виділеннями. Зокрема, якщо ви просто хочете мати один вибір, який скопіюється на вибір, вибираючи мишею або натискайте клавішу Ctrl+ C, ви можете запустити автоцистерну (запустіть її із ваших .xinitrcпрограм запуску або з середовища робочого столу), яка визначає, коли щось копіюється в один із виділених елементів і автоматично копіює його в інший.


20

Для вставки тексту у urxvt / rxvt-unicode можна використовувати middle buttonдля вставки PRIMARY selection та Alt/Meta+ middle buttonдля вставки CLIPBOARD.

Для копіювання просто позначення тексту в терміналі копіює його у вибір PRIMARY. Для копіювання до вибору 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 призводить до того, що значення PRIMARY виділення (або CLIPBOARD з модифікатором Meta) буде вставлено так, ніби воно було введено на клавіатурі.

Натискання клавіші Shift-Insert спричиняє також введення значення PRIMARY виділення.

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.
Trismegistos

3
@Trismegistos, погляньте сюди
Coder
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.