2012-05-12 4 views
1

У меня есть код последующий:Matching слово между пространством и особым характером

@synthesize property1; 
@synthesize property2; 
@synthesize property3; 
@synthesize property4; 

Я хочу, чтобы положить конец как

@synthesize property1 = _property1; 
@synthesize property2 = _property2; 
@synthesize property3 = _property3; 
@synthesize property4 = _property4; 

Я использую Vim и пытаюсь придумать с решением, которое будет определять имя свойства между пространством и ;, но все, что я пробовал, дает мне совпадение, включая два разделителя.

ответ

4

Попробуйте это:

:%s#^\(@synthesize\s\)\(.*\);#\1\2 = _\2;# 
2

Это самый минимальный, который будет работать, я думаю,:

:1,4s/\([a-z0-9]\+\);/\1 = _\1;/g 

Обратите внимание, что 1,4 являются линиями, на которых можно применить этот поиск/заменить.

Более подробную информацию можно найти на http://vim.wikia.com/wiki/Search_and_replace

2

Сжатое подстановки команд может быть использована для решения этой проблемы.

:%s/@synthesize \zs\w\+/& = _&/ 
+0

Там будет отсутствовать '_'? – SergioAraujo

+0

@ user107745: О, конечно. Спасибо, что заметили. –

Смежные вопросы