vim/sed/regexp вопрос
:%s/ \([авикосуя]\) / \1~/g
не добавляет "~" после буквы, просто пробел удаляется.
:%s/ \([авикосуя]\) / \1\~/g
Ещё будет трабл с прописными буквами.
ага, я ж сказал, что баги есть.
Оставить комментарий
oyuriyu
Постановка задачи: После однобуквенных слов принято ставить неразрывный пробел(чтобы строчка текста не кончалась на это слово). В ТеХ-е это пишется
так "... в~связи...". Есть куча текстов, где этого не сделано, стоит обычный пробел.
Хочется чтобы Vim сам расставлял в таких местах "~" вместо пробела, а где не стоит,
исправлял. В принципе, почитав ман к sed, я написал такой скриптик :
(тут пока ещё баги есть )
В результате sed в stdout шлёт исправленный текст. Пробовал то же писать в Vim
(:s/ \([авикосуя]\) / \1~/g глючит -- либо пишет, что "pattern not found", либо вообще что-нибудь страшное учудит -- учетверит это слово или ещё что сделает
Хочется или заставить Vim делать это по-человечески или скрипт к sed так модифицировать,
чтобы он на каждое исправление спрашивал: OK ? [Yes/No] .
Как это можно сделать ? Может средствами Perl или Python'a.