Mam dwie linie w pliku tekstowym, jak poniżej:
S<Switch_ID>_F<File type>
_ID<ID number>_T<date+time>_O<Original File name>.DAT
Chcę dołączyć dwie linie do vi, jak poniżej:
S<Switch_ID>_F<File type>_ID<ID number>_T<date+time>_O<Original File name>.DAT
Druga linia została usunięta, a zawartość drugiej linii została dołączona do pierwszej.
Jak mogłem to zrobić używając trybu poleceń w vi?
GJ
invim
przeniesie się do ostatniej linii, a następnie spróbuje dołączyć do następnej linii, jedyne miejsce, w którym polecenie join nie ma sensu. Tak, wydało mi się to zabawne :-)Vi czy Vim?
W każdym razie, poniższe polecenie działa dla Vima w trybie „nocompatible”. To znaczy, jak przypuszczam, prawie czyste vi.
Jeśli chcesz to zrobić z normalnego polecenia, użyj
Za pomocą `` gJ '' łączysz wiersze tak, jak jest - bez dodawania lub usuwania białych znaków:
Wynik:
Z komendą 'J' będziesz miał:
Zwróć uwagę na odstępy między
type>
a_ID
.źródło
g/pattern/join
działa w VIM, ag/pattern/J
nie. Może pomóc niektórym przyszłym ludziom.To powinno wystarczyć:
J
źródło
:h J
powie Ci, jak wyłączyć tę funkcję.gJ
jeśli nie chcesz, abyW vi,
J
(to jest Shift+ J) lub:join
powinno robić, co chcesz, w większości. Zauważ, że dostosowują białe znaki. W szczególności w wielu przypadkach będziesz miał spację między dwoma połączonymi wierszami, a jeśli druga linia zostanie wcięta, to wcięcie zostanie usunięte przed połączeniem.W Vimie możesz także użyć
gJ
( G, a następnie Shift+ J) lub:join!
. Będą one łączyć linie bez dokonywania jakichkolwiek zmian w postaci białych znaków.W Vimie zobacz,
:help J
aby uzyskać więcej informacji.źródło
gJ
iJ
jest to, że oba zmieniają kursor na punkt łączenia, ale:join!
i:join
nie.Po prostu zamień „
\n
” na „”.W vi / Vim dla każdej linii w dokumencie:
Jeśli chcesz potwierdzić każdą wymianę:
źródło
Jeśli chcesz dołączyć do wybranych linii (jesteś w trybie wizualnym), po prostu naciśnij,
gJ
aby połączyć linie bez żadnych spacji.Jest to opisane bardziej szczegółowo na stronie vi / Vim Stack Exchange .
źródło
Naciśnij Shift+ 4(„$”) w pierwszym wierszu, a następnie Shift+j („J”).
Jeśli potrzebujesz pomocy, przejdź do vi, a następnie naciśnij F1.
źródło
W Vimie możesz również użyć
gJ
.ََ
źródło
Innym sposobem na połączenie dwóch linii bez umieszczania kursora w tej linii jest:
Tutaj 6 to numer linii, do której zostanie dołączona inna linia. Aby wyświetlić numer linii, użyj
:set nu
.Jeśli jesteśmy na kursorze w miejscu, w którym ma zostać dołączona następna linia, to:
W obu przypadkach nie potrzebujemy
g
polubień:s#\n##g
, ponieważ w jednej linii\n
istnieje tylko jeden .źródło
Shift+V
zaznaczyć wszystkie wiersze, które mają zostać połączone, z wyjątkiem ostatniego, a następnie:'<,'>s/\n/, /
w tym przykładzie łączyć wiersze z przecinkiem i spacją na końcu każdego. Zwróć uwagę, że gdy coś jest zaznaczone i piszemy:
w trybie normalnym,'<,'>
w wierszu poleceń pojawia się automatycznie.