У меня есть две строки в текстовом файле как ниже:
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?
Shift + J удаляет символ изменения строки из текущей строки, поэтому, нажав "J" в любом месте строки, вы можете объединить текущую строку и следующую строку так, как вы хотите.
Vi или Vim?
В любом случае следующая команда работает для Vim в несовместимом режиме. То есть, я полагаю, почти чистый 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
.
Просто замените « \ n
» на «».
В vi / Vim для каждой строки в документе:
%s/>\n_/>_/g
Если вы хотите подтверждать каждую замена:
%s/>\n_/>_/gc
Нажмите Shift + 4 (" $ ") в первой строке, затем Shift + j (" J ").
Если вам нужна помощь, войдите в vi и нажмите F1 .
В vi, J
(это Shift + J ) или : join
должны делать то, что вы хотите, по большей части. Обратите внимание, что они корректируют пробелы. В частности, во многих случаях у вас будет пробел между двумя соединенными строками, и если вторая строка имеет отступ, этот отступ будет удален перед соединением.
В Vim вы также можете использовать gJ
( G , затем Shift + J ) или : присоединяйтесь!
. Они будут соединять строки без корректировки пробелов.
В Vim см. : help J
для получения дополнительной информации.