Во времена физических терминалов буфер обмена в течение сеанса не существовал, лишь немногие программы поддерживали внутреннее копирование / вставку - часто под названием "буферы" или "кольца уничтожения" - и использовали различные нажатия клавиш. Например, оболочка bash использует Ctrl K или Ctrl U, чтобы "убить" (вырезать), Ctrl Y - "убрать" (вставить); это происходит из редактора Emacs.
Ctrl C почти везде в Unix была клавишей "прерывание", используемой для отмены текущей программы или операции. Клавиша Ctrl V часто означала "дословную вставку", то есть буквально вставляла следующий символ без выполнения каких-либо связанных действий. Например, обычный Esc переключается в командный режим в редакторе vi , но Ctrl V , Esc вставит символ ESC
в документ.
Использование Ctrl C для копирования и Ctrl V для вставки из буфера обмена всей сессии было введено Mac OS в 1983 году и Microsoft Windows 3.x в 1990 году. (Более ранние версии Windows (1.x и 2.x), а также IBM OS/2 поддерживали только клавиши IBM CUA Ctrl Ins для копирования и Shift Ins для вставки; эти сочетания клавиш поддерживаются всеми версиями Windows.)
Когда графические интерфейсы с поддержкой буфера обмена наконец достигли Unix, нажатия клавиш Ctrl уже использовались многими терминальными программами. Кроме того, графический интерфейс X имел несколько иные механизмы: "выборки" и "вырезанные буферы". Даже сейчас вы можете выделять текст в одной программе и вставлять его с помощью средней кнопки мыши, без каких-либо явных действий копирования.
Короче говоря, к тому времени, когда были написаны Xterm и GNOME Terminal (я полагаю, вы используете последний), Ctrl V уже много лет имел совершенно другое значение и не мог быть изменен. Кроме того, альтернативный метод копирования текста - "выделение" - уже присутствовал в X11, поэтому явное действие копирования / вставки, вероятно, считалось не таким важным, как в Windows. Это означает, что нужно было выбирать разные сочетания клавиш - например, большинство современных терминальных программ, таких как GNOME Terminal, используют Ctrl Shift C и Ctrl Shift V. (Если вы используете Xterm, те же самые ярлыки можно добавить вручную, используя Xresource XTerm * vt100 * translations . Rxvt не имеет такой опции.)
(Большинство наборов инструментов X11 также поддерживают ключи CUA "копировать" и "вставить", которые не конфликтуют с терминальными программами. К сожалению, реализации довольно противоречивы - Ctrl Ins копирует в "буфер обмена" в большинстве программ (GTK, Qt4, но игнорируется Xaw); однако Shift Ins вставляется из "первичного выделения" в большинстве программ GTK и Qt4, но из "буфера обмена" в Firefox и из устаревших теперь буферов вырезания в устаревшем Xaw.)
Все , что сказал, некоторые терминалы или консоли (в частности, для Windows 10 консоли) поддерживают эти ключи. Поскольку консоль Windows всегда имела отдельный режим «пометка / выбор», Ctrl C теперь также имеет два значения в зависимости от контекста - в обычном режиме он отправляет прерывание, в режиме выбора он копирует в буфер обмена (так же, как это делал Enter ).
Между тем, инструменты командной строки Windows никогда по-настоящему не использовали Ctrl V для чего-либо, поэтому он должен был "вставлять", ничего не мешая. Однако сделать то же самое на Unix-подобных терминалах было бы более проблематично.