Visual Studio: сокращенный ключ: дублирующая линия - PullRequest
381 голосов
/ 17 февраля 2010

Есть ли ярлык для Дублирующая строка команда в Visual Studio 2008?

Некоторые похожие примеры:

Ответы [ 28 ]

348 голосов
/ 17 февраля 2010

В Visual Studio 2017

(редактировать) Эта функция теперь встроена в VS2017: Ctrl + E , V дублирует строку, если ничего не выбрано, или дублирует выделение , Вы можете назначить его другой комбинации клавиш или найти в меню:

Duplicate line in VS2017

См. эту ссылку для получения дополнительной информации.

Pre VS2017, встроенный метод с использованием буфера обмена

Как уже упоминалось @cand, вы можете просто сделать Ctrl + C ; Ctrl + V .

Ctrl + C скопирует строку, если ничего не выбрано.

Макро-решение (до VS2017)

Если вы хотите реализовать более полное решение, возможно, создать более простое сочетание клавиш или не хотите использовать буфер обмена, см. Это руководство:

Команда дублирования строки для Visual Studio

Visual Basic:

Imports System
Imports EnvDTE
Imports EnvDTE80
Imports System.Diagnostics

Public Module DuplicateLastLineModule
    Sub DuplicateLine()
        Dim line As String
        DTE.ActiveDocument.Selection.StartOfLine(0)
        DTE.ActiveDocument.Selection.EndOfLine(True)
        line = DTE.ActiveDocument.Selection.Text
        DTE.ActiveDocument.Selection.EndOfLine()
        DTE.ActiveDocument.Selection.NewLine()
        DTE.ActiveDocument.Selection.StartOfLine(0)
        DTE.ActiveDocument.Selection.Text = line
    End Sub
End Module

Чтобы создать макрос, просто перейдите в проводник макросов («Инструменты-> Макросы-> Макро-проводник» или Alt + F8 ) и скопируйте и вставьте код в новый модуль. Теперь просто назначьте ему сочетание клавиш:

  1. зайдите в Инструменты-> Параметры ...
  2. в разделе Среда, нажмите Клавиатура
  3. в текстовом поле «Показать команды, содержащие» введите «дубликаты» (в соответствии с именем, которое вы дали модулю).
  4. теперь вы должны увидеть макрос в списке ниже
  5. выберите «Текстовый редактор» из списка «Использовать новый ярлык в»
  6. установите фокус в текстовом поле «Нажать клавиши быстрого доступа» и нажмите комбинацию на клавиатуре, которую хотите использовать для этого ( Ctrl + Shift + D в мой случай)
  7. нажать кнопку «Назначить»
  8. теперь вы должны увидеть ярлык в текстовом поле «Ярлыки для выбранной команды»
  9. нажмите кнопку ОК

И это все. Наслаждайтесь!

127 голосов
/ 15 марта 2013

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

По умолчанию он связан с Alt + D , но вы можете изменить его на что угодно, перейдя в Инструменты-> Параметры-> Среда-> Клавиатура. Введите «Duplicate» в поле поиска и найдите «Edit.DuplicateSelection» и отредактируйте ярлык к тому, что вы хотите. Я предпочитаю, чтобы Ctrl + D соответствовал другим редакторам.

88 голосов
/ 25 мая 2010

Все просто Ctrl + C ; Ctrl + V , отметьте это ссылка . Пока вы не выделите текст, это будет дублировать строку, на которой находится курсор, когда вы нажимаете Ctrl + C .

71 голосов
/ 15 мая 2014

Ctrl + C + V у меня работает на VS2012 без расширения.

30 голосов
/ 24 октября 2012

Ctrl + D у меня работает в VS2012 с Resharper. Это горячая клавиша Решарпера.

27 голосов
/ 02 июля 2015

В Visual Studio 2013 вы можете использовать Ctrl + C + V

21 голосов
/ 25 марта 2011

Вот макрос, основанный на том, который указан в ссылке, опубликованной Wael, но улучшен в следующих областях:

  • немного короче
  • немного быстрее
  • комментариев:)
  • ведет себя для строк, начинающихся с "///"
  • можно отменить с помощью одной отмены
Imports System
Imports EnvDTE
Imports EnvDTE80

Public Module Module1

    Sub DuplicateLine()
        Dim sel As TextSelection = DTE.ActiveDocument.Selection
        sel.StartOfLine(0) '' move to start
        sel.EndOfLine(True) '' select to end
        Dim line As String = sel.Text
        sel.EndOfLine(False) '' move to end
        sel.Insert(ControlChars.NewLine + line, vsInsertFlags.vsInsertFlagsCollapseToEnd)
    End Sub

End Module
11 голосов
/ 09 июля 2010

Если вам нравится дублирование линий (или блоков) в стиле затмения с использованием CTRL + ALT + UP или CTRL + UP + DOWN , ниже я выкладываю макросы для этой цели:

Imports System
Imports EnvDTE
Imports EnvDTE80
Imports System.Diagnostics

Public Module DuplicateLineModule
    Sub DuplicateLineDown()
        Dim selection As TextSelection = DTE.ActiveDocument.Selection
        Dim lineNumber As Integer
        Dim line As String

        If selection.IsEmpty Then
            selection.StartOfLine(0)
            selection.EndOfLine(True)
        Else
            Dim top As Integer = selection.TopLine
            Dim bottom As Integer = selection.BottomLine

            selection.MoveToDisplayColumn(top, 0)
            selection.StartOfLine(0)

            selection.MoveToDisplayColumn(bottom, 0, True)
            selection.EndOfLine(True)
        End If

        lineNumber = selection.TopLine
        line = selection.Text

        selection.MoveToDisplayColumn(selection.BottomLine, 0)
        selection.EndOfLine()
        selection.Insert(vbNewLine & line)
    End Sub
    Sub DuplicateLineUp()
        Dim selection As TextSelection = DTE.ActiveDocument.Selection
        Dim lineNumber As Integer
        Dim line As String

        If selection.IsEmpty Then
            selection.StartOfLine(0)
            selection.EndOfLine(True)
        Else
            Dim top As Integer = selection.TopLine
            Dim bottom As Integer = selection.BottomLine

            selection.MoveToDisplayColumn(top, 0)
            selection.StartOfLine(0)

            selection.MoveToDisplayColumn(bottom, 0, True)
            selection.EndOfLine(True)
        End If

        lineNumber = selection.BottomLine
        line = selection.Text

        selection.MoveToDisplayColumn(selection.BottomLine, 0)
        selection.Insert(vbNewLine & line)
        selection.MoveToDisplayColumn(lineNumber, 0)
    End Sub
End Module
10 голосов
/ 04 ноября 2016

Почему так много давно разработанных методов, чтобы сделать что-то такое простое?Загрузка и установка расширения от Microsoft занимает менее минуты.На странице написано, что он будет привязан к ALT + D по умолчанию, но для меня он привязан к CTRL + D в Visual Studio Community 2015 без каких-либо изменений.

Вот ссылка для загрузки расширения с Microsoft.com.

8 голосов
/ 13 сентября 2016

В визуальный студийный код ( WebMatrix ):

Копировать линии вниз: Сдвиг + Alt + вниз

Копировать линии вверх: Сдвиг + Alt + up

Удалить строки: Ctrl + Shift + k

...