Как использовать vim в командной строке, чтобы добавить текст в середину файла?

Как использовать vim в командной строке, чтобы добавить текст в середину файла?

Я пытаюсь написать команду примерно следующего содержания:

vim -c "XXXXXX" myFile

Вместо «XXXXX» я хочу предоставить vim несколько команд для добавления текста в произвольную точку файла, как путем указания точного номера строки, так и, в другом сценарии, путем поиска определенной строки и последующей вставки в строку выше.

То, что я пытаюсь сделать, это своего рода умное "добавление", где я могу добавлять строки к блоку кода или функции внутри скрипта. В конечном счете я стремлюсь получить скрипт установки, который пойдет и изменит, может быть, дюжину системных файлов.

В идеале он должен включать только один флаг -c и в идеале его должен быть понятен любому, кто понимает команды обычного режима. Изначально я думал о чем-то вроде: « "ggjjjiInsertingOnLine4:wq"Как только я смогу перевести его в обычный режим».

решение1

Диапазоны командной строки можно использовать для выбора определенной строки, которую необходимо отредактировать. Затем можно использовать шаблон замены для выполнения редактирования (добавления).

Например, чтобы добавить текст «привет» в начало строки 3:

vim -c "3 s/^/hi/" -c "wq" file.txt

Чтобы добавить текст «привет» в конец строки 3:

vim -c "3 s/$/hi/" -c "wq" file.txt

Чтобы найти больше вариантов и объяснений:

vim -c "help cmdline-range"

Еще несколько примеров

Чтобы найти строку поиска «привет» и добавить строку «все» в строку 3:

vim -c "3 s/\(hi\)/\1 everyone/" -c "wq" file.txt

Чтобы найти строку поиска «hi» и добавить строку «say» в начало строки 3:

vim -c "3 s/\(hi\)/say \1/" -c "wq" file.txt

Если номер строки неизвестен, то для добавления первых вхождений строки «hi» в каждой строке к «all»:

vim -c "1,$ s/\(hi\)/\1 all/" -c "wq" file.txt

Чтобы добавить все вхождения строки «hi» в каждой строке с помощью «all»:

vim -c "1,$ s/\(hi\)/\1 all/g" -c "wq" file.txt

Более подробную информацию о заменах можно найти здесь:

vim -c "help substitute"

Связанный контент