Во времена физических терминалов , сессионных буферов обмена не существовало, лишь несколько программ поддерживали внутреннее копирование/вставку - часто под именами “буферов” или “убийственных колец” - и использовали различные нажатия клавиш. Например, оболочка bash использует CtrlK или CtrlU для “kill” (cut), CtrlY для “yank” (paste); это происходит из редактор emacs .
CtrlC почти везде в Unix был клавишей “прерывания” , используемой для отмены текущей программы или операции. Ключ CtrlV часто означал “дословная вставка” - то есть вставка следующего символа буквально без выполнения какого-либо связанного с ним действия. Например, обычный Esc переключается в командный режим в редакторе vi, но CtrlV, Esc вставляет в документ символ ESC
.
Использование CtrlC для копирования и CtrlV для вставки из буфера обмена в масштабе всей сессии было введено Mac OS в 1983 году и Microsoft Windows 3.x в 1990 году. (Более ранние версии Windows (1.x и 2.x), а также IBM OS/2, поддерживали только клавиши IBM CUA CtrlIns для копирования и ShiftIns для вставки; эти ярлыки остаются поддерживаемыми всеми версиями Windows)
Когда графические интерфейсы с поддержкой буфера обмена, наконец, достигли Unix, клавиши Ctrl уже использовались многими терминальными программами. Кроме того, графический интерфейс X имел несколько различные механизмы : “выборки” и “обрезные буферы”. Даже теперь вы можете выделить текст в одной программе и вставить его с помощью средней кнопки мыши, без каких-либо явных действий по копированию.
Короче говоря, к тому времени, когда были написаны Xterm и GNOME Terminal (я полагаю, вы используете последний), CtrlV already имел совершенно другое значение в течение многих лет и не мог быть изменен. Кроме того, альтернативный метод копирования текста - “выделение” - уже присутствовал в X11, так что явное действие копирования/вставки, вероятно, считалось не столь важным, как это было бы в Windows. Это означает, что необходимо было выбирать различные сочетания клавиш - например, большинство современных терминальных программ, таких как GNOME Terminal, используют CtrlShiftC и CtrlShiftV. (Если вы используете Xterm, то те же самые сочетания клавиш можно добавить вручную с помощью X-ресурса XTerm*vt100*translations Xresource. В Rxvt такой возможности нет.)
(В большинстве инструментальных комплектов X11 также поддерживаются клавиши “копировать” и “вставлять” CUA, которые не конфликтуют с терминальными программами. К сожалению, реализации довольно противоречивы - CtrlIns копирует в “буфер обмена” в большинстве программ (GTK, Qt4, но игнорируется Xaw); однако, ShiftIns вставляет из “первичного выделения” в большинстве программ GTK и Qt4, но из “буфера обмена” в Firefox, и из вырезанных буферов теперь-obsolete в теперь-obsolete Xaw. )
Все это говорит о том, что некоторые терминалы или консоли (в частности, консоль Windows 10) do поддерживают эти клавиши. Так как консоль Windows всегда имела отдельный режим “отметить/выбрать”, CtrlC теперь также имеет два значения, основанные на контексте - в обычном режиме он посылает прерывание, в режиме select он копирует в буфер обмена (так же, как это делал Enter).
Между тем, инструменты командной строки Windows никогда на самом деле не used CtrlV ни для чего, так что он был привязан к “вставить”, не беспокоя ничего особенного. Однако делать то же самое на Unix-подобных терминалах было бы более проблематично.