Jak sprawić, by Notepad ++ usuwał wiersze tak jak Eclipse?

74

Eclipse ma skrót klawiaturowy, który usuwa bieżący wiersz (jeśli nic nie jest zaznaczone) lub wszystkie wiersze, które są częścią aktualnie zaznaczonego tekstu: Ctrl+ D.

Czy istnieje sposób, aby Ctrl+ Dzrobić to samo w Notepad ++?

Najlepsze, co mogłem zrobić, to zmienić mapkę skrótu do Scintilli SCI_LINE_DELETE, ale to usuwa tylko jedną linię na raz, nawet jeśli zaznaczenie obejmuje wiele linii.

Matt Ball
źródło

Odpowiedzi:

93

Ctrl+ Shift+ Losiągnie ten sam efekt.

Ctrl+ Lusunie wiersz, ale także zatrzyma go w schowku, zastępując zawartość schowka.

Nie jestem pewien, czy możesz zmapować Ctrl + D, aby zrobić to samo, czy nie. Tak naprawdę nie pomieszałem mapowań klawiatury w Notepad ++, ponieważ są one bardzo podobne do tych z Visual Studio

Anthony Shaw
źródło
14
Znakomity! Teraz muszę tylko znaleźć to, na co Ctrl+Ljest mapowane ... edytować aha, to jest mapowane na SCI_LINECUT. To było dosłownie następne polecenie Scintilli poniżej SCI_LINE_DELETE.
Matt Ball
26
Pamiętaj, że Ctrl+Lwycina linię (skopiuj ją do schowka). Aby faktycznie usunąć linię Ctrl+Shift+L, spowoduje to usunięcie wybranych linii bez nadpisywania schowka.
Rosdi
1
@ RØŠÐÎ SCI_LINEDELETEjest Ctrl+Shift+Lmapowany na. Próbowałem tego, ale usunął tylko (bez kopiowania do schowka) pierwszą z wybranych linii, podobnie jak OP. Czy coś brakuje?
jinglesthula 21.04.16
4
Dlaczego nie ma tego w menuEdit > Line Operations
aliopi,
20

Musiałem zmapować Ctrl+ Ddo obu SCI_LINEDELETE i SCI_LINECUTaby działało jak Eclipse. Mam nadzieję, że to jest pomocne.

Musisz także wyłączyć lub ponownie powiązać, SCI_SELECTIONDUPLICATEaby nie było konfliktu na Ctrl+ D.
Aby wyłączyć skrót, podświetl go, kliknij Modifyustaw DropDownList na None, kliknij Applynajpierw, a następnie Okay.

alex
źródło
1
Dlaczego oba były wymagane?
Jonathan Benn
1
Kiedy odwzorowuję ten sam skrót na oba, wszystko, co się dzieje, przełącza się z usuwania tylko pierwszej linii wybranych linii na usuwanie tylko linii, na której znajdował się kursor. (Użyłem Ctrl + Shift + D, więc nie musiałem się martwić o powielone wiązanie wyboru.)
jinglesthula 21.04.16
14

Makro jest tutaj dobrym wyborem. Chociaż makro, które trochę wymyśliłem (można zauważyć, że może to być ćwierć sekundy opóźnienia między trafieniem CTRL-D a liniami usuwanymi przy dużych zaznaczeniach), działa wspaniale zarówno w przypadku wyboru jednej linii, jak i wielu linii i obejmuje różne trudne sprawy.

Moje makro to:

CTRL + J - jeśli wybrano wiele linii, są one łączone w jedną linię
HOME - zwykły przycisk HOME. Przesuwa kursor na początek linii (lub początek połączonej linii)
SHIFT + END - wybiera linię do końca, zaczynając od pozycji kursora
CTRL + SHIFT + L - usuwa całą linię

Ten zestaw działań obejmuje wszystkie możliwe scenariusze usuwania linii, które napotkałem do tej pory podczas intensywnego używania notatnika ++.

