Vim - поиск и замена всех символов, пропущенных пробелом в каждой строке - PullRequest
2 голосов
/ 28 марта 2012

У меня есть текст в этом формате (определения столбцов Oracle, если вам интересно) ...

column1 DATE,
column2 VARCHAR2(6),
column3 VARCHAR2(15)

Я пытался выяснить, как заменить все, что пропущено в каждом из них.строка «VARCHAR2 (255)», но пока не увенчалась успехом.

Я знаю, что могу искать и находить место через /\s, но не могу понять, как получить остальную частьстрока в строке.Когда я использую /\s*, это выделяет весь текст.Я попытался использовать /\s.+, но получаю «Pattern not found».

Как я могу получить весь текст, прошедший через пробел в каждой строке, и заменить его глобально другой строкой?

Ответы [ 4 ]

2 голосов
/ 28 марта 2012

Самый простой способ:

:%s/ .*/ VARCHAR(255)

VIM использует слегка странный синтаксис регулярных выражений, поэтому, если вы хотите сделать \ s +, вам придется использовать \ s \ +

2 голосов
/ 28 марта 2012

Как насчет

:%s/\s\S\+$/ VARCHAR(255)/
1 голос
/ 29 марта 2012

Помимо использования команд подстановки, рассмотрите решение проблемы путем повторения последовательности команд в обычном режиме:

:%norm!f C VARCHAR(255)
1 голос
/ 28 марта 2012

В одну сторону:

:%s/\(\s\+\).*$/\1VARCHAR(255)/

Для каждой строки % найдите первый пробел \(\s\+\), сохраните его в группе 1 (\1), сопоставьте остаток строки с .*$ и замените его литеральной строкой.

РЕДАКТИРОВАТЬ , чтобы сказать, что вы должны экранировать + в регулярном выражении в режиме магии . Вы можете использовать очень волшебный режим с \v в начале регулярного выражения. Подробнее см. :he magic.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...