2015-05-07 2 views
0

У меня есть файл, как это:Как найти и заменить первое слово строки с Vim

Foo

бар

И я пытаюсь получить что-то вроде:

Foo: Foo,

бар : Бар,

Я попытался :%s/^\w/\0: \0,/g где ^\w соответствует первое слово в строке, но я получаю

: F, Foo

б: б, бар

Кто-то может объяснить мне, что я делаю неправильно?

+1

': set hlsearch' дал бы вам указание, что ваш шаблон соответствует только символу первого слова. –

ответ

1

Вам не хватает двух символов (\+), которые расширяют соответствие ко всему слову, потому что \w соответствует только одному символу слова, а не всему слову.

Следующее должно делать то, что вы хотите.

%s/^\w\+/\0: \0,/g 
0

Вместо того чтобы заменить можно (глобально) копировать, вставить и добавить:

:g/\v^.+$/normal! yEPa: ^[A, 

(где ^[ это побег, вошел в <c-v><esc>)

или использовать (в нижнем регистре) e если это то, что вам нужно.