Сочетание клавиш для вставки содержимого буфера обмена в окно командной строки (Win XP) [закрыто]


303

Есть ли сочетание клавиш для вставки содержимого буфера обмена в окно командной строки в Windows XP (вместо использования правой кнопки мыши)?

Типичный Shift+ Insert, похоже, не работает здесь.


2
использовать console2. sourceforge.net/projects/console
Филипп

Сделайте себе одолжение, посмотрите ответ «clink» на этой странице. Ctrl-V и многое другое.
бумат

2
@pylover исправлен в 2015 году .
Франк Дернонкур

1
@pylover В противном случае для <10, вы можете использовать менеджер буфера обмена . (конечно, я согласен, что это нелепый cmd не имеет Ctrl + C на <10)
Франк Дернонкур

4
@pylover Позор Microsoft, в 2016 году мы должны использовать мышь для вставки в Bash, хотя в меню утверждается, что Ctrl + V вставляет.
Майкл

Ответы:


162

Я лично использую небольшой скрипт AutoHotkey для переназначения определенных функций клавиатуры, для окна консоли (CMD), которое я использую:

; Redefine only when the active window is a console window 
#IfWinActive ahk_class ConsoleWindowClass

; Close Command Window with Ctrl+w
$^w::
WinGetTitle sTitle
If (InStr(sTitle, "-")=0) { 
    Send EXIT{Enter}
} else {
    Send ^w
}

return 


; Ctrl+up / Down to scroll command window back and forward
^Up::
Send {WheelUp}
return

^Down::
Send {WheelDown}
return


; Paste in command window
^V::
; Spanish menu (Editar->Pegar, I suppose English version is the same, Edit->Paste)
Send !{Space}ep
return

#IfWinActive 

Этот материал мешает Cygwin, когда он работает внутри ConsoleWindow. Я был в восторге от этого совета, но, к сожалению, мне пришлось удалить его.
Пийо

2
@piyo: может быть, вы можете исключить консоль Cygwin по заголовку? Например: если в строке заголовка консоли указано «ConsoleWindow», вы можете добавить что-то вроде WinGetTitle sTitle \ n If (sTitle = "ConsoleWindow") {\ n return \ n} \ n ---
PabloG

Отличная идея. (+1) Да, это будет работать, если заголовки окон не меняются. Я чувствую, что у меня больше контроля над заголовком окна в Cygwin, поэтому, возможно, я могу добавить статический, но невидимый текст подсказки для фильтрации AHK.
Пийо

@piyo: Cygwin Mintty (без участия X) настолько приятнее для оболочки
Cygwin

1
HowToGeek предлагает «SendInput {Raw}% clipboard%» вместо «alt-space ep. Тогда вы избавитесь от мерцания, а также
Вегар Вестерлунд

428

Да .. но неловко Ссылка на сайт

alt+ Space, e, k<- для копирования и
alt+ Space, e, p<- для вставки.


18
Не совсем то, на что я надеялся, но, конечно, это работает. Некоторые дополнительные советы: Если вы установили ALT + SPACE на панель запуска вашего приложения (например, Launchy), используйте вместо нее ALT-SHIFT-SPACE. Если вы используете неанглийскую версию Windows, последние 2 клавиши, конечно, будут отличаться (например, B + E для вставки на немецком языке )
SME

4
Просто для объяснения выбора также: ALT + SPACE + E + K <- для копирования. и перемещайтесь вверх, вниз, влево, вправо со стрелками Shift + стрелка вправо <- для выбора текста ALT + ПРОБЕЛ + E + P <- для вставки.
Йордан Георгиев

6
к сложному, у меня не хватает пальцев, чтобы сделать эту работу
pylover

5
Я считаю этот ответ наиболее полезным и прямым к сути. Последовательность клавиш меня не шокирует, поскольку есть последовательности аккордов Emacs, которые намного хуже, чем эта. На самом деле, в контекстном меню сочетания клавиш Alt + Space достаточно, чтобы понять, что нажимать дальше, поскольку есть визуальная обратная связь (подчеркнутые символы).
acelent

