Verknüpfungen / Snippets zum Auswählen eines Codeblocks

8

Ich verwende SQL Server Management Studio 2016 unter Windows 10. Ich habe es satt, die Tasten Umschalt / Strg + Auf / Ab / Rechts / Links zu verwenden, um den Code auszuwählen, den ich ausführen möchte. Ich frage mich, ob es Verknüpfungen / Schnipsel gibt, um einen Codeblock auszuwählen, der durch Leerzeilen von anderem Code getrennt ist.

Hier ist ein Codebeispiel:

select *
from tab1

select *
from tab2

select *
from tab3

Angenommen, mein Cursor befindet sich im mittleren Block und wie kann der mittlere Block am besten ausgewählt werden?

Jason
quelle
1
JetBrains DataGrip (Strg + Eingabetaste). Günstig auch. Dunkle Benutzeroberfläche auch.
Nelz

Antworten:

4

Ich bin nicht mit Red-Gate verbunden, aber ich möchte darauf hinweisen, dass, wenn Sie Shift-F5 drücken und eine neue Kopie von SQL Prompt besitzen, die Abfrage, auf der sich Ihr Cursor befindet, grün markiert und ausgeführt wird .

Es hat mir wirklich viele Tastenanschläge erspart.

Henrik Staun Poulsen
quelle
Vielen Dank für Ihre Antwort! Ich habe versucht, SQL prompty und es war unglaublich! Ich werde nach dem Test darüber nachdenken, es zu kaufen!
Jason
1
Beachten Sie, dass der Code nicht ausgewählt wird, da Sie diese Methode nicht zum Kopieren des ausgeführten Codeblocks verwenden können.
Thomas Rushton
4

Mit Autohotkey konnte ich eine Lösung zur Auswahl eines Codeblocks entwickeln. Hier ist das Skript, das ich habe:

!b::

send ^f

sendraw ^\r$

send {F3}

send +{F3}

send {Esc}

send {down}

send ^{=}

return

Durch Drücken von Alt + B wird dieses Skript aufgerufen, und das Skript wählt den Codeblock aus, in dem sich der Cursor befindet. Beachten Sie, dass der Codeblock durch Leerzeilen und den Codeblock von anderen Codeblöcken getrennt werden muss kann keine Leerzeichen in sich haben.

Die wichtigsten Schritte des About-Skripts sind

  • Verwenden Sie den regulären Ausdruck "^ \ r $", um die Leerzeilen über und unter dem Cursor zu suchen

  • Bewegen Sie den Cursor nacheinander auf diese beiden Leerzeilen

  • Verwenden Sie Strg + =, um den Codeblock zwischen diesen beiden Leerzeilen auszuwählen.

Beachten Sie, dass! / ^ / + Alt / Strg / Shift separat sind.

Jason
quelle
Ich wusste nicht, dass Sie dies mit AutoHotKey tun können. Viel weniger teuer als SQL Prompt. Vielen Dank für die Veröffentlichung.
Henrik Staun Poulsen
3

Eine Möglichkeit, Codeblöcke in SSMS schnell auszuwählen, besteht darin, den Code mithilfe der -Schaltfläche neben dem führenden Schlüsselwort in einer SQL-Anweisung (z. B. SELECT, UPDATE, DELETE, WITH usw.) zu minimieren. Markieren Sie dann diese Zeile und drücken Sie F5, um sie auszuführen.

Geben Sie hier die Bildbeschreibung ein

Abhängig von Ihrer SSMS-Version (in diesem Fall werden offensichtlich neuere Versionen bevorzugt) gibt es auch einige Tastaturkürzel, mit denen Sie einen Abschnitt reduzieren / erweitern können. Der von Simon Hellings 'früherer Antwort bereitgestellte Tastenkürzel spielt auf bereits festgelegte Hotkeys an, aber ich kann nicht bestätigen, dass sie tatsächlich funktionieren. Sie können jedoch einige benutzerdefinierte Hotkeys festlegen, um dies wie folgt zu tun:

  1. Die Funktionen, für die wir Hotkeys festlegen möchten, finden Sie unter Edit-> OutliningMenüoptionen: Geben Sie hier die Bildbeschreibung ein

  2. Navigieren Sie zum Festlegen der Hotkeys zu Tools-> Options...-> Environment-> Keyboard-> Keyboard. Geben Sie Outlinin das Feld Show-Befehle ein, die Folgendes enthalten : . Weisen Sie dann eine neue Tastenkombination für Edit.ToggleAllOutliningund zu Edit.ToggleOutliningExpansionund drücken Sie Assign: Geben Sie hier die Bildbeschreibung ein

  3. Überprüfen Sie nun die Verknüpfungen, die nach dem Drücken von OK verwendet wurden, und Ihre Tastenkombinationen sollten wie erwartet funktionieren. Wie Sie sehen können, habe ich meine CTRL+ALT+Left Arrowund zugewiesen CTRL+ALT+Right Arrow, aber Sie können verwenden, was Sie wollen: Geben Sie hier die Bildbeschreibung ein

