当我将某些内容复制到剪贴板并在Bash中按Ctrl+ V时,什么也没有发生。但是,右键单击并选择“ 粘贴”即可完成工作。
为什么?Linux中此行为背后是否存在任何合理的问题(我确定有)?
Ctrl-Shift-V
个人更喜欢。
当我将某些内容复制到剪贴板并在Bash中按Ctrl+ V时,什么也没有发生。但是,右键单击并选择“ 粘贴”即可完成工作。
为什么?Linux中此行为背后是否存在任何合理的问题(我确定有)?
Ctrl-Shift-V
个人更喜欢。
Answers:
在物理终端时代,不存在整个会话范围的剪贴板,只有很少的程序支持内部复制/粘贴(通常以“缓冲区”或“ kill ring”的名义),并使用各种不同的击键。例如,bash shell使用CtrlK或CtrlU来“杀死”(剪切)CtrlY到“猛击”(粘贴);这个来自该emacs的编辑器。
CtrlC在Unix中几乎所有地方都是“ interrupt”键,用于取消当前程序或操作。该CtrlV键通常表示“普通插入” –即,不执行任何相关操作就按字面插入以下字符。例如,一个正常的Esc开关来命令在模式VI编辑器,但是CtrlV,Esc将插入ESC
字符到文档中。
Mac OS在1983年和1990年在Microsoft Windows 3.x中引入了使用CtrlC复制和CtrlV粘贴整个会话范围的剪贴板的功能(早期Windows版本(1.x和2.x)以及IBM OS / 2)。 ,仅支持复制和粘贴IBM CUA密钥;所有Windows版本仍支持这些快捷方式。)CtrlInsShiftIns
当带有剪贴板支持的GUI最终到达Unix时,Ctrl许多终端程序已经在使用这些按键。此外,X图形界面具有一些不同的机制:“选择”和“剪切缓冲区”。即使是现在,您也可以在一个程序中选择文本,然后使用鼠标中键将其插入,而无需任何显式的复制操作。
简而言之,在编写Xterm和GNOME Terminal时(我猜您使用的是后者),CtrlV 多年来的含义已经完全不同,无法更改。此外,X11中已经存在另一种复制文本的方法-“选择”,因此,显式复制/粘贴操作可能不像在Windows中那样重要。这意味着必须选择不同的键盘快捷方式–例如,大多数现代终端程序(例如GNOME Terminal)都使用CtrlShiftC和CtrlShiftV。(如果使用Xterm,则可以使用XTerm * vt100 * translations Xresource 手动添加相同的快捷方式。Rxvt没有此类选项。)
(大多数X11工具包还支持CUA的“复制”和“粘贴”键,这与终端程序没有冲突。不幸的是,实现方式并不一致- CtrlIns大多数程序(GTK,Qt4,复制到“剪贴板”中,但被忽略) Xaw);但是,ShiftIns从大多数GTK和Qt4程序中的“主要选择”中粘贴,但从Firefox中的“剪贴板”中粘贴,并从现已过时的Xaw中粘贴。
综上所述,某些终端或控制台(特别是Windows 10控制台)确实支持这些键。由于Windows控制台始终具有单独的“标记/选择”模式,因此CtrlC现在还具有基于上下文的两种含义-在常规模式下,它发送一个中断,在选择模式下,它复制到剪贴板(就像Enter以前一样)。
同时,Windows命令行工具从来没有真正用于 CtrlV任何用途,因此它必须“粘贴”而不打扰任何事情。但是,在类似Unix的终端上执行相同的操作会遇到更多问题。
<C-v>
到i
版本3 时犯了一个错误,但是我不太清楚为什么。
使用CtrlShiftV粘贴。
Ctrl 与其他字符一起通常由shell用于特殊功能。
bash
单独执行。如果您不在GUI环境中,或者使用的是其他术语模拟器,则可能无法使用。不要认为此命令是可移植的。
这是带有常用终端的通用复制粘贴设置:
gnome-terminal(在Linux上最流行)
复制:CtrlShiftC
粘贴:CtrlShiftV
注意:选择复制和middle-click粘贴也可以,但是它使用备用剪贴板。
腻子(在Windows最流行的终端)
复制:(鼠标选择,没有键盘交互)
粘贴:Right-click (或更可靠:shiftRight-click)
注:应用该拿鼠标输入(如vim
和links
)可以窃取Right-click- shiftRight-click总是在任何应用工作。
OSX终端
复制:AppleC
粘贴:AppleV
注意:进行鼠标控制(如vim
和links
)的应用程序可能会覆盖选择文本的含义,在这种情况下,复制将无法按您期望的方式工作。在这种情况下,请Control在拖动鼠标进行选择时按住。在终端设置中,默认情况下鼠标与应用程序的交互是禁用的,因此大多数人甚至都不知道此事。
cmd.exe
比腻子在Windows上更受欢迎?:-)
cmd.exe
不是SSH终端。这是真的。
根深蒂固的传统是,Ctrl键与字母一起生成ASCII控制字符,方法是从大写字母的ASCII值中减去64。此计算将Ctrl- 映射A为1,依此类推。举例来说Ctrl- I是Tab和Ctrl- J被换行。
Ctrl- 没有类似的传统Shift。 Ctrl- Shift- V预计不会产生任何特定的字符。
终端仿真器必须通过透明地通过Ctrl约定来支持传统,使其成为通过该终端窗口运行的程序的字符输入。基于终端的程序将控制键映射到命令。例如,Bash使用Ctrl- V作为命令,表示“从字面上接受下一个字符”。这使您可以在命令行中嵌入控制字符。如果终端窃取了控制键供自己使用,则这些命令将不可用。因此,拦截Ctrl- V对于元功能是不可能的(至少在默认配置中)。
然而,终端仿真器可以自由地拦截Ctrl- Shift- V未预计将产生的字符。Ctrl- Shift- V不是一个标准; 这是Gnome Terminal的东西(可能在其他一些终端中)。
在基于X的Unix桌面上,约定是不需要复制任何命令。您只需选择文本。然后,中间按钮将该文本粘贴到其他位置。您会发现它可以在Xterm,Gnome Terminal和Firefox中运行。
Ctrl- V是Microsoft Windows约定,是Macintosh 中Apple- 的模仿V。
<kbd>
在以后的文章中键入所有这些标签。
Ctrl-A
是1
。我该如何尝试?按下时,我的Gnome终端不执行任何操作Ctrl-A
。
如果您感到懒惰,也可以使用鼠标中键,并从文本文档,脚本,Web或论坛中选择命令。选择了所需的命令后,只需将其移至终端并单击鼠标的中间按钮即可。我使用这种方法是因为我使用的是小狗linux,它似乎不支持右键单击和粘贴的正常行为。它在文件处理程序窗口中执行,而不是在终端窗口中执行。不知道为什么,但是我很安静,我发现中间按钮方法非常方便!;-)
Shift
-Insert
也可以使用