Заставить Ctrl + C копировать текст в gnome-терминал?


70

Можно ли заставить Ctrl+ Cвыполнить команду копирования, если в терминале есть выделенный текст ?
В противном случае он должен сохранить свое нормальное поведение.

(Если есть терминал, который может сделать это, кроме gnome-терминала, это, вероятно, тоже хорошо.)


1
Вам не нужно использовать мышь; на клавиатуре Mac вы можете использовать shift+ enter+ fn. И, на «нормальной» клавиатуре, я думаю, что shiftи insert.
Дэвид Томас

Я подтверждаю. Я просто использую другую смесь copy-fu на «нормальной» клавиатуре: Ctrl + Insert для копирования (и Shift + Insert для вставки), которая не конфликтует с программным прерыванием Ctrl + C
kza

Ответы:


74

Вы можете изменить связывание клавиш для «Вырезать и вставить» со стандартных Ctrl+ Shift+ C, Ctrl+ Shift+ Vна то, что вы говорите, а именно Ctrl+ C, Ctrl+ V, в меню « Правка» → «Сочетания клавиш» . Хотя вы также должны изменить значение терминала по умолчанию, связанное с Ctrl+ C(прерывание), например, таким образом

stty intr ^J

(Я выбрал Ctrl+, Jпотому что я не помню, чтобы это ассоциировалось с каким-либо действием, но вы можете сделать свой собственный выбор.)

Я не думаю, что возможно сохранить действие прерывания по умолчанию для Ctrl+ Cтолько тогда, когда текст не выделен.


1
Как отметил @Pithikos в ответе mangoDrunk, после переназначения ярлыка Copy на Ctrl + C вы можете использовать Ctrl + Shift + C для прерывания без необходимости конфигурировать что-либо еще.
Дуброкс

1
Я установил на ^ Q, потому что обычно это «разморозка / запуск», который редко используется, вреден и ближе к CTRL. Если кто-то тоже решит это сделать, он не должен забывать переназначить «начало», например: stty start ^ J
k3a

Обратите внимание, что невозможно установить комбинацию с использованием Shift stty. (Я установил его на ^ X, так как «резать» здесь не имеет смысла.)
Евгений Сергеев

39

Ctrl+ Cуже назначена другой команде, которая прерывает программу, запущенную в терминале. Например, ping www.google.com начнет пинговать Google до тех пор, пока вы не скажете ей остановиться. То, как вы делаете это, нажав Ctrl+C

Таким образом, они не могли просто изменить назначение этой комбинации.

Выделите текст, который вы хотите скопировать, нажмите Ctrl+ Shift+, Cи он будет скопирован в буфер обмена. Ctrl+ Shift+ , VИ вы его вставите.

Дайте мне знать, если это не сработает ...


16
Вместо того, чтобы говорить, что эти сочетания клавиш имеют другие специфические значения в терминале, вероятно, правильнее будет сказать, что различные консольные приложения ожидают, что смогут использовать их, поэтому, если эмулятор терминала не передал их, это может сделать эти приложения непригодными для использования. ,
Джеймс Хенстридж

6
OS X немного умнее: при выделении некоторого текста он интерпретируется Ctrl+Cкак копия, а при отсутствии выделенного текста - как прерывание.
Behrang

5
На самом деле, OS X не умнее. Сочетание клавиш копирования - Cmd-C, а не Ctrl-C.
Андрей Максим

28

Помимо того, что сказал @Dan, есть еще одна опция для копирования текста в Linux, которую я считаю гораздо более быстрой и простой в использовании, поскольку нет необходимости переключаться с мыши (которую вы используете для выбора) на клавиатуру :

  • выделение текста мышью копирует его в буфер обмена
  • средний щелчок вставляет это.

Эта функция особенно полезна в терминале, например, при сборке команды из битов текста, которые уже находятся на экране.

Это работает во всех приложениях, поэтому можно копировать и вставлять текст с веб-страницы в терминал и т. Д.

Буфер буфера обмена, используемый для копирования-вставки с помощью среднего щелчка, отличается от буфера, используемого для Ctrl-C / Ctrl-V, что позволяет одновременно копировать два разных фрагмента текста.


25

