Ctrl v не работает в linux

Обновлено: 03.07.2024

Когда я копирую что-то в буфер обмена и нажимаю Ctrl + V в Bash, ничего не происходит; Тем не менее, щелкнув правой кнопкой мыши и выбрав Вставить, сделает работу.

Почему? Есть ли какая-либо разумная проблема (я уверен, что есть) за этим поведением в Linux?

Вы также можете использовать Shift + Insert в большинстве оболочек.

Во времена физических терминалов буфер обмена в течение сеанса не существовал, лишь немногие программы поддерживали внутреннее копирование / вставку - часто под названием «буферы» или «кольца уничтожения» - и использовали различные нажатия клавиш. Например, оболочка 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.)

Когда GUI с поддержкой буфера обмена наконец достигли 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-подобных терминалах было бы более проблематично.

Copy paste Linux

Хочу рассказать о некоторых особенностях буфера обмена в Linux. О буфере копирования и про буфер выбора (первичный буфер), а также про копирование и вставку текста в терминале.

Буфер копирования

Стандартно для копирования и вставки объектов в Linux используются сочетания клавиш Ctrl+C и Ctrl+V. При копировании текст (или любой другой объект) в таком случае попадает в обычный буфер копирования. Затем вы можете вставить этот текст в другом месте.

Буфер выбора (первичный буфер)

В Linux существует еще буфер выбора или первичный буфер. Текст, который вы выделяете в любой программе, автоматически попадает в буфер обмена! Это удобно, выделил текст, открыл другое окно и вставил этот кусок текста. Есть некоторые исключения, но они незначительны. Например, у меня в Ubuntu это не работает, если программа использует JVM (Java Virtual Machine).

Кстати, именно этим объясняется следующие поведение. Вы выделили текст в программе, затем открыли другую программу и выделили какой-нибудь текст в ней. После этого, выделение текста в первой программе автоматически снимется, а текст который вы выделили последним, попадет в буфер выбора.

Копирование и вставка в терминале

В терминале для копирования и вставки не работают стандартные сочетания Ctrl+V, Ctrl+C. Это связано с тем, что исторически Ctrl+C это сочетание клавиш для прерывания текущего процесса. Поэтому, для копирования и вставки при работе в терминале используются сочетания Ctrl+Insert и Shift+Insert соответственно. В Gnome терминале и, наверное, во многих других также работают сочетания Shift+Ctrl+C и Shift+Ctrl+V. Они же указаны в главном меню программы в разделе Правка.

Также в терминале работают сочетания клавиш Ctrl+U, чтобы вырезать текст; и Ctrl+Y для вставки текста. Сочетание Ctrl+U работает особенным образом — в буфер копируется вся текущая строка, введенная в терминале, независимо от того, выбрали вы какой-нибудь текст мышкой или нет, а сама строка пропадает с экрана.

Читайте также: