Макрос Vim в Camel_Case_With_Underscores - PullRequest
1 голос
/ 04 апреля 2011

Я хочу быстрый макрос, который позволил бы мне конвертировать текст вроде qty_on_hand в Qty_On_Hand.Слова, которые не имеют подчеркивания, должны быть написаны заглавными буквами, чтобы описание стало описанием.Регистр в исходном тексте не будет согласованным, поэтому это может быть QTY_on_Hand -> Qty_On_Hand.

Есть идеи?

1 Ответ

0 голосов
/ 04 апреля 2011

Попробуйте следующее:

:let @t="caw\<C-r>=join(map(split(@\", '_', 1), 'toupper(v:val[:0]).tolower(v:val[1:])'), '_')\n\e"

Затем, когда вы наберете @t в обычном режиме, вы получите замену текущего слова в соответствии с вашим запросом. Если вы хотите просто слепо заменить все, тогда используйте

:%s/\<\w\+\>/\=join(map(split(submatch(0), "_", 1), "toupper(v:val[:0]).tolower(v:val[1:])"), "_")/g

Добавьте c после g, если хотите, чтобы vim спрашивал вас о каждой замене.

Второе решение предполагает, что в вашем исходном коде нет не-ASCII-идентификаторов.

...