Załóżmy, że mam wiele kursorów wzdłuż kilku linii, takich jak to:
foo|
barr|
foobar|
baz|
Jak mogę automatycznie przesunąć białe znaki na końcu każdej linii do płaskiej krawędzi, tak jak to ?:
foo |
barr |
foobar |
baz |
(W tych przykładach |
ma być moim kursorem).
Kiedy właśnie Tablub Spacez początkowej aranżacji, otrzymujesz:
foo |
barr |
foobar |
baz |
To przydatne, ale nie tego szukam. Szukam jakiegoś skrótu klawiaturowego, który pozwoli mi wciąć od postrzępionej wstawki z wieloma kursorami do prostej kolumny.
text-editing
sublime-text
GladstoneKeep
źródło
źródło
Tab
na końcu każdej linii powoduje wcięcie obszarpanej wstawki z wieloma kursorami do prostej kolumny, ale nie można osiągnąć tego samego efektu za pomocą wyrażenia regularnego. Szukałem spacji końcowych:\s*$
zastąpiłem je znakiem tabulacji:\t
- ale\t
nie osiąga tego samego efektu, co naciśnięcieTab
ręczne.Odpowiedzi:
Możesz użyć Sublime Alignment wbond
Może to wymagać dodania tego do pliku ustawień (Preferencje> Ustawienia pakietu> Wyrównanie> Ustawienia użytkownika:
Zamień „|” z dowolną postacią, którą chcesz wyrównać.
Edycja: Jak się dowiedział mtoast, dodanie
"\n"
do „alignment_chars” daje pożądany efekt.Dodanie nowego znaku wiersza do „alignment_space_chars” prawdopodobnie nie jest potrzebne i może usunąć tekst. Jednak przy moich ograniczonych testach nie zauważyłem różnicy.Przytrzymaj controli kliknij na końcu każdej linii. Następnie naciśnij klawisze skrótu wyrównania (w systemie Linux domyślnym ustawieniem jest ctrl+ alt+ a). Przekonasz się, że kursory są ustawione w jednej linii z najdalszą pozycją kursora.
Edycja2: Dodanie nowego wiersza
"alignment_space_chars"
spowoduje usunięcie tekstu, jeśli podświetlisz blok tekstu, a Sublime Alignment nie może znaleźć czegoś innego do wyrównywania na linii (jak znak równości).Ponadto, jeśli Sublime Alignment nie może znaleźć czegoś innego do wyrównywania, dodanie nowego wiersza
"alignment_chars"
spowoduje wypełnienie końca linii spacjami (lub tabulatorami w zależności od ustawień), aby dopasować najdłuższą podświetloną linię.źródło
"\n"
(nowy wiersz) do mojego"alignment_chars"
i uzyskałem pożądany wynik. (Uwaga: nie dodałem go"alignment_space_chars"
, co spowodowało usunięcie wierszy.) Jeśli dodasz tę konkretną sugestię ("n"
) do swojej odpowiedzi, zaakceptuję.|
przed pojedynczym `\ 'Możesz to również zrobić bez zewnętrznego pakietu przy użyciu niewielkiego włamania, przy odrobinie większego wysiłku. Oto jak:
|
reprezentuje kursor w tych instrukcjach.Utwórz kursory we wszystkich pożądanych liniach, używając Ctrl+ Kliknij lub wybierając blok tekstu i naciskając Ctrl+ Shift+ L. ( dokumenty wyboru )
Dodaj dodatkowe spacje na końcu każdego słowa, dopóki każdy kursor nie znajdzie się w miejscu, w którym chcesz kolumnę, lub za nią (nie ma znaczenia, jak daleko minęła):
( opcjonalnie 1 ) Wpisz dowolny znak, a następnie spację; użyjmy
c
:Naciśnij, Homeaby kursory przechodziły na początek linii:
Naciskaj, → (right arrow) dopóki kursory nie znajdą się w kolumnie, w której chcesz:
Naciśnij Ctrl+ Shift+, →aby zaznaczyć wszystkie następujące białe znaki
c
, a następnie naciśnij Delete:( opcjonalnie 1 ) Naciśnij Deleteponownie, aby usunąć dodatkowy znak spacji dodany w opcjonalnym kroku.
1 Używamy
c
znaku, po którym następuje spacja tylko wtedy, gdy w liniach znajduje się dodatkowa treść, którą chcemy zachować. Bez tego Ctrl+ Shift+ →wybrałby pierwsze słowo dowolnej dodatkowej zawartości w liniach, co utrudniłoby usunięcie.źródło
ctrl+shift+right
nie traktuje wszystkich postaci konsekwentnie, więc może skończyć się wyborem więcej niż tylko białych znaków.Shift-End
Delete
i po prostu zadziałało. Czy to działa w niektórych przypadkach, ale w innych nie?c
w jednym wierszu jest przed końcem słowa w innym. To jest problem, który mam teraz. Niektóre wiersze nie zawierają wystarczającej liczby znaków, aby przewinąć w prawo, więc gdy to zrobisz, zostanie zawinięty do następnej linii, pozostawiając ten hack jako taki. To jest hack, a nie przydatny zamiennik.Dla tych, którzy chcą wcięcia na znaki inne niż
=
i|
, byłem w stanie zainstalować pakiet Alignment i zmodyfikować plik,Sublime Text > Preferences > Package Settings > Alignment > Settings - User
aby wyglądał następująco:Następnie wybrałem następujący kod:
i wciśnięty,
Command + Ctrl + A
aby wyrównać.Wszystko zostało przeniesione do lewej kolumny, w której
{create
tekst może znajdować się podczas wyrównywania.źródło