Досить часто я знаходжу себе в необхідності здійснити заміну, яка матиме розбиті збіги у великому файлі та з нетривіальними виразами пошуку та заміни.
Наприклад, скажіть, у мене є такі функції, як дзвінки okFunction(arg1, arg2 arg3)
. Звичайно, аргументи будуть відрізнятися з кожним викликом функції. Тепер скажіть, що я виявив кращу функцію, яка не потрібна arg2
. Я можу легко налаштувати весь файл за допомогою
:%s/\<okFunction(\(\w\+\), \(\w\+\), \(\w\+\))/betterFunction(\1, \3)/gc
Хоча концептуально простий, але я не впевнений, що я правильно зрозумів синтаксис у цій досить довгій схемі. c
Прапор дійсно допомагає тут, але проблема в тому , що при запиті підтвердження ВІМ буде непереливки , що матч буде замінений. Я маю на увазі, він покаже вираз заміни, але не оцінений результат. Якщо я підтверджую заміну y
, vim негайно перейде до наступного матчу, і я не буду спокійно бачити, чи допустив я помилки.
Я знайшов плагін vim-over, який частково вирішує проблему, але тільки якщо на екрані видно всі математичні елементи, коли ви вводите команду. Після натискання клавіші enter, поведінка точно така, як я описав вище, і я не отримую попереднього перегляду.
Отже, чи є спосіб отримати vim для оцінки виразу заміни, коли запитують підтвердження на команди-замінники?
%
, перевірте, чи є результат тим, чого я очікував, а потім використовую заміну %
(це лише кілька натискань клавіш:) :<up><c-b>%
. Очевидно, що параметр попереднього перегляду буде набагато ефективнішим. Хоча патч недоступний, можливо, можна було б перетворити підстановку у функцію vimscript з таким варіантом, але це звучить як багато роботи ...