Вы можете просто вставить и адаптировать это:
(Конечно, если вы будете делать это время от времени, вам понадобится плагин вместо этого чудовища. Но для тех, кто спешит и нуждается в нем только один раз, это быстрый взлом для вашего удовольствия от вставки: )
:%s/\cbad\zejob/\= ( submatch(0)[0] is# toupper(submatch(0)[0]) ? 'G' : 'g' ) . ( submatch(0)[1] is# toupper(submatch(0)[1]) ? 'OOD' : 'ood' )
Помимо шаблона поиска, вы должны отредактировать четыре '
строки '
в коде замены: отредактируйте детали в полужирном :
:% s / \ c плохо \ ze работа / \ =
(submatch (0) [0] равно # toupper (submatch (0) [0])? ' G ': ' g ').
(submatch (0) [1] равно # toupper (submatch (0) [1])? ' OOD ': ' ood ')
Не используйте эту «оранжевую» версию для вставки, так как символы переноса строки также нарушают команду.
/\ze
- синтаксический сахар vim regex для обозначения положительного взгляда: шаблон после \ze
проверяется, но не подставляется.
is#
?? Позвольте мне объяснить ... (Если интересно.)
#
(также в ==#
и others ) обеспечивает чувствительность к регистру. Иначе, с :set ignorecase
(который я использую, потому что это требуется для полезного :set smartcase
), vim будет считать 'a' == 'A'
!!
![image](https://i.stack.imgur.com/Zeij0.jpg)
Как бы безумно это ни было, мы действительно должны учитывать это: поскольку это зависит от пользовательских настроек, ==
следует использовать НЕ ВСЕ! (За исключением случаев, когда это действительно будет тем, что вы хотите.) Я даже следуйте рекомендации использовать ==#
при сравнении целых чисел: http://learnvimscriptthehardway.stevelosh.com/chapters/22.html#code-defensively
is#
вместо ==#
- это еще один способ защиты кода: он повышает безопасность типов: http://google.github.io/styleguide/vimscriptguide.xml?showone=Type_checking#Type_checking
Его следует использовать при сравнении со строковым литералом.
'single-quoted'
вместо "double quoted"
строк - еще одна хорошая практика: http://google.github.io/styleguide/vimscriptguide.xml?showone=Strings#Strings
HT @fc. - этот ответ основан на их ответе , исправляя несколько недостатков.