Как уже отмечалось, Ctrl+ Cобычно используется для прерывания программы. Но вместо того , чтобы использовать Ctrl+ Shift+ Cдля копирования, что я гораздо чаще , чем прерывать процесс, изменить настройки , чтобы иметь Ctrl+ Cскопировать и Ctrl+ Shift+ Cдля прерывания.

Вы можете сделать это в GNOME Terminal, перейдя в «Редактировать» -> «Сочетания клавиш ...» и сопоставить действие «Копировать» с Ctrl+ Cи «Вставить» с Ctrl+ V. Команда прерывания будет автоматически переназначена на Ctrl+ Shift+ C.


1
Но как мне тогда сопоставить Ctrl + Shift + C с прерыванием процесса?
kramer65

11
Это случилось автоматически для меня. Все, что я сделал, это установил Copy на Ctrl + C и после сохранения этого Ctrl + Shift + C стал прерыванием.
mangoDrunk

1
@mangoDrunk причина в том, что удержание по Shift + Ctrl + <key>сути печатает тот же символ, что и Ctrl + <key>. Вы можете проверить сread
Pithikos

Я предлагаю сделать это, потому что я копирую, вставляю МНОГО больше, чем прерываю процесс, и легко запомнить ctrl + shift + C как прерывание, а не менять привычку копирования, которая везде одинакова.
летающий посол

3

Чтобы заставить вырезать и вставлять ( Ctrl+ V, Ctrl+ C) в консоли или терминале, поместите следующий код в терминал для автоматического изменения привязок клавиш:

gconftool-2 -t str -s /apps/gnome-terminal/keybindings/copy "<Control>c"

gconftool-2 -t str -s /apps/gnome-terminal/keybindings/paste "<Control>v"

1

Извините за написание ответа на это, похоже, я потратил слишком много своей репутации на награду за то, что я смог оставить комментарий.

Невозможно изменить поведение сочетаний клавиш в зависимости от того, есть выделение текста или нет, и я бы не стал переназначать Ctrl-C терминала.

НО можно легко привыкнуть

  • Ctrl+ Insдля копирования
  • Shift+ Insдля вставки

Это работает практически везде (кроме Наутилуса , вздох) и почти никогда ни с чем не сталкивается!


1

Кто-то хотел, чтобы вы могли использовать:

> stty intr ^K         # free Ctrl+C for copy use Ctrl+K instead
> stty lnext ^-        # free Ctrl+V for paste use ^- instead
> stty -g
> stty -g > ~/.stty    # store the settings in home directory

Добавьте следующее к ~/.bashrc

case $- in
 *i*)
   stty `cat ~/.stty`     #  reload the stored stty settings
   bind -u quoted-insert  #  unbind the quoted-insert function of bash - free Ctrl+V for paste
esac

А затем редактор gconf или еще что-нибудь, чтобы изменить привязку клавиш терминала на CTRL+ Cдля копирования и CTRL+ Vдля вставки.


Ага ... форматирование испортилось. См .: sandipchitale.blogspot.com/2008/10/…
Сандип Читале


0

Я думаю, что вы не можете, потому что в терминале GNOME Ctrl+ C, Ctrl+ X, Ctrl+ Vне работают. Для вырезания, копирования и вставки необходимо выделить текст, щелкнуть правой кнопкой мыши и выбрать действие, которое вы хотите выполнить.


Вы все еще можете использовать короткие сокращения, чтобы вырезать в терминале это Ctrl + Shift + C (копировать) и Ctrl + Shift + V (вставить) и Ctrl + Shift + X.
Ренс

0

Как уже говорилось, Ctrl-C не будет работать из-за использования прерываний, но я только что нашел способ, который сработал для меня. Моя цель состояла в том, чтобы иметь только две клавиши, а не три, и желательно то, к чему я привык, и не слишком неудобное место на клавиатуре. На клавиатуре, установленной на моем компьютере с Linux, есть клавиша «Windows», там же, где клавиша «Command» на Mac. Поэтому я просто пошел в «Правка»> «Сочетания клавиш», когда я изменил сочетания клавиш, чтобы использовать эту клавишу, там написано «Super + C» и «Super + V». Я тоже иногда использую Mac, так что к этому было легко привыкнуть.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.