Jan Domozilov
źródło
Wiem, że jestem spóźniony o kilka lat, ale czy to makro nie działałoby tak samo dobrze z samym DELETE zamiast CTRL + SHIFT + L jako ostatnim poleceniem? Jeśli dobrze cię rozumiem, zaznaczyłeś już cały tekst, który chcesz usunąć, za pomocą pierwszych trzech poleceń.
Bjarte Aune Olsen
9

W Notepad ++ znajduje się skrót do usuwania linii: Ctrl+ Shift+ .., Lale spowoduje to usunięcie tylko jednej linii.

Nawet jeśli wybrano kilka linii, spowoduje to usunięcie tylko linii, w której spoczywa kursor, a nie linii podświetlonych.

Tak więc, najprostszy sposób na usunięcie serii wybranych linii, musisz zarejestrować makro za pomocą następujących kombinacji skrótów:

Ctrl+J

śledzony przez

Ctrl+ Shift+L

To najpierw JOINwybrane linie, a następnie DELETEcała linia.

Jest to lepsze niż używanie kombinacji CUTi DELETEpodejścia, jak wspomniano powyżej (co próbowałem), ponieważ w niektórych przypadkach spowoduje to również usunięcie niewybranych linii.

Otwarty technolog
źródło
4

Jako makropolecenie alternatywne do odpowiedzi @Jana Domozilova wykonałem następujące kroki (używając Notepad ++ v6.5.1 (UNICODE)):

  1. W menu Ustawienia wybierz Shortcut Mapper.
  2. Na karcie Menu główne ustaw Join Lines(linia 26) na Ctrl+Alt+D.
  3. Kliknij kartę poleceń Scintilla .
  4. Ustaw SCI_LINEDELETE(linia 90) na Ctrl+D.
  5. Zamknij okno.

Pozwala to wykonać pożądane zachowanie z niewielką modyfikacją. Zaznacz tekst, uruchom polecenie Połącz linie Ctrl+Alt+D, zwolnij tylko Altklawisz i naciśnij Dponownie, aby usunąć tekst.

skia.heliou
źródło
0

Innym prostszym sposobem jest użycie backspaceprzycisku po zaznaczeniu, który zastąpi zaznaczoną linię backspace.

Hitesh Wadhwani
źródło
-1

Możesz użyć CTRL + DELETE, aby usunąć całą zawartość linii. Następnie wystarczy ponownie użyć przycisku DELETE, aby usunąć nowy wiersz. Jeśli to ci nie wystarczy, możesz utworzyć makro, aby wykonać obie czynności.

Ponieważ wydaje się, że przestał działać w najnowszej wersji, zalecam stosowanie podejścia Makro dla całego problemu. Przejdź do Macro, „Start Recording”, następnie naciśnij „Home”, „Shift” + „END”, „DELETE”, „DELETE”, a następnie przejdź do Macro i zatrzymaj makro. Następnie przejdź do Zapisz bieżące zarejestrowane makro ”i wybierz nazwę oraz skrót (np. CTRL + DEL). To ponownie włącza skrót do linii usuwania.

private_meta
źródło
Ctrl+Deletenie usuwa dla mnie wierszy w Notepad ++ (nie zmieniłem mapowania żadnych kluczy innych niż Ctrl+D).
Matt Ball
Z jakiej wersji Notepad ++ korzystasz? Działa na Notepad ++ 5.8.2 pod Win7
private_meta
5.8.7 (najnowsza wersja) na Win7 x64. Miałeś na myśli Ctrl+Backspace? (też nie działa dla mnie)
Matt Ball
Ach, właśnie przetestowałem to z 5.8.7 i to też nie działało, pozwól mi zobaczyć
private_meta
Zaktualizowałem swoją odpowiedź
private_meta
-1

CTRL + SHIFT + DELDETE działa dla mnie świetnie, aby usunąć całą pojedynczą linię.

Zuzu
źródło
2
OP chce usunąć wszystkie wiersze, które są częścią aktualnie zaznaczonego tekstu . Twój skrót usuwa tylko pierwszy wiersz zaznaczenia.
nixda