Dość często potrzebuję wykonania podstawienia, które będzie miało rozbieżne dopasowania w całym dużym pliku oraz z trywialnymi wyrażeniami wyszukiwania i zastępowania.
Powiedzmy na przykład, że mam kilka wywołań funkcji, takich jak okFunction(arg1, arg2 arg3). Argumenty będą się oczywiście różnić przy każdym wywołaniu funkcji. Teraz powiedz, że odkryłem lepszą funkcję, która nie potrzebuje arg2. Mogę łatwo dostosować cały plik za pomocą
:%s/\<okFunction(\(\w\+\), \(\w\+\), \(\w\+\))/betterFunction(\1, \3)/gc
Chociaż koncepcyjnie prosty, nie jestem pewien, czy mam prawidłową składnię w tym dość długim wzorcu. cFlaga naprawdę pomaga tutaj, ale problemem jest to, że kiedy z prośbą o potwierdzenie, vim nie pokaże, co mecz zostanie zastąpiony. To znaczy, pokaże wyrażenie zastępujące, ale nie oceniany wynik. Jeśli potwierdzę zmianę y, vim natychmiast przejdzie do następnego meczu i nie będę mógł sprawdzić, czy popełniłem jakieś błędy.
Znalazłem wtyczkę vim-over, która częściowo rozwiązuje problem, ale tylko wtedy, gdy wszystkie maty są widoczne na ekranie podczas wpisywania polecenia. Po wciśnięciu klawisza Enter zachowanie jest dokładnie takie samo, jak opisałem powyżej i nie otrzymuję podglądu.
Czy jest więc sposób, aby uzyskać vima do oceny wyrażenia zastępującego, gdy prosi o potwierdzenie poleceń zastępczych?
%, sprawdź, czy wynik jest tym, czego się spodziewałem, a następnie użyj podstawienia za pomocą %(to tylko kilka naciśnięć klawiszy:) :<up><c-b>%. Oczywiście opcja podglądu byłaby znacznie bardziej wydajna. Chociaż żadna łatka nie jest dostępna, być może można by łączyć podstawienie w funkcji vimscript z tego rodzaju opcją, ale to brzmi jak dużo pracy ...