Ярлык для дублирования строки в SQL Server Studio Management?

В Netbeans и Eclipse вы можете нажать CTRL + Shift + Down (я думаю, что это netbeans), и он будет дублировать строку кода. Возможно ли это в SQL Server Management Studio? Это работает с SQL Server 2008

Ответ 1

Я думаю, что вы можете нажать CTRL + C без какого-либо выделенного текста, а в буфере обмена вы получите полную строку после того, как этот штрих введите и вставьте строку.

Проверяю утром, работает ли она в MGM2008, я использую 2005.

Ответ 2

Я использую этот AutoHotKey script для репликации функции CTRL + D "дублирующаяся строка". Я используется для Visual Studio:

; make ctrl+d duplicate line in SQL
SetTitleMatchMode, 2
#IfWinActive, Microsoft SQL Server Management Studio
^d::    
    ; save clipboard
    SavedClipboard = %clipboard%
    Send {Home}
    Send +{End}
    Send ^c
    ClipWait
    Send {End}
    Send {Enter}
    Send ^v
    clipboard = %SavedClipboard%
    return

Ответ 3

Мне нравится @Matt Kemp AutoHotKey script решение, но вместо этого я использовал script:

; make ctrl+d duplicate line in SQL
SetTitleMatchMode, 2
#IfWinActive, Microsoft SQL Server Management Studio
^d::    
    ; save clipboard
    Send ^c
    ClipWait
    Send ^v
    Send ^v
    return

Ответ 4

Здесь моя версия скрипта Autohotkey, позволяющая CTRL + D дублировать текущую строку без изменения буфера обмена. Мое первое знакомство с этой горячей клавишей было в Notepad++, и оно выросло на мне. Обычный вариант использования - это изменение строки текста со значением в буфере обмена, но сначала я хочу сделать копию строки в качестве резервной копии, которую я могу закомментировать.

Этот ответ похож на ответ @Matt Kemp, но, как отмечено в комментариях, в том, что кажется простым сценарием, есть некоторая слабость.

Мой ответ имеет следующие отличия:

  • Он содержит задержки sleep которые дают более последовательные результаты.
  • Я настроил свой сценарий, чтобы он мог поддерживать группу приложений, таких как SSMS, VBA, OneNote, и даже веб-сайт по кодированию, такой как JSFiddle.
  • Курсор заканчивается в начале строки, а не в конце. Это полезно, если вы собираетесь комментировать дублированную строку.
  • Я оставил комментарии в своем сценарии, чтобы помочь отладить его и показать вам историю, над которой я играл.

Есть две нестабильные проблемы, которые я пытаюсь преодолеть, добавляя операторы sleep. Иногда, когда он сохраняет текущий буфер обмена в переменную, он фактически сохраняет текущую строку в переменную, что никогда не приводит к восстановлению исходного содержимого буфера обмена. В некоторых других случаях значение в буфере обмена вставляется на экран вместо дублирования текущей строки. Я взломал сценарий, чтобы добавить некоторые задержки, которые обычно дают мне результат, который я ищу. Это не так быстро, как хотелось бы, но я возьму небольшую задержку из-за противоречивых результатов.

Я использую 64-битную Windows 10 на компьютере i7.


SetTitleMatchMode, 2; Заголовок окна может содержать WinTitle в любом месте внутри, чтобы быть совпадением.

GroupAdd, ctrlD_group, Microsoft Visual Basic for Applications  ; VBA
GroupAdd, ctrlD_group, Microsoft SQL Server Management Studio   ; SSMS (AHK must be running as Admin for this to work)
GroupAdd, ctrlD_group, Microsoft Visual Studio                  ; Visual Studio
GroupAdd, ctrlD_group, ahk_exe notepad.exe                      ; Notepad
GroupAdd, ctrlD_group, ahk_class Framework::CFrame              ; OneNote
GroupAdd, ctrlD_group, ahk_class ENSingleNoteView               ; EverNote view
GroupAdd, ctrlD_group, JSFiddle                                 ; Website JSFiddle
GroupAdd, ctrlD_group, ahk_class OMain                          ; Access
GroupAdd, ctrlD_group, Advanced Editor                          ; Excel Power Query Advanced Editor 
GroupAdd, ctrlD_group, ahk_class XBasicDlgBox                   ; Alpha Anywhere - Edit Event dialog box
GroupAdd, ctrlD_group, [HTML Editor]                            ; Alpha Anywhere - HTML Editor
GroupAdd, ctrlD_group, [Code Editor]                            ; Alpha Anywhere - Code Editor


;=== Duplicate current line CTRL+D ===
; Applies to all application in the ctrlD_group
; Note that SetTitleMatchMode and GroupAdd have to be in the autoexecute section of the script (above first hotkey and/or return) 
#IfWinActive ahk_group ctrlD_group
^d::        ; CTRL+D
    ToolTip Duplicating current line...
    Temp:=ClipboardAll
    Clipboard = 
    SendInput {End}+{Home}
    Sleep, 50
    ;MsgBox,,, % "Selected text:" A_Tab gst() "'nClipboard:" A_Tab Clipboard
    SendInput ^c
    ClipWait, 1
    ;msgbox,,Before,% Clipboard ; This always shows the line to be duplicated even when the ^v pastes a different value.
    ;ClipWait, 2  ; This wasn't working consistently so I used Sleep instead.
    SendInput {End}{Enter}

; I tried to speed up the paste and  using ^v is faster but occasionally 
; would paste what was in the clipboard instead of the current row.  
; I decided to deal with it for now.  
; Removing SetKeyDelay, -1 may be the trick to having it work.

    ;SendRaw %Clipboard%  ; This works but is slow drawing on the screen.

    Sleep, 400
    SendInput, ^v{Home} ;paste plain text
    Sleep, 50   

    SendInput, {Home}
    Clipboard:=Temp     ; Restore the clipboard
    ;msgbox,,After,% Clipboard

    SoundBeep 300, 150 ; Let me know the ahk script is working and that the application CTRL+D has been overridden.
    ToolTip
Return
#IfWinActive

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

Ответ 5

Если вы не используете ярлык для результатов в сетке (который в настоящее время занимает CTRL + D), то вы можете обновить привязки клавиш в меню "Параметры".

  1. Перейдите в ИнструментыПараметрыСредаКлавиатура
  2. В разделе Показать команды, содержащие, найдите Edit.Duplicate

Keyboard section of Options dialog box in SSMS showing Edit.Duplicate

  1. Выберите поле "Сочетание клавиш" и нажмите CTRL + D
  2. Теперь ищите Query.ResultstoGrid
  3. Снимите оба ярлыка для CTRL + D.

Когда вы нажмете "ОК", чтобы выйти из меню "Параметры", вы обнаружите, что можете сразу же использовать привязку клавиш.