Во времена физических терминалов буфер обмена в течение сеанса не существовал, лишь немногие программы поддерживали внутреннее копирование / вставку - часто под названием «буферы» или «кольца уничтожения» - и использовали различные нажатия клавиш. Например, оболочка bash использует CtrlKили CtrlU«убивать» (вырезать), CtrlY«дергать» (вставлять); это происходит от в 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 CUACtrlIns для копирования и ShiftInsвставки; эти сочетания клавиш поддерживаются всеми версиями Windows.)
Когда GUI с поддержкой буфера обмена наконец достигли Unix, Ctrlнажатия клавиш уже использовались многими терминальными программами. Кроме того, графический интерфейс X имел несколько иные механизмы : «выборки» и «обрезки буферов». Даже сейчас вы можете выделять текст в одной программе и вставлять его с помощью средней кнопки мыши, без каких-либо явных действий копирования.
Короче говоря, к тому времени, когда были написаны Xterm и GNOME Terminal (я полагаю, вы используете последний), они CtrlV уже много лет имели совершенно другое значение и не могли быть изменены. Кроме того, альтернативный метод копирования текста - «выделение» - уже присутствовал в X11, поэтому явное действие копирования / вставки, вероятно, считалось не таким важным, как в Windows. Это означает, что нужно было выбирать разные сочетания клавиш - например, большинство современных терминальных программ, таких как GNOME Terminal, используют CtrlShiftCи CtrlShiftV. (Если вы используете Xterm, те же самые ярлыки можно добавить вручную, используя Xresource XTerm * vt100 * translations . Rxvt не имеет такой опции.)
(Большинство наборов инструментов X11 также поддерживают клавиши «копировать» и «вставить» CUA, которые не конфликтуют с терминальными программами. К сожалению, реализации довольно противоречивы - CtrlInsкопии в «буфер обмена» в большинстве программ (GTK, Qt4, но игнорируются Xaw), однако, ShiftInsвставляет из "первичного выбора" в большинстве программ GTK и Qt4, но из "буфера обмена" в Firefox и из устаревших теперь буферов среза в устаревшем Xaw.)
Все , что сказал, некоторые терминалы или консоли (в частности, для Windows 10 консоли) сделать поддерживают эти ключи. Поскольку консоль Windows всегда имела отдельный режим «пометить / выбрать», CtrlCтеперь она также имеет два значения в зависимости от контекста - в обычном режиме она отправляет прерывание, в режиме выбора она копирует в буфер обмена (так же, как Enterраньше).
Между тем, инструменты командной строки Windows никогда не использовались CtrlV для чего-либо, поэтому он должен был «вставлять», ничего не мешая. Однако сделать то же самое на Unix-подобных терминалах было бы более проблематично.
Shift
-Insert
также работает