2
Для французских окон: [Alt] + [Пробел], [m], [c] для копирования, [Alt] + [Пробел], [m], [o] для вставки
удаление

137

На самом деле не связано с программированием, но я нашел это в Google, здесь нет прямого сочетания клавиш , но он немного быстрее.

Чтобы включить или отключить режим QuickEdit:

  1. Откройте программу MS-DOS или командную строку.
  2. Щелкните правой кнопкой мыши строку заголовка и нажмите «Свойства».
  3. Выберите вкладку «Параметры».
  4. Установите или снимите флажок Режим QuickEdit.
  5. Нажмите ОК
  6. В диалоговом окне «Применить свойства к ярлыку» выберите «Применить свойства к текущему окну» только в том случае, если вы хотите изменить настройку QuickEdit только для этого сеанса этого окна, или выберите «Изменить ярлык, запускающий это окно, чтобы изменить настройку QuickEdit для всех будущих вызовов». командная строка или программа MS-DOS.

QuickEdit

Чтобы скопировать текст, когда QuickEdit включен:

  1. Нажмите и перетащите указатель мыши на нужный текст.
  2. Нажмите Enter (или щелкните правой кнопкой мыши в любом месте окна), чтобы скопировать текст в буфер обмена.

Чтобы вставить текст, когда QuickEdit включен:

  1. Щелкните правой кнопкой мыши в любом месте окна.

Чтобы скопировать текст, когда QuickEdit отключен:

  1. Щелкните правой кнопкой мыши строку заголовка, нажмите «Изменить» в меню и нажмите «Отметить».
  2. Перетащите мышью текст, который хотите скопировать.
  3. Нажмите Enter (или щелкните правой кнопкой мыши в любом месте окна), чтобы скопировать текст в буфер обмена.

Чтобы вставить текст, когда QuickEdit отключен:

  1. Щелкните правой кнопкой мыши строку заголовка, нажмите «Изменить» в меню и нажмите «Вставить».

14
мы говорим о сочетаниях клавиш.
pylover

11
Правый щелчок кажется мне довольно коротким
Джей Салливан

19
Перемещение руки с клавиатуры на мышь дисквалифицирует ее как «довольно короткую».
Росс Прессер,

Эй, это круто. Вот как я его использую: я создал ярлык на своем рабочем столе для cmd.exe, затем щелкнул правой кнопкой мыши по нему «Закрепить на панели задач» - затем удалил ярлык с рабочего стола ... затем я щелкнул правой кнопкой мыши по нему в Task Bat, затем снова щелкните правой кнопкой мыши, когда он показывает cmd, и выберите Свойства. Я вхожу в Advanced, затем говорю, чтобы он работал от имени администратора. Затем вернитесь назад и выберите вкладку параметров и включите QuickEdit, как вы описали здесь. И вуаля, тогда ВСЕГДА включено, чтобы вставка выполнялась путем щелчка правой кнопкой мыши на подсказке всякий раз, когда я использую черный значок CMD на панели задач.
SDsolar

35

Спасибо Пабло, именно то, что я искал! Однако, если я позволю себе немного улучшить ваш скрипт, я предлагаю заменить ваш макрос ^ V следующим:

; Use backslash instead of backtick (yes, I am a C++ programmer).
#EscapeChar \

; Paste in command window.
^V::
StringReplace clipboard2, clipboard, \r\n, \n, All
SendInput {Raw}%clipboard2%
return

Преимущество использования SendInput заключается в том, что

  • он не использует системное меню командной строки с пунктом меню «Alt + Space E P» для вставки (работает для английского и испанского языков, но не для всех языков).
  • это позволяет избежать мерзкого мерцания, возникающего при создании и уничтожении меню.

Обратите внимание, что важно включить «{Raw}» в команду SendInput на случай, если в буфере обмена будут «!», «+», «^» Или «#».

Обратите внимание, что он использует StringReplace для удаления лишних символов возврата каретки Windows. Спасибо Хугов за это предложение!


2
Хорошо, улучшения всегда приветствуются!
PabloG

