Вибір тексту в терміналі без використання миші


68

Я збираюся натиснути Enter, щоб запустити команду в терміналі, але перш ніж це зробити, я хочу скопіювати команду в буфер обміну без використання миші.

Як?

Якщо ви десь інший, ніж термінал, Ctrl+ Homeце робите .

Чи є спосіб довільного вибору такого тексту в терміналі?

ВІДМОВЛЕНО:

  • припустимо, що використання інших програм на зразок screenне є хорошою альтернативою
  • текст повинен бути вставлений поза терміналом, тому Ctrl+ yта подібні послідовності також не вирішують його

1
Ви маєте на увазі Ctrl-Shift-Home?
Механічний равлик

Shift-Home копії на початок рядка. Ctrl-Shift-Home копії на початок сторінки.
Страпаковський

Shift-Home і Ctrl-Shift-Home роблять те ж саме для мене (переходьте до початку терміналу), і жоден з них, схоже, не копіює нічого, що може бути застосовано ні Ctrl-Y, ні Ctrl-Shift-V (ні вибирати). Але це працює в текстовому редакторі, не копіюючи, а лише вибираючи. Використання OpenSUSE Leap 15 у віртуальній коробці. Усі інші ключові обов'язки, згадані у відповідях, працюють.
Брамбор

Відповіді:


16

Прив’яжіть наступний ярлик:

bind '"\C-p": "\C-e\C-u xsel <<"EOF"\n\C-y\nEOF\n\C-y"'

Тепер після використання Crtl+ Pваша лінія буде скопійована в буфер обміну. Ви можете вставити його в термінал, використовуючи:

xsel

І в будь-яку програму X, використовуючи середню кнопку миші або Shift+ Insert.


я хочу уникати використання миші. Чи можна вставити його за допомогою ctrl + shift + v замість середньої кнопки миші?
MrGigu

@MrGigu, тут використовується інший буфер обміну (див. Тут ). Вам потрібно використовувати інший ярлик. За замовчуванням це має бути Shift + Insert (див. Тут )
Nykakin

О, дякую, роботи Shift + вставлятимуть! Ви не знали, що можете вставити цю команду.
MrGigu

Будь-яке пояснення, що насправді відбувається тут?
Олександр

Або використати xsel -bстандартний буфер обміну, тобто той, який використовує Ctrl + V / Ctrl + Shift + V. Також варто зауважити, що цей метод не працює в багаторядкових командах.
wjandrea

27

Якщо ви використовуєте одну з оболонок, яка розуміє клавіші emacs (bash, csh тощо), ви можете скопіювати поточну команду:

  1. control-A переведе вас до початку рядка.

  2. control-K вб'є всю лінію, яку ви тільки що ввели.

  3. control-Y поверне текст назад.

Потім пізніше ви можете control-Yповернути текст назад, щоб вставити текст назад як вхід до редактора командного рядка оболонки.

Дивіться, man bashа потім, коли він з'явиться, введіть, /emacsа потім ще пару ns (далі), щоб перенести вас вперед, до розділу "НАЧАК".


Я це знав, але хочу вставити поза терміналу. Відредаговано для уточнення.
Страпаковський

3
control-Uможе скоротити команду з кінця безпосередньо
vstepaniuk

1
2-а команда змінила моє життя.
кришна

10

Найближче, про що я можу придумати, це Ctrl+ u, Ctrl+ y
Це видалить з курсору на початок рядка, а потім вставить з буфера читання. Це не зовсім те саме, що буфер обміну, але ви зможете вставити всередину оболонки, якщо це те, що вам потрібно.


Я це знав, але хочу вставити поза терміналу. Відредаговано для уточнення.
Страпаковський

8

Існує програма, що називається екран. Він створює систему вікон тексту, яка дозволяє перемикатися між декількома екземплярами. Але це також дозволяє виділити текст.

sudo apt-get install screen

Ця команда встановлює його.

Потім введіть screen

Ви використовуєте ctr-a для запуску послідовності команд. Потім натисніть esc і ваш курсор рухатиметься в будь-якому напрямку. Натисніть клавішу Enter, щоб розпочати вибір тексту, перейдіть до кінцевої точки, натисніть клавішу enter ще раз. Це буде скопійовано в буфер.

Тоді ctr-a, а потім} вставить

Детальніше про інші команди тут http://www.kuro5hin.org/story/2004/3/9/16838/14935


Гарна пропозиція, але мені це не подобається screenз різних причин, тому припускайте звичайний термінал Ubuntu. Редагував моє запитання для уточнення.
Страпаковський

1
Це слід позначити як правильну відповідь ІМХО.
eddiewould

2

Якщо ви знаходитесь всередині vim, ви можете візуально вибрати одну або кілька ліній з Shift+, vа потім використовувати прив'язку, наприклад yy, для передачі виділення на xclip .

Додайте прив’язку до свого vimrc:

vnoremap yy :w !xclip -selection clipboard<CR><CR>

Для цього потрібно встановити xclip , він знаходиться у сховищі можливостей Debian / Ubuntu.

xclipзберігає stdin, при цьому -selection clipboardопція також висуває stdin до системного буфера обміну.

Таким чином, ви також можете використовувати xclipзагальний спосіб з терміналу, наприклад, щоб скопіювати весь файл у буфер обміну системи:

cat myfile | xclip -selection clipboard

Якщо ви також можете створити псевдонім, наприклад:

alias cb="xclip -selection clipboard" 

1

Терміт Даніеля Мікі займає "режим вибору". Натискання клавіш Ctrl + Shift + пробіл активує її. Має вим-подібні ключі. v або V вибере візуальний режим à la vim, y потягне, Esc вийде з режиму вибору.

Скопійовано з https://stackoverflow.com/questions/1536757/selecting-text-in-terminal-without-using-the-mouse/29386401

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