Выделение текста в терминале без использования мыши

Я собираюсь нажать клавишу enter, чтобы запустить команду в терминале, но перед этим я хочу скопировать команду в буфер обмена без использования мыши.

Как?

Если вы находитесь где-то, кроме терминала, Ctrl+Home делает это.

Есть ли способ произвольного выбора такого текста в терминале?

отредактированный:

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

Если вы используете одну из оболочек, которая понимает ключи emacs (bash, csh и т.д.), Вы можете скопировать текущую команду с помощью:

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

  2. control-K уничтожит всю строку, которую вы только что ввели.

  3. control-Y будет возвращать текст обратно.

Тогда позже вы сможете control-Y потяните текст назад, чтобы вставить текст обратно в качестве входных данных в редактор командной строки оболочки.

Видеть man bash а затем, когда он появится, введите /emacs за ним последовала пара n's (далее), чтобы переместить вас вперед к разделу READLINE.

Привязать следующий ярлык:

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

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

xsel

И в любое приложение X, используя среднюю кнопку мыши или Shift+Insert.

Самое близкое, что я могу придумать, это Ctrl+u, Ctrl+y
Это приведет к удалению от курсора до начала строки, а затем вставке из буфера строки чтения.Это не совсем то же самое, что буфер обмена, но вы сможете вставить его внутрь оболочки, если это то, что вам нужно.

Существует программа под названием screen. Он создает текстовую оконную систему, которая позволяет вам переключаться между несколькими экземплярами. Но он также позволяет вам выделять текст.

sudo apt-get install screen

Эта команда устанавливает его.

Затем введите screen

Вы используете ctr-a для запуска последовательности команд. Затем нажмите клавишу esc, и ваш курсор переместится в любом направлении. Нажмите клавишу enter, чтобы начать выделение текста, перейдите к конечной точке, снова нажмите клавишу enter. Это будет скопировано в буфер.

Затем ctr-a, а затем } вставит

Более подробная информация о других командах здесь http://www.kuro5hin.org/story/2004/3/9/16838/14935

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

Добавьте привязку к вашему vimrc:

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

Для этого требуется xclip для установки он находится в репозитории Debian/Ubuntu aptitude.

xclip хранит stdin, с помощью -selection clipboard опция он также помещает stdin в системный буфер обмена.

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

cat myfile | xclip -selection clipboard

Если вы можете дополнительно также создать псевдоним, например:

alias cb="xclip -selection clipboard" 

"Термит" Дэниела Микея имеет "режим выбора". Нажатие Ctrl + Shift + Пробел активирует его. У него есть привязки клавиш, похожие на vim. v или V выберут визуальный режим à la vim, y дернет, Esc выйдет из режима выбора.

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

Предполагая, bash или совместимый, вы можете скопировать команду из своей истории в буфер обмена после ее выполнения:

$ fc -lrn | head -1 | xclip -se c

Если вы не хотите запускать его перед копированием в буфер обмена, перейдите к началу с помощью Ctrl+A и временно превратите его в комментарий, добавив #.

Наличие псевдонима для командной строки, приведенного выше, удобно при записи процедур командной строки для последующего использования или документации. Однако еще удобнее просто добавить последнюю команду непосредственно в файл по мере необходимости, выполнив команду, подобную этой (c2f=command to file):

$ c2f() { fc -lrn | head -1 >> "${1?}"; }

Использование:

$ cat <(echo '!! example command that "includes chars" with shell > semantics, etc') | cat >&2$ c2f readme.md

readme.md теперь содержит:

...cat <(echo '!! example command that "includes chars" with shell > semantics, etc') | cat >&2

Чтобы ускорить последующее редактирование файла, также может быть удобно немного расширить описанное выше и добавить некоторый соответствующий синтаксис для команды, добавляемой к файлу, например ```bash...```.

Ты имеешь в виду Ctrl-Shift-Home?

Shift-Home копирует в начало строки. Ctrl-Shift-Home копирует в начало страницы.

Shift-Home и Ctrl-Shift-Home делают то же самое для меня (переход к началу терминала), и ни один из них, похоже, не копирует ничего, что можно было бы удалить ни Ctrl-Y, ни Ctrl-Shift-V (ни select). Но он работает в текстовом редакторе, не копируя, а просто выделяя.
Использование openSUSE Leap 15 в Virtual Box. Любая другая привязка ключей, упомянутая в ответах, работает.