1
превосходно! ответ по умолчанию мерцал всплывающее меню, которое раздражало
Евгений Бурмако

спасибо, это дает ctrl-vв консоли «родное» чувство
jettico

Когда я нажимаю, ctrl+vон вставляется правильно, но также начинает исполнять строку (как будто enterнажимается потом). Как я могу предотвратить это?
LoMaPh

18

Существует также отличный инструмент с открытым исходным кодом, называемый clink , который расширяет cmd многими функциями. Одним из них является возможность использовать Ctrl + V для вставки текста.


Большинство функций clink великолепны, но они нарушают одну полезную функцию IMO. Автозаполнение cmd.exe циклически перебирает файлы. clink's отображает список, когда несколько файлов начинаются с одного и того же имени. Для длинных имен файлов, начинающихся с одного и того же имени, cmd.exe имеет лучшее автозаполнение.
ChaimG

15

2
Они переместили этот параметр на вкладку параметров и включили его по умолчанию, поэтому экспериментальный больше не существует (кажется, что все находится внутри вкладки параметров, просто параметр opactiy находится на вкладке цветов). Так что он должен просто работать сейчас :)
Круто

8

Вот бесплатный инструмент, который сделает это в Windows. Я предпочитаю это сценарию, так как его легко настроить. Он работает как быстрое собственное приложение, работает на XP и выше, имеет параметры конфигурации, которые позволяют переназначать ключи копирования / вставки / выбора для командных окон:

введите описание изображения здесь

Плюс я знаю разработчиков.


4

Простейший метод - это просто скопировать текст, который вы хотите вставить, в cmd и открыть cmd, перейти к вкладке «Свойства» ---> «Параметр» ----> проверить (поставить галочку) «режим quickEdit» и нажать « хорошо "..... теперь вы можете вставить любой текст из буфера обмена, щелкнув правой кнопкой мыши.

Спасибо..


4

Спасибо, Пабло, за обращение к утилите AutoHotkey. Поскольку у меня установлен Launchy, использующий Alt+, Spaceмне пришлось изменить его, но добавить Shiftключ, как показано:

; Paste in command window
^V::
; Spanish menu (Editar->Pegar, I suppose English version is the same, Edit->Paste)
Send !+{Space}ep
return

3

Это не просто ярлык, а просто быстрый доступ к меню управления: Alt-space EP

Если вы можете использовать мышь, щелкните правой кнопкой мыши по окну cmd, когда я попробовал это сделать.


Да, щелчок правой кнопкой работает нормально, но это то, чего я пытаюсь избежать.
См,

Получается четыре нажатия клавиш, придающих руку мышке. Это решение также выигрывает, потому что оно готово к работе на любой машине.
Ник

3

Теоретически приложение в DOS Prompt имеет свой собственный буфер обмена и ярлыки. Для импорта текста из буфера обмена Windows это «лишнее». Однако вы можете использовать Alt-Space, чтобы открыть системное меню окна подсказок, затем нажмите E, P, чтобы выбрать Редактировать, Вставить меню. Тем не менее, MS может предоставить ярлык с помощью Win-ключа. Нет шансов быть использованным в приложении DOS.


1
Как примечание: когда вы видите cmd через RDP-соединение, это Alt-Del вместо Alt-Space.
Боу

2

Мне понадобилось немного времени, чтобы понять, почему ваш скрипт AutoHotkey не работает со мной:

; Use backslash instead of backtick (yes, I am a C++ programmer).
#EscapeChar \

; Paste in command window.
^V::
StringReplace clipboard2, clipboard, \r\n, \n, All
SendInput {Raw}%clipboard2%
return

На самом деле, это зависит от нажатия клавиш и, следовательно, от раскладки клавиатуры! Поэтому, когда вам, как и мне, не повезло иметь только клавиатуру AZERTY, ваше предложение просто не работает. И что еще хуже, я не нашел простого способа заменить метод SendInput или изменить его среду, чтобы это исправить. Например SendInput "1" просто не отправляет цифру 1.

