Czy istnieje sposób na usunięcie nowej linii na końcu linii w Vimie, aby kolejna linia została dołączona do bieżącej linii?
Na przykład:
Evaluator<T>():
_bestPos(){
}
Chciałbym umieścić to wszystko w jednym wierszu bez kopiowania wierszy i wklejania ich do poprzedniego. Wygląda na to, że powinienem umieć kursor na końcu każdej linii, nacisnąć klawisz i sprawić, aby następna linia przeskoczyła na tę samą, na której znajduje się kursor.
Wynik końcowy:
Evaluator<T>(): _bestPos(){ }
Czy jest to możliwe w Vimie?
Odpowiedzi:
Jeśli jesteś w pierwszej linii, naciśnięcie (wielkie litery) Jpołączy tę linię i następną linię razem, usuwając nową linię. Możesz również połączyć to z liczbą, więc naciśnięcie
3J
połączy wszystkie 3 linie razem.źródło
gJ
uniknie dodawania spacji, które Vim może dodać, używającJ
.V
(Visual Line Mode), a następnie naciśnijJ
lubgJ
:join
i:join!
że dołączy do linii utrzymując pozycję kursora, a nie trzymać każdą przestrzeń w miejscu łączenia. możesz również zmapować go w następujący sposób:nnoremap <Leader>j :joing<cr>
innoremap <Leader>gj :join!<cr>
.Na pewno. Vim rozpoznaje znak \ n jako nowy wiersz, więc możesz po prostu wyszukać i zamienić. W trybie poleceń wpisz:
źródło
V
blok -isual i zastąpić go.W górnej linii w trybie normalnym naciśnij Shift+ j.
Możesz także dodać liczbę, aby
3J
w górnym wierszu połączyć wszystkie te linie razem.źródło
Jak wspomniano w innych odpowiedziach, (duże litery)
J
i wyszukiwanie + zamień na\n
mogą być ogólnie używane do usuwania znaków nowego wiersza i łączenia wierszy.Ale aby pozbyć się końcowego znaku nowej linii w ostatniej linii , musisz to zrobić w Vimie:
źródło
:set noendofline
nie działa bezbinary
?J
usuwa dodatkowe odstępy wiodące (jeśli występują), łącząc linie pojedynczą spacją. (Z pewnymi wyjątkami: po/[.!?]$/
można wstawić dwie spacje; wcześniej/^\s*)/
nie wstawiono spacji).Jeśli nie chcesz tego zachowania,
gJ
po prostu usuwasz nowy wiersz i nie robi nic sprytnego ze spacjami.źródło
Wszystkie poniższe zakładają, że kursor znajduje się w pierwszym wierszu:
Używając normalnych mapowań:
3Shift+J
Korzystanie z poleceń Ex:
Który jest skrótem od
Które można również wprowadzić za pomocą następującego skrótu:
3:j
Jeszcze krótsze polecenie Ex:
źródło
:j!3
w twoim .vimrc pozwoli ci używać
backspace
idelete
on\n
(nowa linia) w trybie wstawiania.pozwoli ci usunąć poprzedni LF w trybie normalnym za pomocą
X
(gdy w kolumnie 1).źródło
Prawdopodobnie zależy to od twoich ustawień, ale zwykle robię to z
A<delete>
Gdzie
A
jest dołączony na końcu linii. Prawdopodobnie wymaganocompatible
trybu :)źródło
kursor w pierwszym wierszu
TERAZ, w TRYBIE NORMALNYM
lub
: normalny V2jJ
źródło
Po prostu nacisnąłbym A (dołącz do końca linii, wprowadza cię w tryb wstawiania) na linii, w której chcesz usunąć nową linię, a następnie naciśnij klawisz Delete.
źródło
:help 'backspace'
jeśli nie masz nic przeciwko użyciu innych narzędzi powłoki,
źródło
ggVGJ
.Problem polega na tym, że wielokrotności char 0A (\ n), które są niewidoczne, mogą się kumulować. Załóżmy, że chcesz posprzątać od linii 100 do końca:
Wpisywanie ESC i: (dowódca terminala)
W skrypcie vim:
Objaśnienie: od 110 do końca wyszukaj linie rozpoczynające się od nowej linii (są puste) i usuń je
źródło