У меня есть две строки в текстовом файле, как показано ниже:
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?
GJ
invim
переместится на последнюю строку, а затем попытается присоединить ее к следующей строке, единственное место, где команда объединения не имеет смысла. Да, я нашел это забавным :-)Ви или Вим?
В любом случае, следующая команда работает для Vim в режиме 'nocompatible'. То есть, я полагаю, почти чистый vi.
Если вы хотите сделать это из обычного использования команды
С 'gJ' вы объединяете строки как есть - без добавления или удаления пробелов:
Результат:
С помощью команды «J» вы получите:
Отметьте пробел между
type>
и_ID
.источник
g/pattern/join
работает в VIM, покаg/pattern/J
нет. Может помочь некоторым будущим людям.Это должно сделать это:
J
источник
:h J
вы узнаете, как отключить эту функцию.gJ
если вы не хотите, чтобы vim добавлял пробел при соединении строкВ vi
J
(это Shift+ J) или:join
следует делать то, что вы хотите, по большей части. Обратите внимание, что они корректируют пробелы.В частности, во многих случаях вы получите пробел между двумя соединенными строками, и если вторая строка имеет отступ, отступ перед удалением будет удален.В Vim вы также можете использовать
gJ
( G, затем Shift+ J) или:join!
. Они будут объединять строки без каких-либо корректировок пробелов.В Vim, смотрите
:help J
для получения дополнительной информации.источник
gJ
иJ
заключается в том, что оба меняют курсор на точку соединения, но:join!
и:join
не делают.Просто замените "
\n
" на "".В vi / Vim для каждой строки в документе:
Если вы хотите подтвердить каждую замену:
источник
Если вы хотите объединить выбранные строки (вы находитесь в визуальном режиме), просто нажмите,
gJ
чтобы объединить свои строки без пробелов.Более подробно это описано на сайте vi / Vim Stack Exchange .
источник
Нажмите Shift+ 4("$") в первой строке, затем Shift+ j("J").
А если вам нужна помощь, зайдите в vi, а затем нажмите F1.
источник
В Vim вы также можете использовать
gJ
.источник
Другой способ объединения двух строк без наведения курсора на эту строку:
Здесь 6 - номер строки, к которой будет присоединена другая строка. Для отображения номера строки используйте
:set nu
.Если мы находимся на курсоре, где должна быть соединена следующая строка, то:
В обоих случаях нам не нужно
g
подобное:s#\n##g
, потому что на одной строке\n
существует только одна .источник
Shift+V
чтобы выбрать все строки, которые нужно соединить, кроме последней, а затем:'<,'>s/\n/, /
в этом примере объединять строки, помещая запятую и пробел в конце каждой. Обратите внимание, что когда что-то выбрано и мы набираем текст:
в обычном режиме, оно'<,'>
появляется в командной строке автоматически.