Как добавить строку в конец каждой строки в Vim?
Вопрос
я хочу добавить *
до конца каждой строки в Vim.
Я попробовал код, но безуспешно
:%s/\n/*\n/g
Решение
:%s/$/\*/g
должно сработать.Так следует :%s/$/*/g
как МистерВигглес правильно указывает.
Другие советы
Даже короче, чем команда :search:
:%norm A*
Вот что это значит:
% = for every line
norm = type the following commands
A* = append '*' to the end of current line
Также:
:g/$/norm A*
Также:
gg<Ctrl-v>G$A*<Esc>
Я думаю, что использование режима визуальной блокировки — лучший и более универсальный метод решения подобных проблем.Вот пример:
Это Первая линия.
Это второй.
Третий.
Чтобы вставить «Привет, мир». (пространство + буфер обмена) В конце каждой из этих линий:
- На символе в первой строке нажмите Ctrl-V (или Ctrl-Q, если Ctrl-V-вставка).
- Нажмите jj, чтобы расширить визуальный блок на три строки.
- Нажмите $, чтобы расширить визуальный блок до конца каждой строки.Нажмите A, затем пространство, затем введите Hello World.+ затем Esc.
Результат:
Это Первая линия.Привет, мир.
Это второй.Привет, мир.
Третий.Привет, мир.
(пример из http://vim.wikia.com/wiki/Inserting_text_in_multiple_lines)
Если вы хотите добавить Hello world в конце каждой строки:
:%s/$/HelloWorld/
Если вы хотите сделать это для определенного количества строк, скажем, от 20 до 30, используйте:
:20,30s/$/HelloWorld/
Если вы хотите сделать это в начале каждой строки, используйте:
:20,30s/^/HelloWorld/
...и добавить в начале каждой строки *,
%s/^/*/g
Вам действительно не нужно g
в конце.Итак, получается:
:%s/$/*
Или если вы просто хотите *
в конце, скажем, строк 14-18:
:14,18s/$/*
или
:14,18norm A*
Один из вариантов:
:g/$/s//*
Это найдет каждую привязку конца строки и заменит ее на *
.Я говорю «заменить», но на самом деле это скорее добавление, поскольку привязка — это особая вещь, а не обычный символ.Для получения дополнительной информации см. Степень g — примеры.
:%s/\n/*\r/g
Ваш первый вариант верен в любом другом месте, но Vim по какой-то причине должен иметь другую обработку новой строки.
%s/\s*$/\*/g
это поможет и обеспечит игнорирование начальных пробелов.