Wenn dies nicht funktioniert, müssen Sie möglicherweise zu einem anderen SQL-Client wechseln. Die gewünschte Funktionalität ähnelt der Ausführung eines Oracle PL / SQL-Blocks über CTRL + ENTEROracle SQL Developer. Sie können Oracle SQL Developer verwenden, um mithilfe von JDBC-Treibern von Drittanbieter-Datenbanken ( Ref. ) Eine Verbindung zu SQL Server herzustellen. Ich empfehle dies jedoch nicht.

John Eisbrener
quelle
Ja, dies allein ist Grund genug, Toad zu installieren und F9 zu verwenden. Toad hat jedoch seine eigenen Macken.
Crokusek
Danke für deine Antwort! Wie kann ich den Baumknoten ohne Maus falten?
Jason
@ Jason - Ich habe meine Antwort mit den Tastaturkürzeln aktualisiert. Sie benötigen eine neuere Version von SSMS, da diese Funktionalität nicht bei allen Versionen verfügbar war, wie durch den von mir angegebenen URL-Link angegeben.
John Eisbrener
@ JohnEisbrener, danke für deine Hilfe und ich werde sie überprüfen!
Jason
@ JohnEisbrener, ich habe versucht, die von Ihnen vorgeschlagene neue Tastenkombination zu testen, und keine davon funktioniert für mich. Ich verwende die neueste Version von SSMS, nämlich Version 13.0.16106.4. Haben Sie sie jemals selbst getestet?
Jason
2

Verwenden Sie die Tasten up/ down/ right/ leftüberhaupt nicht, um den auszuführenden Code auszuwählen.

Angenommen, eine Computermaus kann verwendet werden, gehen Sie folgendermaßen vor:

  1. Bewegen Sie den Cursor mit der Maus Ihres Computers auf das erste Zeichen, das eingefügt werden soll.
  2. Weiter Halten Sie die CtrlTaste gedrückt und halten Sie sie gedrückt. Bewegen Sie dann die Maus, um das letzte Zeichen aufzunehmen, das aufgenommen werden soll.
  3. Halten Sie die CtrlTaste weiterhin gedrückt und drücken Sie die ETaste, um den markierten Text auszuführen.

Wenn Sie den gerade ausgeführten Code löschen möchten, sollten Sie die CtrlTaste weiterhin gedrückt halten und dann die DeleteTaste drücken.

Ich nehme an, es ist möglich, dass jemand ein Tool erstellt hat, um dies automatisch zu tun.

RLF
quelle
Danke für deine Antwort! Ich weiß, wie man Strg / Umschalt mit einer Maus verwendet, um Code auszuwählen, und finde, dass dies im Vergleich zu Shortkeys / Snippets etwas langsam ist. Kennen Sie Shortkeys / Snippets, mit denen Code automatisch ausgewählt werden kann?
Jason
4
@RLF, ich werde Ihre Antwort mit einer Gegenstimme für erfolgreiches Trolling belohnen (absichtlich oder nicht, spielt keine Rolle.)
Daniel Hutmacher
1

Ich denke nicht, dass dies möglich ist. Die vollständige Liste der sofort einsatzbereiten Standardverknüpfungen finden Sie hier . Möglicherweise können Sie etwas über das Menü Extras -> Optionen anpassen

Simon Hellings
quelle
Danke für deine Antwort! Wenn Shortkeys nicht möglich sind, sind Ihnen dafür Ausschnitte bekannt?
Jason
Nicht, dass ich daran denken könnte
Simon Hellings