В Netbeans и Eclipse вы можете нажать CTRL + Shift + Down (я думаю, что это netbeans), и он будет дублировать строку кода. Возможно ли это в SQL Server Management Studio? Это работает с SQL Server 2008
Ярлык для дублирования строки в SQL Server Studio Management?
Ответ 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), то вы можете обновить привязки клавиш в меню "Параметры".
- Перейдите в Инструменты → Параметры → Среда → Клавиатура
- В разделе Показать команды, содержащие, найдите
Edit.Duplicate
- Выберите поле "Сочетание клавиш" и нажмите CTRL + D
- Теперь ищите
Query.ResultstoGrid
- Снимите оба ярлыка для CTRL + D.
Когда вы нажмете "ОК", чтобы выйти из меню "Параметры", вы обнаружите, что можете сразу же использовать привязку клавиш.