Почему Ctrl + V не вставляется в Bash (оболочка Linux)?

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

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

169 голосов | спросил Yasser Zamani 7 Mayam12 2012, 11:44:30

7 ответов


330

В дни физического терминалы , сеанс Общих буферов обмена не было, только несколько программ поддерживали внутреннюю копию /вставку - часто под названием «буферы» или «убить кольца» - и использовали различные различные нажатия клавиш. Например, оболочка bash использует Ctrl K или Ctrl U для "kill "(вырезать), Ctrl Y до" yank "(вставить); это происходит из редактора 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, поэтому явное действие copy /paste, вероятно, считалось не таким важным, как в Windows. Это означает, что нужно было выбрать различные сочетания клавиш - например, большинство современных терминальных программ, таких как терминал GNOME, используют Ctrl Shift C и Ctrl Shift V . (Если вы используете Xterm, те же ярлыки могут быть добавлены вручную с помощью XTerm * vt100 * translations Xresource. Rxvt не имеет такой опции.)

(Большинство наборов инструментов X11 также поддерживают ключи «копировать» и «вставлять» CUA, которые не конфликтуют с терминальными программами. К сожалению, реализации довольно противоречивы - Ctrl Ins копирует в «буфер обмена» в большинстве программ (GTK, Qt4, но игнорируется Xaw), однако Shift Ins вставляет из «основного выбора» в большинство программ GTK и Qt4, но из «буфера обмена» в Firefox и из теперь устаревших срезанных буферов в теперь устаревшем Xaw.)


Все, что сказано, некоторые терминалы или консоли (в частности, консоль Windows 10) do поддерживают эти ключи. Поскольку консоль Windows всегда имела отдельный режим «отметка /выбор», Ctrl C теперь также имеет два значения на основе контекста - в обычном режиме он отправляет прерывание, ввыберите режим, который он копирует в буфер обмена (например, Enter ).

В то же время инструменты командной строки Windows никогда не использовали Ctrl V для чего-либо, поэтому он должен был «вставить», не беспокоя много что-нибудь. Однако делать то же самое на Unix-подобных терминалах было бы более проблематичным.

ответил grawity 7 Maypm12 2012, 12:03:14
40

Используйте Ctrl Shift V для вставки.

Ctrl с другими символами обычно используется оболочкой для специальных функций.

ответил Akash 7 Mayam12 2012, 11:45:55
17

Вот ваши настройки скопирования общего назначения с популярными терминалами:

gnome-terminal (наиболее популярный в Linux)
Копировать : Ctrl Shift C
Вставить : Ctrl Shift V
Примечание : Select-to-copy и средний клик для вставки также работает, но он использует альтернативный буфер обмена.

PuTTY (самый популярный терминал в Windows)
Копировать : (выберите с помощью мыши, без взаимодействия с клавиатурой)
Вставить : Щелкните правой кнопкой мыши (или более надежно: shift Щелкните правой кнопкой мыши )
Примечание . Приложения, которые принимают ввод мыши (например, vim и links)) может украсть Щелкните правой кнопкой мыши - shift Щелкните правой кнопкой мыши всегда будет работать в любом приложении.

OSX Terminal
Копировать : Apple C
Вставить >: Apple V
Примечание. . Приложения, которые управляют мышью (например, vim и links) может переопределить то, что означает выбор текста, и в этом случае копия не будет работать так, как вы ожидаете. В этих случаях удерживайте Control , пока вы перетаскиваете мышь, чтобы выбрать. В настройках вашего терминала взаимодействие с приложениями отключено по умолчанию, поэтому большинство людей даже не знают об этом.

ответил tylerl 8 Mayam12 2012, 01:22:43
15

Это глубокая традиция, что ключ Ctrl вместе с буквой генерирует управляющие символы ASCII, полученные путем вычитания 64 из значения ASCII верхнего регистра. Этот расчет отображает Ctrl - A на 1 и т. Д. Например, Ctrl - I - это вкладка и Ctrl - J - строка перевода.

Подобных традиций для Ctrl - Shift нет. Ctrl - Shift - V не будет выдавать какой-либо конкретный символ.

Терминальные эмуляторы должны поддерживать традицию, прозрачно проходя через соглашение Ctrl , позволяя ему отображаться как символьный ввод для программ, которые управляются через это окно терминала. Программы на основе терминала управляют ключами команд. Например, Bash использует Ctrl - V в качестве команды, которая означает «принимать следующий символ буквально». Это позволяет вставить управляющий символ в командной строке. Если терминал крадет управляющие клавиши для собственного использования, такие команды становятся недоступными. Поэтому перехват Ctrl - V для мета-функции не может быть и речи (по крайней мере, в конфигурации по умолчанию).

Однако эмуляторы терминала могут перехватывать Ctrl - Shift - V , который не должен генерировать символ. Ctrl - Shift - V не является стандартом; это вещь Gnome Terminal (которая может быть в некоторых других терминалах).

На настольных компьютерах Unix на базе X соглашение состоит в том, что для копирования не требуется команда. Вы просто выбираете текст. И средняя кнопка вставляет этот текст в другое место. Вы обнаружите, что он работает в Xterm, Gnome Terminal и Firefox.

Ctrl - V - это соглашение Microsoft Windows, которое является имитацией Apple - V из Macintosh.

ответил Kaz 7 Maypm12 2012, 18:34:50
2

Мы можем использовать кнопку кнопки вставки для копирования и вставки (на старых клавиатурах она может отсутствовать)

Скопировать : Ctrl Вставить
Вставить : Ctrl Shift Вставить

ответил Bharat 8 Maypm15 2015, 16:42:05
2

Для меня самый простой способ скопировать пачку в оболочку:

Выберите нужный код, а затем запустите его, щелкнув среднюю клавишу

ответил Pedro Lobito 3 PM00000030000004831 2015, 15:57:48
1

вы также можете использовать среднюю кнопку мыши, если вы чувствуете себя ленивым и выбираете команду из текстового документа, сценария или веб-сайта или форума. как только вы выбрали намеченную команду, просто перейдите к своему терминалу и нажмите среднюю кнопку мыши. Я использую этот метод, поскольку я использую щенок linux, который, похоже, не поддерживает нормальное поведение правого клика и вставки. он работает в окне обработчика файлов, просто не в терминальном окне. не знаю почему, но я очень рад, что узнал о методе средней кнопки, очень удобно! ; -)

ответил m1cha3ll0w3 19 Maypm15 2015, 19:08:05

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132