У 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]можна замінити &, що все ще не ідеально, але принаймні менш болісно.