Мне пришлось превратить каждого персонажа в его юникод, чтобы он работал на моем компьютере:

#EscapeChar \

; Paste in command window.
^V::
StringReplace clipboard2, clipboard, \r\n, \n, All
clipboard3 := ""
Loop {
    if (a_index>strlen(clipboard2))
     break 
    char_asc := Asc(SubStr(clipboard2, a_Index, 1))   
    if (char_asc > 127 and char_asc < 256)
     add_zero := "0"
    else
     add_zero := "" 
    clipboard3 :=  clipboard3  . "{Asc " .  add_zero . char_asc . "}"
}
SendInput %clipboard3%
return

Не очень просто ...


2

Если вы используете менеджер буфера обмена Ditto (с открытым исходным кодом, бесплатно), вы можете просто использовать ярлык для вставки из Ditto, и он вставит буфер обмена в CMD для вас.

введите описание изображения здесь


1

Вы можете попробовать использовать Texter и создать что-то вроде:

./p, запускается пробелом и заменяет текст на% c

Я только что проверил, и он отлично работает. Единственный недостаток - использовать редкую последовательность, так как Texter не может ограничить это только cmd.

Вероятно, есть другие утилиты такого рода, которые могли бы работать, и даже AutoHotKey , на котором построен Texter, мог бы сделать это лучше, но Texter прост :-)


1

Более простой способ - использовать windows powershell вместо cmd. он отлично работает с текстом.


1

Недавно я обнаружил, что в командной строке есть поддержка контекстного меню с помощью щелчка правой кнопкой мыши. Вы можете найти более подробную информацию здесь: http://www.askdavetaylor.com/copy_paste_within_microsoft_windows_command_prompt.html


1
По вопросу: вместо использования правой кнопки мыши
Симон Лещке


1

Если вы пользователь Cygwin, вы можете добавить следующее в файл ~ / .bashrc:

stty lnext ^q stop undef start undef

И следующее в вашем файле ~ / .inputrc:

"\C-v": paste-from-clipboard
"\C-C": copy-to-clipboard

Перезагрузите терминал Cygwin.

(Обратите внимание, что я использовал прописные буквы C для копирования, так как CTRL + c назначается функции break на большинстве консолей. Сезон по вкусу.)

Источник


1

Вместо «щелчка правой кнопкой мыши» .... начните сеанс (когда вы находитесь в окне командной строки), нажав Alt / SpaceBar. Это откроет меню окна командной строки, и вы увидите знакомые, подчеркнутые сочетания клавиш, как в Windows GUI.

Удачи!


1

Я следовал за шагами @ PabloG следующим образом

  1. Гото http://www.autohotkey.com/ - скачать AutoHotkey
  2. следуйте простым шагам установки
  3. после установки создайте новый файл * .ahk следующим образом: щелкните правой кнопкой мыши по рабочему столу> new> Autohotkey Script> giveAnyFileName.ahk.
  4. щелкните правой кнопкой мыши на этом файле> Изменить
  5. Скопируйте и вставьте скрипт autohotkey, данный @PabloG в ответе.
  6. сохранить и закрыть
  7. дважды щелкните по файлу для запуска
  8. Готово, теперь вы должны иметь возможность использовать Ctrl+ vдля вставки в командной строке

-4

В командной строке VISTA: щелкните значок системы. В меню выберите «По умолчанию». На вкладке «Параметры» в группе «Параметры» у меня выбраны «Режим быстрого редактирования», «Режим вставки» и «Автозаполнение». Я думаю, что «Режим быстрого редактирования» это то, что заставляет это работать.

Чтобы вставить то, что находится в буфере обмена в точке вставки: щелкните правой кнопкой мыши. Копирование из окна команд Выберите, удерживая левую кнопку мыши и перетаскивая указатель на то, что вы хотите скопировать. После выбора щелкните правой кнопкой мыши. Чтобы вставить в точку вставки, снова щелкните правой кнопкой мыши.


8
Какую часть «вместо использования правой кнопки мыши» вы не понимаете;)
reiniero
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.