Как присоединиться к двум строкам в vi?

У меня есть две строки в текстовом файле, как показано ниже:

S<Switch_ID>_F<File type>
_ID<ID number>_T<date+time>_O<Original File name>.DAT

Я хочу добавить две строки в vi, как показано ниже:

S<Switch_ID>_F<File type>_ID<ID number>_T<date+time>_O<Original File name>.DAT

Вторая строка была удалена, а содержимое второй строки было добавлено к первой строке.

Как мне это сделать, используя командный режим в vi?

Ответ 1

Shift + J удаляет символ изменения строки из текущей строки, поэтому, нажимая "J" в любом месте линии, вы можете комбинировать текущую строку и следующую строку так, как вы хотите.

Ответ 2

Vi или Vim?

В любом случае, следующая команда работает для Vim в режиме "nocompatible". То есть, я полагаю, почти чистый vi.

:join!

Если вы хотите сделать это из обычной команды, используйте

gJ

С 'gJ' вы присоединяете строки как есть - без добавления или удаления пробелов:

S<Switch_ID>_F<File type>
_ID<ID number>_T<date+time>_O<Original File name>.DAT

Результат:

S<Switch_ID>_F<File type>_ID<ID number>_T<date+time>_O<Original File name>.DAT

С командой "J" у вас будет:

S<Switch_ID>_F<File type> _ID<ID number>_T<date+time>_O<Original File name>.DAT

Отметьте пробел между type> и _ID.

Ответ 3

Это должно сделать это:

J

Ответ 4

В vi J (это Shift + J) или :join должны делать то, что вы хотите, по большей части. Обратите внимание, что они корректируют пробелы. В частности, во многих случаях вы получите пробел между двумя соединенными строками, и если вторая строка имеет отступ, то отступ будет удален до присоединения.

В Vim вы также можете использовать gJ (G, затем Shift + J) или :join!. Они объединят строки без каких-либо корректировок пробелов.

В Vim см. :help J для получения дополнительной информации.

Ответ 5

Просто замените "\n" на "".

В vi/Vim для каждой строки документа:

%s/>\n_/>_/g

Если вы хотите подтвердить каждую замену:

%s/>\n_/>_/gc

Ответ 6

Если вы хотите присоединиться к выделенным линиям (вы находитесь в визуальном режиме), просто нажмите gJ, чтобы присоединиться к вашим линиям без пробелов.

Это описано более подробно на сайте обмена vi/Vim Stack.

Ответ 7

Нажмите Shift + 4 ( "$" ) в первой строке, затем Shift + j ( "J" ).

И если вам нужна помощь, перейдите в vi, а затем нажмите F1.

Ответ 8

В Vim вы также можете использовать gJ.

ََ

Ответ 9

Другой способ соединения двух строк без размещения курсора на этой строке:

:6,6s#\n##

Здесь 6 - номер строки, к которой будет присоединяться другая строка. Чтобы отобразить номер строки, используйте :set nu.

Если мы находимся на курсоре, где должна быть соединена следующая строка, то:

:s#\n##

В обоих случаях нам не нужен g как :s#\n##g, потому что на одной строке существует только один \n.