Скажімо, у мене є такий дуже простий файл
a
b
c
d
e
і я вирішив, що хочу додавати порожні рядки після кожного рядка. Кілька різних методів одразу прискакують мені на думку. Ми можемо просто зробити це (і, таким чином, сприйняти невдачу). Ми можемо записати подібний макрос qqo<ESC>jq
і повторити його кілька разів.
Два інші методи мені здавались більш очевидними.
По-перше, я думав, що видаю :norm
команду o
в кожному рядку. Так я бігаю :%norm o
. Але насправді відбувається те, що ми отримуємо 5 порожніх рядків, за якими слідують нерозділені рядки, як зазначено вище. Я інтерпретую це так, що %norm
, vim, фактично приймає повідомлення про наступну звичайну команду в перших п'яти рядках цього п'яти рядкового файлу . o
Команда створює новий рядок і ВІМ є «німий» в тому сенсі , що він посилається на номер рядка , а не на самому ділі яким - або іншим ідентифікатором.
Ну, я збентежився. Звичайно. Я спробував кілька інших речей, щоб побачити, чи зможу я змусити описаний вище метод, але, на жаль, не зміг. З цікавості я спробував свій інший улюблений метод масового застосування. Це змусило мене спробувати :g/^/norm o
. На мій подив, це працює просто чудово! Отже, на мої очі, здається, що vim тут не "тупий" так само, як вище, і посилається на рядки більше ніж просто номер рядка.
Що саме відбувається?
:%s/$/\r/
або так::%s/\n/\r\r/
. Виведення полягає в тому, що нові рядки можуть бути узгоджені\n
, але повинні бути записані, як\r
у замінних значеннях.