gJ
Kombinacja to robi; z :help gJ
:
Połącz [zlicz] linie z co najmniej dwoma liniami. Nie wstawiaj ani nie usuwaj spacji.
Możesz powiązać go ponownie J
, jeśli chcesz zapisać naciśnięcie klawisza:
:nnoremap J gJ
Zauważ, że to nie usuwa żadnych spacji, więc jeśli bieżąca linia kończy się spacją lub następna linia zaczyna się od jednej lub więcej spacji, pozostaną one bez zmian .
Więc:
Hello
world
Staje się:
Hello world
My mogliśmy użyć Jx
w tym przypadku, to będzie Helloworld
, ale to nie będzie działać we wszystkich przypadkach; z pomocy:
Połącz podświetlone linie z co najmniej dwoma liniami. Usuń wcięcie i wstaw maksymalnie dwa spacje
[...]
Te polecenia, oprócz „gJ”, wstawiają jedną spację w miejsce, chyba że występują końcowe białe spacje lub następny wiersz zaczyna się od „)”.
Tak więc w niektórych przypadkach wstawiana jest więcej niż jedna spacja lub brak spacji. O ile widzę, nie ma łatwego sposobu na zmianę tego zachowania; Stworzyłem funkcję do modyfikacji, gJ
aby zawsze łączyć bez spacji:
" Like gJ, but always remove spaces
fun! JoinSpaceless()
execute 'normal gJ'
" Character under cursor is whitespace?
if matchstr(getline('.'), '\%' . col('.') . 'c.') =~ '\s'
" When remove it!
execute 'normal dw'
endif
endfun
" Map it to a key
nnoremap <Leader>J :call JoinSpaceless()<CR>
Zobacz również: :help J
,:help 'joinspaces'
Inną sztuczką, którą możesz wypróbować, jest zastąpienie. Czasami może to być przydatne.
Scenariusz: Usuń ostatni znak i dołącz do następnego wiersza:
Na przykład,
staje się:
źródło
Utwórz makro i użyj go ponownie:
qaJxq
Teraz odtwórz makro,
a
używając @agdziekolwiek chcesz połączyć dwie linie bez spacji.@@powtórzy poprzednie makro. Możesz więc przytrzymać, @aby połączyć wiele linii.
źródło
@a
Po co pisać, kiedy można pisaćJx
? Ta sama liczba naciśnięć klawiszy i SHIFT!3@a
aby połączyć 3 linie, podczas gdy wykonanie3Jx
spowoduje połączenie 3 linii ze spacjami, a następnie usunięcie spacji między drugą i trzecią linią, pozostawiając spacje między innymi liniami.Aby zawsze dołączać za pomocą jednej spacji:
Aby dołączyć bez spacji (usuwa spację + spację wiodącą):
źródło
Wybierz linie, które chcesz scalić, wprowadź polecenie Ex , wpisując dwukropek
:
w trybie normalnym. Następnie wpisz to polecenie:s/$\n\s*//gc
Całe polecenie powinno wyglądać podobnie:
:'<,'>s/$\n\s*//gc
Wyjaśnienie:
'<,'>
oznacza, że modyfikujemy tylko linie wybrane w trybie wizualnym./$\n\s*
jest wzorem wyrażenia regularnego . Szukamy dopasowania, które kończy$
się nowym znakiem linii,\n
a następnie ma nieokreśloną liczbę białych znaków*
.s/pattern//gc
to polecenie zastępujące, aby znaleźć każdy wzór i zastąpić go pustym znakiem po potwierdzeniu.źródło