У vim, інколи в мене є привід замінити перші кілька випадків матчу на лінії, але не кожен, хто хотів g
би. наприклад:
a a a a a
до
b b b a a
Я знаю, що міг би скористатися :s/a/b/[enter]:[up][enter]:[up][enter]
, але це досить нудно при трьох повторах, у мене є рядки з потенційно 10+ замінами.
Я спробував:
:s/a/b/3g
: vim поскаржився на слідів символів.:s/a/b/3
: змінює перше виникнення у цьому та наступних двох рядках.3:s/a/b
: те саме, що і попереднє.:s/a/b/g3
: змінює всі події в цьому та наступних двох рядках.:3s/a/b
: змінює перше виникнення у рядку 3.:/a/,3/a/s/a/b
: змінює перше виникнення у кожному рядку між наступнимa
та третім рядком, що міститьсяa
у файлі (із закликом скасувати, якщо потрібно).:/a/,/\([^a]*a\)\{3\}/s/a/b/
: змінює перше виникнення у кожному рядку між цим та наступним із 3a
с на ньому (і це не було б легко розширити для пошуку багато символів).
І різні інші схеми адресації, жодна з яких не працювала. Треба сказати, я дізнався неабияку інформацію про :s
команду, яка намагалася знайти відповідь на цю проблему, але я все ще не вирішила її.
Хтось знає, як це зробити?
(бонусні бали за певний діапазон, наприклад, другий по четвертий події)
n
і .
хоч і не думав їх тут використовувати. Безумовно, покращення, дякую.
s/a/=something/
повинен зробити трюк ( :help sub-replace-=
). Я не вільно володію Вімом, щоб something
списати биту.
:[up][enter]
можна замінити &
, що все ще не ідеально, але принаймні менш болісно.