it-roy-ru.com

Visual Studio: сокращенный ключ: дублирующая линия

Есть ли ярлык для команды Duplicate Line в Visual Studio 2008?

Несколько похожих примеров:

  • в Notepad ++ я могу дублировать текущую строку с помощью: Ctrl+D
  • в EditPlusCtrl+J
  • in NetBeansCtrl+Shift+/
  • in EclipseCtrl+Alt+/
  • в Vi/Vimyyp
  • и т.п.
377
Posto

В Visual Studio 2017

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

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. нажмите кнопку ОК

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

345
Wael Dalloul

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

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

127
Ben

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

88
cand

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

71
nGoline

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

30
sawe

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

27
Vazgen Torosyan

Вот макрос, основанный на той, что содержится в ссылке, опубликованной 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
20
Mark Foreman

Если вам нравится дублирование линий (или блоков) в стиле Eclipse с помощью 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
11
Krzysztof

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

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

10
Daniel

В коде Visual Studio (WebMatrix):

Копировать линии вниз: Shift + Alt + down

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

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

8
mghhgm

Хотя я понимаю, что это не сочетание клавиш, я решил добавить это, поскольку оно не требует использования буфера обмена и может помочь некоторым людям.

Выделите строку, которую вы хотите продублировать. Нажмите клавишу управления, щелкните мышью выделенный текст и перетащите туда, куда вы хотите перейти. Это будет дублировать выделенный текст.

7
Warty

Поскольку я не могу использовать макросы в Visual Studio 2013, я обнаружил плагин для Visual Studio (я использую его в 2012 и 2013 годах). Duplicate Selection дублирует выделение и целые строки - их нужно только частично выбрать. Стандартный ярлык ALT + D,.

7
Lebewesen

Я не знаю, существует ли это в Visual Studio 2008, но в Visual Studio 2010+ вы можете легко сделать это:

Не выбирайте ничего, затем нажмите Ctrl + C А потом (ничего не делая) Ctrl + V

5
Alireza Noori

Я использовал макрос, который выложил Ваэль: Команда дублирования строки для Visual Studio , но она перестала работать неделю назад, я предположил, из-за обновления Windows . И я был прав, по состоянию на февраль 2014 года макросы были отключены в VS2010 (и, по-видимому, в 2008 году).

Чтобы это исправить, вам придется либо удалить обновления безопасности, либо добавить одну строку кода в файлы конфигурации, как показано here .

На 64-битной машине Windows пути по умолчанию к этим файлам:

  • C:\Program Files (x86)\Common Files\Microsoft Shared\VSA\9.0\VsaEnv\vsaenv10.exe.config
  • C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe.config

    ...
    <configuration>
        <runtime>
            <AllowDComReflection enabled="true"/>
            ...
    

    editor screenshot

Вы ДОЛЖНЫ запустить свой текстовый редактор с правами admin, иначе он не будет работать! Надеюсь, это поможет всем, у кого вдруг из-под них вырваны макрофункции.

4
MasterHD

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

3
user5460893

Просто наведите курсор мыши на строку, чтобы скопировать и сделать CTRL+C , после CTRL+V на той же линии. Работает как по волшебству :-)

3
David Constantine

В Visual studio 2017 и, возможно, другой версии Нет необходимости в макросе или расширении ,

  1. Перейти к Tools > Options > Environment > Keyboards
  2. Под Show commands containing: напишите Edit.Duplicate
  3. Поместите курсор на Press shortcut keys: и нажмите Ctrl + D и нажмите кнопку Assign
  4. нажмите OK, чтобы сохранить новое сочетание клавиш

enter image description here

2
ewwink

Для тех, кто все еще просматривает этот вопрос в Visual Studio после 2008 года, был добавлен настоящий Edit.Duplicate:

  • CTRL+EV
  • CTRL+D (VS 2017 15.6+)
2
icanfathom

Командой, которую вы хотите, является Edit.Duplicate. Это сопоставлено с CtrlECtrlV, Это не будет перезаписать ваш буфер обмена.

1
HaveSpacesuit

В Visual Studio 2010 вы копируете всю строку, с которой находится курсор CTRL + INSERT тогда вы можете использовать Ctrl + V или же SHIFT + INSERT вставить это.

1
Crackerjack

http://www.jetbrains.com/resharper/

Моя история: начал работать в новой компании, никогда раньше не пользовался Visual Studio. Одна из первых вещей - как продублировать строки. После настройки макроса ReSharper сказал мне: не хотите ли вы заменить мой ярлык: «дублирующий текст» :)

1
Michal Stefanow

VS 2017 его Ctrl + D или Ctrl + C; Ctrl + V они оба работают на меня.

1
Danyal Ahmed Chaudhry

