Не удается найти хороший синтаксис для шаблона vim sustitute - PullRequest
0 голосов
/ 11 апреля 2020

У меня есть куча t_ префиксных имен функций в заголовочном файле, и я хотел бы удалить этот префикс из некоторых из них.

Я закончил, набрав:

:s/\(\s+\)t_\([^(]+\)(/\1\2(/c

Но vim жалуется на Pattern not found Что не так в моем шаблоне?

Ответы [ 2 ]

1 голос
/ 11 апреля 2020

Вы забыли поставить бэкслу sh перед +, чтобы придать ему значение квантификатора. Вы также можете, вероятно, упростить его, используя \<, чтобы соответствовать началу слова вместо ввода пробелов.

0 голосов
/ 12 апреля 2020

Я предлагаю разобрать проблему, сначала поиск:

/\v\s+\zst_\ze.*\(

Теперь подстановка:

:s///\c

Мы можем повторно использовать шаблон поиска, просто набрав пустой запрос на подстановку

OBS: Я полагаю, у ваших функций есть () в конце строки, поэтому .*(). Еще одна вещь; \zs и \ze для соответствия только t_, подробнее см .: :h \zs.

Если вы используете neovim, вы можете видеть, что происходит перед нажатием enter, просто поместите эти строки в свой init. vim:

if has("nvim")
    set inccommand=nosplit
endif
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...