使Ctrl + C在gnome-terminal中复制文本?


70

是否有可能对我作出Ctrl+ C执行复制命令,如果有高亮文本在终端?
否则,它应保持其正常行为。

(如果除了gnome-terminal之外,还有一个可以执行此操作的终端,那也可能很好。)


1
您不必使用鼠标。在Mac键盘上,您可以使用shift+ enter+ fn。而且,在“普通”键盘上,我认为是shiftinsert
大卫·托马斯

我确定。我只是在'普通'键盘上使用了copy-fu的另一种混合方式:Ctrl + Insert用于复制(和Shift + Insert用于粘贴),这与程序中断不冲突Ctrl + C
kza 2015年

Answers:


74

您可以在“ 编辑”→“键盘快捷键”菜单中将“ 剪切和粘贴”的键绑定从默认的Ctrl+ Shift+ CCtrl+ Shift+ V更改为您所说的名称,即Ctrl+ CCtrl+ 。尽管您还应该更改与+ (中断)关联的默认终端含义,例如以这种方式VCtrlC

stty intr ^J

(我选择Ctrl+ J是因为我不记得它与某些操作相关,但是您可以自己选择。)

我认为仅当没有突出显示文本时,才可能保留Ctrl+ 的默认中断操作C


1
正如@Pithikos在mangoDrunk的回答中指出的那样,在将复制快捷方式重新映射到Ctrl + C之后,您可以使用Ctrl + Shift + C来中断,而无需进行其他配置。
dubrox

1
我将其设置为^ Q,因为它通常是“解冻/启动”,很少使用,有害并且更接近CTRL。如果有人也决定这样做,那么他们一定不要忘记先重新映射“开始”,例如:stty start ^ J
k3a

请注意,使用不可能将其设置为包含Shift的组合stty。(我将其设置为^ X,因为此处的“剪切”没有意义。)
Evgeni Sergeev

39

Ctrl+ C已分配给另一条命令,该命令会中断终端中正在运行的程序。例如,对www.google.com进行ping操作将开始对Google进行ping操作,直到您告诉它停止为止。方法是按Ctrl+C

因此,他们不能只是更改该组合的分配。

突出显示要复制的文本,然后按Ctrl+ Shift+ C并将其复制到剪贴板。Ctrl+ Shift+,V然后将其粘贴。

让我知道它是否无效...


16
与其说这些键绑定在终端中还有其他特定含义,不如说各种控制台应用程序希望能够使用它们,因此可能更正确,因此,如果终端仿真器未将其传递给它们,则可能会使这些应用程序无法使用。 。
James Henstridge

6
OS X更加智能:选择某些文本时,它将解释Ctrl+C为副本;而没有选择文本时,则将其解释为中断。
Behrang 2014年

5
实际上,OS X并不聪明。复制键盘快捷键是Cmd-C,而不是Ctrl-C。
Andrei Maxim

28

除了@Dan所说的以外,还有一个用于在Linux中复制粘贴文本的选项,我发现它可以更快,更轻松地使用,因为不需要将鼠标(用来选择的内容)夹在键盘上:

  • 用鼠标选择文本将其复制到剪贴板
  • 单击鼠标中键将其粘贴。

此功能在终端中特别有用,例如,当从已经显示在屏幕上的文本位组合命令时。

这适用于所有应用程序,因此可以将文本从网页复制粘贴到终端等。

用于单击中键复制粘贴的剪贴板缓冲区与用于Ctrl-C / Ctrl-V的剪贴板缓冲区是分开的,从而可以同时复制两个不同的文本位。


25

如前所述,Ctrl+ C通常用于中断程序。但是,我没有使用Ctrl+ Shift+ C复制(比中断进程更频繁地执行复制),而是将设置更改为具有Ctrl+ C复制和Ctrl+ Shift+ C中断。

您可以在GNOME终端中执行此操作,方法是转到“编辑”->“键盘快捷键...”,然后将“复制”操作映射到Ctrl+ C,将“粘贴” 映射到Ctrl+ V。中断命令将自动重新映射到Ctrl+ Shift+ C


1
但是如何将Ctrl + Shift + C映射到中断进程?
kramer65

11
它对我来说是自动发生的。我所做的只是将“复制”设置为Ctrl + C,保存后将Ctrl + Shift + C中断。
mangoDrunk 2014年

1
@mangoDrunk的原因是,holding Shift + Ctrl + <key>基本上打印与相同的字符 Ctrl + <key>。您可以使用read
Pithikos

我建议这样做,因为我复制了很多东西而不是中断一个进程,并且很容易将ctrl + shift + C记为中断,而不是改变我的复制习惯,这在其他地方都是一样的。
flydrifter

3

要在控制台或终端中执行剪切和粘贴(Ctrl+ VCtrl+ 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用于粘贴

这几乎可以在任何地方使用(在Nautilus中除外),并且几乎不会干扰任何东西!


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对于粘贴)。




0

我认为您不能,因为在gnome终端Ctrl+ CCtrl+ XCtrl+中V不起作用。对于剪切,复制和粘贴,您必须突出显示文本,右键单击并选择要执行的操作


您仍然可以使用快捷方式切入终端,这些是ctrl + shift + c(复制)和ctrl + shift + v(粘贴)和ctrl + shift + x。
仁斯

0

如前所述,Ctrl-C由于使用了中断而无法工作,但我只是想出了一种对我有用的方法。我的目标是只有两个按键,而不是三个,最好是我习惯的按键,并且在键盘上的位置不太方便。我在Linux机器上拥有的键盘具有“ Windows”键,与Mac上的Command键位于同一位置。因此,我只是去了“编辑”>“键盘快捷键”,当我更改了使用此键的快捷键时,它说的是Super + C和Super + V。有时我也使用Mac,因此很容易习惯。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.