OMG, jaki jest problem z przypisaniem kombinacji osoby takiej jak w przypadku powielania linii ??? Zwykłem Eclipse. A Ctrl + D służy do usuwania linii. Dlaczego jest to tak skomplikowane w VS?
W Visual Studio 2017 (w wersji 15.6 i późniejszych)
Ctrl + D
W Visual Studio 2017 (wcześniejszych niż 15.6)
(edycja) Ta funkcja jest teraz wbudowana w VS2017: Ctrl+ E, Vduplikuje linię, jeśli nic nie jest zaznaczone, lub duplikuje zaznaczenie. Możesz przypisać go do innej kombinacji klawiszy lub znaleźć w menu:
Przed VS2017, wbudowana metoda przy użyciu schowka
Jak wspomniano @cand, możesz po prostu zrobić Ctrl+ C; Ctrl+ V.
Ctrl+ Cskopiuje linię, jeśli nic nie zostanie wybrane.
Rozwiązanie makro (przed VS2017)
Jeśli chcesz zaimplementować bardziej kompletne rozwiązanie, być może w celu utworzenia prostszego skrótu klawiaturowego lub nie chcesz modyfikować schowka, zapoznaj się z tym przewodnikiem:
Imports System
Imports EnvDTE
Imports EnvDTE80
Imports System.Diagnostics
PublicModule DuplicateLastLineModule
Sub DuplicateLine()Dim line AsString
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
EndSubEndModule
Aby utworzyć makro, po prostu przejdź do eksploratora makr („Narzędzia-> Makra-> Eksplorator makr” lub Alt+ F8) i skopiuj wklej kod w nowym module. Teraz po prostu przypisz do niego skrót klawiaturowy:
przejdź do Narzędzia-> Opcje ...
w obszarze Środowisko kliknij Klawiatura
w polu tekstowym „Pokaż polecenia zawierające” wpisz „duplikuj” (zgodnie z nazwą nadaną modułowi).
powinieneś teraz zobaczyć makro na poniższej liście
wybierz „Edytor tekstu” z listy „Użyj nowego skrótu w”
ustaw fokus w polu tekstowym „Naciśnij klawisze skrótu” i naciśnij kombinację na klawiaturze, której chcesz użyć ( Ctrl+ Shift+ Dw moim przypadku)
naciśnij przycisk „Przypisz”
skrót powinien być teraz widoczny w polu tekstowym „Skróty do wybranych poleceń”
Właśnie próbowałem, a to ciekawe, że powtarza się jakieś dodatkowe znaki, gdy nie jest „blok kodu po stronie serwera” z krótkimi znacznikami, tak: <div>Profile.UserName: <%=Profile.UserName %></div>- po powielając tę linię za pomocą tego makra, staje się, co następuje: <div>Profile.UserName: <%=Profile.UserName %></div> %></div>. Jak widać ostatnia część jest „powtarzana”. Jeśli nie ma w nim bloków kodu po stronie serwera, działa OK. Czy znasz to obejście? Nawiasem mówiąc, kolejną interesującą rzeczą, której doświadczyłem, jest to, że to makro jest stosunkowo „wolne”, czego się nie spodziewałem ... :)
Po lutym 2014 makra są wyłączone ze względów bezpieczeństwa. Przewiń w dół i zobacz odpowiedź MasterHD na obejście tego problemu, aby metoda Waela działała nawet po aktualizacji zabezpieczeń.
Dlaczego, u licha, tak trudno jest wdrożyć zduplikowane działanie lub przypisanie klawiszy, które większość innych redaktorów robi bardzo skutecznie i intuicyjnie. : /
dlaczego jest to potrzebne. Skopiowałem coś na innej karcie, przechodzę do konkretnej linii na tej zakładce, powielam linię, a następnie używam <code> CTRL + V </code>, aby wkleić trochę kodu. W przeciwnym razie muszę przejść i ponownie skopiować inną część kodu. ..
Istnieje bezpłatne rozszerzenie, które możesz pobrać tutaj, które pozwala powielać linie bez zastępowania zawartości schowka.
Domyślnie jest powiązany z Alt+ D, ale możesz go zmienić na dowolne, przechodząc do Narzędzia-> Opcje-> Środowisko-> Klawiatura. Wpisz „Duplicate” w polu wyszukiwania i poszukaj „Edit.DuplicateSelection” i edytuj skrót do dowolnej pozycji. Wolę Ctrl+ Dbyć spójnym z innymi edytorami.
Matthew, musisz kliknąć TUTAJ i zainstalować rozszerzenie. Następnie musisz zamknąć studio wizualne i otworzyć je ponownie. Następnie musisz przejść do Narzędzia ==> Opcje ==> Środowisko ==> Klawiatura, a następnie musisz wpisać Duplikat i zobaczysz to. Następnie możesz nacisnąć F4, aby działał jak QEDIT lub cokolwiek chcesz, a życie będzie dobre.
To proste Ctrl+ C; Ctrl+ V, sprawdź ten
link . Tak długo, jak nie wybierzesz żadnego tekstu, spowoduje to zduplikowanie linii, na której znajduje się kursor po naciśnięciu Ctrl+ C.
Istnieje wiele okazji, w których nie chcesz przechodzić przez tablicę klipów, na przykład, jeśli chcesz powielić linię, a następnie zastąpić jej część zawartością zawartą w tablicy klipu.
Jasne, ale pytanie zadawało skrót, a nie ogólne rozwiązanie do edycji tekstu, więc myślę, że do prostych celów wystarczy (przynajmniej w moim przypadku).
Znalazłem tylko ten. Jednak nie jest tak źle - oczywiście łatwiej byłoby użyć ctrl + D, ale jeśli chcesz zduplikować 1 linię na 100 kopii, możesz to zrobić za pomocą ctrl + c (bez konieczności wybierania czegokolwiek, po prostu umieść wiersz polecenia nad żądaną linią ) + 100 razy Ctrl + v. To tylko jeden zestaw naciśnięć klawiszy więcej niż rozwiązanie Ctrl + D. Może to być bardziej problematyczne, jeśli chcesz wykonać bardziej skomplikowane powielanie.
@ Mason240 To była moja pierwsza reakcja na cytowany fragment przyjętej odpowiedzi, jednak dodatkowe informacje „Dopóki nie wybierzesz żadnego tekstu, spowoduje to zduplikowanie linii, nad którą znajduje się kursor ...” czyni to idealną rozwiązanie w moim przypadku.
Aby uzupełnić odpowiedź, wystarczy nacisnąć pełną kombinację dla pierwszego powielenia. Od drugiego, po prostu naciskaj Ctrl + V tyle razy, ile potrzebujesz, aby kontynuować replikację linii.
Jest to domyślny skrót, jeśli używasz schematu klawiatury Resharper 2.x lub IntelliJ IDEA. Resharper ma wybrać mapowanie klawiatury podczas instalacji. Schemat klawiatury „Visual Studio” jest jedną z opcji. Jeśli wybierzesz schemat klawiatury „Visual Studio”, wówczas Ctrl + D zostanie zamapowany na coś innego.
Zauważ, że działa to również, gdy zaznaczonych jest wiele linii, tzn. Możesz powielić całą wiązkę kodu, a nie tylko jedną linię. Minusem jest oczywiście to, że resharper nie jest darmowy (ale wydaje się, że świat .Net jest przyzwyczajony do tego bardziej niż świat Java, z którego pochodzę).
Oto makro oparte na makro w linku opublikowanym przez Waela, ale poprawione w następujących obszarach:
nieco krótszy
nieco szybciej
komentarze :)
zachowuje się dla linii zaczynających się od „///”
można cofnąć jednym cofnięciem
Imports System
Imports EnvDTE
Imports EnvDTE80
PublicModule Module1
Sub DuplicateLine()Dim sel As TextSelection = DTE.ActiveDocument.Selection
sel.StartOfLine(0)'' move to start
sel.EndOfLine(True)'' select to endDim line AsString= sel.Text
sel.EndOfLine(False)'' move to end
sel.Insert(ControlChars.NewLine + line, vsInsertFlags.vsInsertFlagsCollapseToEnd)EndSubEndModule
Po lutym 2014 makra są wyłączone ze względów bezpieczeństwa. Przewiń w dół i zobacz odpowiedź MasterHD na obejście, aby metoda Marka działała nawet po aktualizacji zabezpieczeń.
Dlaczego tak długo opracowano metody osiągnięcia czegoś tak prostego? Pobieranie i instalowanie rozszerzenia od Microsoft zajmuje mniej niż minutę. Strona mówi, że domyślnie powiąże go z ALT+ D, ale dla mnie powiązało go z CTRL+ Dautomatycznie w Visual Studio Community 2015 bez żadnych zmian.
Ten jest dla mnie najbardziej przydatny, ponieważ chciałem rozwiązania, które nie zastąpi tego, co miałem w schowku. To rozszerzenie było dokładnie tym, czego szukałem. I według autora rozszerzenia działa to obecnie dla Visual Studio 2012, 2013, 2015 i 2017.
To najlepsza jak dotąd odpowiedź; pozwoli ci nawet zduplikować pełny blok kodu - jeśli chcesz - po prostu wybierając wiele wierszy. Testowane w Visual Studio Code 1.7.2
Chociaż zdaję sobie sprawę, że nie jest to skrót klawiaturowy, pomyślałem, że dodam to, ponieważ nie wymaga użycia schowka i może pomóc niektórym ludziom.
Podświetl wiersz, który chcesz powielić. Naciśnij klawisz Control, kliknij podświetlony tekst myszką i przeciągnij do miejsca, do którego chcesz przejść. Skopiuje podświetlony tekst.
Osiąga ten sam wynik dzięki wbudowanej funkcjonalności! Pytanie dotyczyło tylko skrótu - niekoniecznie skrótu klawiaturowego! Byłoby jednak bardziej niesamowite, gdyby mysz nie musiała być zaangażowana.
Ponieważ nie mogę używać makr w programie Visual Studio 2013, znalazłem wtyczkę Visual Studio (korzystam z niej w 2012 i 2013 roku).
Duplikat zaznaczenia powiela zaznaczenia i całe linie - muszą być tylko częściowo zaznaczone. Standardowy skrót to ALT+ D.
Korzystam z makra, które opublikował Wael: Duplikat polecenia linii dla Visual Studio , ale przestało działać tydzień temu, zakładałem, że z powodu aktualizacji systemu Windows. I miałem rację, od lutego 2014 r. Makra zostały wyłączone w VS2010 (i najwyraźniej w 2008 r.).
Aby to naprawić, musisz odinstalować aktualizacje zabezpieczeń lub dodać jeden wiersz kodu do plików konfiguracyjnych, jak pokazano tutaj .
Na 64-bitowym komputerze z systemem Windows domyślne ścieżki do tych plików to:
Państwo musi uruchomić edytor tekstowy z prawami administratora lub nie będzie działać! Mamy nadzieję, że pomoże to każdemu, kto nagle ma pod spodem swoją funkcję makr.
Teraz przejdź do Narzędzia> Opcje> Klawiatura i wpisz „Duplikuj” w polu wyszukiwania (pełny ciąg poleceń to „Edit.DuplicateSelection”). Tutaj możesz powiązać go z dowolnym skrótem w taki sam sposób, jak w przypadku każdego innego polecenia.
Ctrl+ Dto nowy skrót wprowadzony w wersji VS 2017 w wersji 15.6, który wydaje się robić dokładnie to, co Ctrl+ E,V
Ctrl + D powieli linię, w której znajduje się kursor, i wstawi ją bezpośrednio pod linią, na której jest ustawiony fokus. Jeśli chcesz powielić określony zestaw kodu, po prostu wybierz część kodu, którą chcesz powielić, przed wywołaniem polecenia duplikowania kodu.
Moja historia: zacząłem pracować w nowej firmie, nigdy wcześniej nie korzystałem z Visual Studio. Jedna z pierwszych rzeczy - jak powielić linię. Po skonfigurowaniu makra ReSharper powiedział mi: czy chcesz zastąpić mój skrót, który brzmiał: „powielony tekst” :)
Używam linku aplikacji: AutoHotkey z poniższym kodem zapisanym w CommentDuplikateSaveClipboard.ahkpliku. Możesz edytować / usuwać skróty, to proste. Mam link do tego pliku "Shortcut to CommentDuplikateSaveClipboard.ahk"w AutostartWindows. Ten skrypt chroni Twój schowek. Jeśli jesteś bardziej ciekawy, dodaj skróty do skryptuableable / enable. Czasami używam bardzo imponujące Multi Clipboardskrypt do łatwego uchwytu z wielu clipszapisywane na dysku i korzystania z CTRL+ C, X, Vkopiować, wklejać, wycinać, następny, poprzedni, usuń ten, usuń wszystko.
Brak odpowiedzi, po prostu użyteczny dodatek: jako darmowy pomysł właśnie wymyśliłem (cóż ... ehm ... dostosowałem kod opublikowany przez Lolo) makro RemoveLineOrBlock. Cieszyć się!
Imports System
Imports EnvDTE
Imports EnvDTE80
Imports EnvDTE90
Imports EnvDTE90a
Imports EnvDTE100
Imports System.Diagnostics
PublicModule RemoveLineOrBlock
Sub RemoveLineOrBlock()Dim selection As TextSelection = DTE.ActiveDocument.Selection
Dim lineNumber AsIntegerDim line AsStringIf selection.IsEmpty Then
selection.StartOfLine(0)
selection.EndOfLine(True)ElseDim top AsInteger= selection.TopLine
Dim bottom AsInteger= selection.BottomLine
selection.MoveToDisplayColumn(top,0)
selection.StartOfLine(0)
selection.MoveToDisplayColumn(bottom,0,True)
selection.EndOfLine(True)EndIf
selection.LineDown(True)
selection.StartOfLine(vsStartOfLineOptions.vsStartOfLineOptionsFirstColumn,True)
selection.Delete()
selection.MoveToDisplayColumn(selection.BottomLine,0)
selection.StartOfLine(vsStartOfLineOptions.vsStartOfLineOptionsFirstText)EndSubEndModule
w VS2019, a także w VS2017 możesz wybrać Narzędzia-> Opcje-> Klawiatura i możesz wybrać w rozwijanym schemacie opcję Resharper (Visual Studio) , a otrzymasz mapowanie tak, jakbyś używał Resharper , w tym przypadku Ctrl+ Dzrobi lewę do powielenia linii. W każdym razie, na podstawie dokumentacji, powinno to być poza bramą w Visual Studio 2017 w wersji 15.8 lub nowszej
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.