Jak wkleić tekst na końcu każdego wiersza? Sublime 2


161

Ciekawe, czy istnieje sposób na wklejenie tekstu na końcu każdej linii w Sublime 2? I odwrotnie, na początku każdego wiersza.

linia testowa pierwsza

linia testowa druga

linia testowa trzecia

linia testowa czwarta

...

Załóżmy, że w edytorze znajduje się 100 wierszy tekstu i chcesz wkleić cudzysłowy na początku i na końcu każdego wiersza.

Czy istnieje łatwy sposób na zrobienie tego lub wtyczka, o której ktoś by wiedział? Często oszczędzało mi to dużo czasu przy różnych projektach.

Dzięki.


4
Obecnie jest to drugie demo na stronie głównej ... sublimetext.com
TWiStErRob

Odpowiedzi:


28

Możesz użyć funkcji Wyszukaj i zamień z tym wyrażeniem regularnym, ^([\w\d\_\.\s\-]*)$aby znaleźć tekst, a zastąpiony tekst to "$1".


7
Niesamowite! Więc okazało się, że zadziałało dla mnie następujące rozwiązanie: Używanie wyrażenia regularnego: (?> \ X0D \ x0A? | [\ X0A- \ x0C \ x85 \ x {2028} \ x {2029}]) znajdzie koniec każdego wiersza. I używając wyrażenia regularnego: ^ [a-zA-z0-9! @ # $ ") (* &! + _-] znajdzie początek każdego wiersza (pod warunkiem, że wszystkie znaki są dodane do wyrażenia regularnego do wyszukania na początku każdego dzięki @yohann!
Tony H.

5
Jeśli robisz to za pomocą wyrażenia regularnego w potężnym edytorze, takim jak Vim lub ST2, tracisz wskazówkę. Po co degradować porządnego redaktora do sed?
sehe

Dziękuję za uratowanie 3 godzin mojego życia
F. Mayoral

572

Tak, Regex jest fajny, ale są inne alternatywy.

  • Wybierz wszystkie wiersze, które chcesz przedrostkiem lub sufiksem
  • Idź do menu Wybór -> Podziel na linie ( Cmd/ Ctrl+ Shift+ L)

Pozwala to na jednoczesną edycję wielu linii. Teraz możesz dodać * cudzysłowy (") lub cokolwiek * na początku i na końcu każdego wiersza.


36
Jest to o wiele łatwiejsze do zrobienia.
Yada

6
To znacznie lepsza odpowiedź. Możesz także użyć klawisza Shift (Windows / Linux) lub klawisza opcji (Mac) podczas wybierania regionu za pomocą myszy, aby uzyskać ten sam wynik.
dbn

5
Często zdarza się, że edytujesz wiele linii, jak opisano powyżej, ale potem chcesz połączyć je z powrotem w jedną linię. Skrót do łączenia wielu linii: ctrl / cmd + J
fionbio

3
To dobra odpowiedź, ale w przypadku bardzo dużej liczby linii może to być znacznie bardziej obciążające procesor niż użycie funkcji znajdź i zamień.
Ceilingfish,

2
Myślę, że to zasługuje na preferowaną odpowiedź
Michael Osofsky

79

Oto przepływ pracy, z którego korzystam cały czas, używając tylko klawiatury

  1. Ctrl/ Cmd+ AZaznacz wszystko
  2. Ctrl/ Cmd+ Shift+ LPodziel na linie
  3. ' Otocz każdą linię cudzysłowami

Zwróć uwagę, że to nie zadziała, jeśli zaznaczenie zawiera puste wiersze.


3
nie działa dla mnie w st2, krok 3 usunął wszystkie wiersze i zastąpił go "krok 3 powinien być Home" End"
andrej

@andrej - to brzmi jak błąd. Upewnij się, że używasz najnowszej wersji st2, a jeśli tak, zgłoś błąd na stronie sublimetext.userecho.com
dbn

1
@dbw z sublime text 2.0.1 build 2217. Opublikowany jako błąd na sublimetext.userecho.com/topic/184875-
andrej

@andrej Mogę odtworzyć twój problem, jeśli mam jakieś puste wiersze w zaznaczeniu
Patrick McDonald

52
  1. Wybierz wszystkie wiersze, do których chcesz dodać przedrostek lub przyrostek. (Ale jeśli chcesz dodać przedrostek lub sufiks tylko do określonych linii, możesz użyć ctrl+, Left mouse buttonaby utworzyć wiele kursorów).
  2. Wciśnij Ctrl+ Shift+ L.
  3. Naciśnij Homeklawisz i dodaj prefiks.
  4. Naciśnij Endklawisz i dodaj sufiks.

Uwaga, wyłącz zawijanie słów, w przeciwnym razie nie będzie działać poprawnie, jeśli twoje linie są dłuższe niż sublime.


2
to jest właściwa poprawka. klucz domowy i klawisz końcowy są kluczowe, aby to działało poprawnie
Phil

W Sublime Text 3 (dla komputerów Mac) klawisze Home i End nie działały. Jeśli masz ten problem, sprawdź: coderwall.com/p/upolqw/ ...
avance

Niezupełnie @Phil. Możesz także użyć Cmd + strzałka w lewo / w prawo do nawigacji. Myślę, że to samo zadziała również w oknach
Claud H

33

Powiedzmy, że masz te wiersze kodu:

test line one
test line two
test line three
test line four

Używając Wyszukaj i zamień Ctrl + Hz Regex, znajdźmy to: ^i zamień na ", będziemy mieli to:

"test line one
"test line two
"test line three
"test line four

Teraz przeszukajmy to: $i zamień na ", teraz będziemy mieli to:

"test line one"
"test line two"
"test line three"
"test line four"

działał naprawdę dobrze w wysublimowanym tekście 3, oszczędzając mnóstwo czasu
jamescampbell,

22

Użyj wyboru kolumny . Wybór kolumny jest jedną z unikalnych cech Sublime2; służy do wyświetlania wielu dopasowanych kursorów ( tutorial tutaj ). Aby uzyskać wiele kursorów, wykonaj jedną z następujących czynności:

Mysz:

  • Przytrzymaj klawisz Shift (Windows / Linux) lub klawisz opcji (Mac) podczas wybierania regionu za pomocą myszy.

  • Kliknięcie środkowym przyciskiem myszy (lub przewijanie) spowoduje również wybranie kolumny.

Klawiatura:

  • Wybierz żądany region.
  • Wpisz control+ shift+ L(Windows / Linux) lub command+ shift+ L(Mac)

Masz teraz wybrany wiele linii, więc mógł wpisać cudzysłów na początku i na końcu każdej linii. Lepiej byłoby skorzystać z możliwości Sublime i po prostu wpisać " . Kiedy to zrobisz, Sublime automatycznie cytuje wybrany tekst.

Wpisz, escaby wyjść z trybu wielu kursorów.


3
Możesz także uruchomić wybór kolumn, klikając środkowym przyciskiem i przeciągając.
Curtis Gibby,

2
Jest to najbardziej Sublime Text sposób rozwiązania problemu i wykorzystuje podstawową cechę Sublime Text. Ponieważ OP zapytał o Sublime Text w tytule, odpowiedź powinna być zaakceptowana.
Drybler
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.