Я использую ссылку приложения: AutoHotkey с кодом ниже, сохраненным в файле CommentDuplikateSaveClipboard.ahk. Вы можете редактировать/удалять ярлыки это легко.
У меня есть ссылка на этот файл "Shortcut to CommentDuplikateSaveClipboard.ahk" в Autostart в windows.
Этот скрипт защитит ваш буфер обмена.
Если вам более любопытно, вы бы добавили ярлыки в этот сценарий включения/включения.
Иногда я использую очень впечатляющий скрипт Multi Clipboard, чтобы легко обрабатывать многие clips, сохраненные на диске, и использовать с CTRL+C,X,V скопировать, вставить, вырезать, следующий, предыдущий, удалить это, удалить все.

;CommentDuplikateSaveClipboard.ahk

!c:: ; Alt+C === Duplicate Line
^d:: ; Ctrl+D
ClipSaved := ClipboardAll
Send, {END}{SHIFTDOWN}{HOME}{SHIFTUP}{CTRLDOWN}c{CTRLUP}{END}{ENTER}{CTRLDOWN}v{CTRLUP}{HOME}
Clipboard := ClipSaved
ClipSaved =
return

!x:: ; Alt+X === Comment Duplicate Line
ClipSaved := ClipboardAll
Send, {END}{SHIFTDOWN}{HOME}{SHIFTUP}{CTRLDOWN}c{CTRLUP}{LEFT}//{END}{ENTER}{CTRLDOWN}v{CTRLUP}{HOME}
Clipboard := ClipSaved
ClipSaved =
return

!z:: ; Alt+Z === Del uncomment  Line
ClipSaved := ClipboardAll
Send, {END}{SHIFTDOWN}{UP}{END}{SHIFTUP}{DEL}{HOME}{DEL}{DEL}
Clipboard := ClipSaved
ClipSaved =
return

!d:: ; Alt+D === Delete line
Send, {END}{SHIFTDOWN}{UP}{END}{SHIFTUP}{DEL}
return

!s:: ; Alt+S === Swap lines
ClipSaved := ClipboardAll
Send, {END}{SHIFTDOWN}{UP}{END}{SHIFTUP}{CTRLDOWN}x{CTRLUP}{UP}{END}{CTRLDOWN}v{CTRLUP}{HOME}
Clipboard := ClipSaved
ClipSaved =
return

!a:: ; Alt+A === Comment this line, uncomment above
Send, {END}{HOME}//{UP}{HOME}{DEL}{DEL}
return
1
MrHIDEn

для Visual Studio 2012, 2013, 2015, 2017 перейдите по ссылке и скачайте расширение

https://marketplace.visualstudio.com/items?itemName=ctlajoie.DuplicateSelection

Теперь перейдите в Инструменты> Параметры> Клавиатура и введите «Дублировать» в поле поиска (полная строка команды «Edit.DuplicateSelection»). Здесь вы можете привязать его к любому ярлыку так же, как для любой другой команды.

1
Kalyan Halder Raaz

Ctrl + D это новый ярлык, введенный в VS 2017 v15.6, который, кажется, делает именно то, что Ctrl + EV

Ctrl + D продублирует строку, в которой находится курсор, и вставит ее прямо под линией в фокусе. Если вы хотите продублировать определенный набор кода, просто выберите ту часть кода, которую вы хотите продублировать, прежде чем вызывать команду дублирования кода.

Это не повлияет на ваш буфер обмена

Источник

0
Kautsky Lozano

в VS2019 а также в VS2017 вы можете выбрать Инструменты-> Параметры-> Клавиатура и вы Вы можете выбрать в раскрывающемся меню Resharper (Visual Studio) , и вы получите отображение, как если бы вы использовали Resharper , в этом случае Ctrl + D сделает трюк для дублирования строки. В любом случае, основываясь на документации это должно быть за пределами Visual Studio 2017 версии 15.8 или больше

0
ddieppa

Не ответ, просто полезное дополнение: Как халява, я только что изобрел (хорошо ... эм ... откорректировал код, выложенный Lolo) макрос RemoveLineOrBlock. Наслаждайтесь!

Imports System
Imports EnvDTE
Imports EnvDTE80
Imports EnvDTE90
Imports EnvDTE90a
Imports EnvDTE100
Imports System.Diagnostics

Public Module RemoveLineOrBlock

    Sub RemoveLineOrBlock()
        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

        selection.LineDown(True)
        selection.StartOfLine(vsStartOfLineOptions.vsStartOfLineOptionsFirstColumn,True)

        selection.Delete()

        selection.MoveToDisplayColumn(selection.BottomLine, 0)
        selection.StartOfLine(vsStartOfLineOptions.vsStartOfLineOptionsFirstText)

    End Sub

End Module
0
Peter Perháč