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


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.