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