Як скопіювати текст з командного рядка в буфер обміну без використання миші?


10

Я намагаюся знайти спосіб копіювання поточного тексту в командному рядку до буфера обміну БЕЗ дотику до миші. Іншими словами, мені потрібно вибрати текст лише з клавіатури. Я знайшов рішення на пів шляху, яке може призвести до повного рішення:

Ctrl+a - перейти до початку рядка.

Ctrl+k - обрізає всю лінію.

Ctrl+y - янки повертає вирізаний текст назад.

Крім того, я також можу використовувати Ctrl+uдля виконання перших 2 етапів.

Це, звичайно, працює, але я намагаюся зрозуміти, де саме збережений вирізаний текст. Чи є спосіб отримати доступ до нього без використання Ctrl+y? Я знаю про це xclipі навіть використовую його для передачі тексту прямо у буфер обміну, тому я думав про перенесення даних, збережених Ctrl+kдо xclip, але не впевнений, як це зробити.

Поки що я отримав метод - це написання сценарію, який використовується xdotoolдля додавання echoна початок рядка та | zxcв кінець рядка, а потім натискання клавіші enter ( zxcце власний псевдонім, який в основному передається xclip). Це також працює, але це не зовсім «чисте» рішення.

Я використовую Cshell, якщо це має значення.

EDIT: Я не хочу використовувати screenяк рішення, забув це згадати.

Дякую!


Неспоріднене, але також добре знати: Shift-Ins вставляє виділення в xterm, якщо ви не тільки хочете вирізати текст, але й вставити.
— dirkt

Відповіді:


7

Якщо ви користуєтесь xtermабо похідною, ви можете встановити прив'язки клавіш, щоб почати та закінчити вибір тексту, і зберегти їх як основний вибір X11 або скорочувач. Див man xterm. Наприклад, додайте до свого ~/.Xdefaults:

XTerm*VT100.Translations: #override\n\
    <Key>KP_1: select-cursor-start() \
            select-cursor-end(PRIMARY, CUT_BUFFER0)\n\
    <Key>KP_2: start-cursor-extend() \
            select-cursor-end(PRIMARY, CUT_BUFFER0)\n

Ви можете мати лише один XTerm*VT100.Translationsзапис. Оновіть сервер X11 новим вмістом файлу за допомогою xrdb -merge ~/.Xdefaults. Почніть нове xterm.

Тепер, коли у командному рядку є деякий ввід, набравши 1цифрову клавіатуру, ви почнете вибирати текст у поточному положенні курсору тексту, як і кнопка 1 вниз на миші. Перемістіть курсор за допомогою клавіш зі стрілками, потім натисніть 2на цифровій клавіатурі, а текст, що втручається, виділяється та копіюється в основний вибір та cutbuffer0. Очевидно, можна вибрати інші більш підходящі клавіші та дії. Можна аналогічно вставити виділення подібними палітурками insert-selection(PRIMARY).


Це чудово! Я не мав уявлення, що ти можеш це зробити. Дуже корисний! Чи можна використовувати його в konsole?
— Санчо Панчо

2
Я швидко ознайомився з посібником з konsole, але в ньому не згадується таке управління. Навряд чи ви знайдете це в більшості емуляторів терміналів, оскільки вони вважають за краще надавати налаштування, простіше керувати через меню та діалоги.
— meuh

translationsРесурс є функція X Toolkit згадується тут і там , який не має аналогів в інших інструментаріїв. Однак ви можете перемикатися між наборами перекладів за допомогою цієї keymapфункції (зазначаючи коментар про "Ви можете мати лише один").
— Томас Дікі

Дякую за всі коментарі. Ще не дізнався про буфер обміну ctrl-k / ctrl-y, хтось знає, як отримати доступ до цього чи де він насправді зберігає вирізаний текст?
— Санчо Панчо

@SanchoPancho Залежно від вашого csh, він реалізує внутрішнє кільце для вбивства, яке зберігає вирізаний текст і забезпечує його назад прив'язками yank і yank-pop. Я не думаю, що у вас є інший доступ до цього кільця. см людини CSH .
— meuh
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.