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

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

типичный Shift+вставить не работает здесь.

21 ответов


Я лично использую немного 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 

да.. но неловко. ссылке

alt + пробел, e, k alt + пробел, e, p


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

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

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

QuickEdit

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

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

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

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

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

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

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

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

спасибо Пабло, именно то, что я искал! Однако, если я могу позволить себе немного улучшить ваш скрипт, я предлагаю заменить ваш макрос ^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. Спасибо hugov за это предложение!


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



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

enter image description here

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


самый простой метод-это просто скопировать текст, который вы хотите вставить в cmd, и открыть вкладку cmd goto "свойства"---> "опция" - - - -> проверьте (поставьте галочку) "режим quickEdit" и нажмите "ОК" .....теперь вы можете вставить любой текст из буфера обмена, выполнив щелкните правой кнопкой мыши от мыши ur.

спасибо..


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

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

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

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


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


мне потребовалось некоторое время, чтобы понять, почему ваш 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.

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

#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

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


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

enter image description here


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

./p, вызванный пробелом и заменяющий текст %c

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

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


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


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


довольно простое решение может быть


Если вы пользователь 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 на большинстве консолей. Сезон по вкусу.)

источник


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

удачи!


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

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

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

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