VIM: Как сохранить случай для поиска и замены [дубликат]

10
задан Community 23 May 2017 в 12:17
поделиться

3 ответа

Есть несколько подходов, которые можно предпринять. Если вы хотите придерживаться базовой функциональности Vim, вы можете сделать что-то вроде

:%s/[uU]ser/\=submatch(0) ==# 'user' ? 'person' : 'Person'/g

. Если у вас Vim, построенный с привязками Perl, вы можете использовать : perldo . В зависимости от длины совпадающих / заменяемых слов и от того, в каком регистре вы хотите сохранить, это может работать или не работать.

:perldo s/(user)/"\L$1" ^ $1 ^ 'person'/ieg

Или вы можете использовать один из различных скриптов реализующие такую ​​функциональность.

7
ответ дан 4 December 2019 в 01:01
поделиться

Для vim есть плагин: keepcase.vim

2
ответ дан 4 December 2019 в 01:01
поделиться

Переделал ответ, немного подумав; -)

:s@\([Uu]\)ser@\=((submatch(1)=="U")?"P":"p")."erson"@gc

Конечно, его можно улучшить, но идея остается.

2
ответ дан 4 December 2019 в 01:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: