По существу любое распределение магистрали должно хорошо работать для этого (они используют свое собственное распределение для взламывания на нем). Используйте любые более удобные чувства.
Править: С тех пор существует некоторый беспорядок о если vim
или sed
должен использоваться. Я предоставляю решения для обоих:
Следующая замена заменяет слова символами нижнего регистра, кроме первой буквы. Однобуквенные слова преобразовываются в верхний регистр.
:%s/\<\(\k\)\(\k*\)\>/\u\1\L\2/g
\k
алфавитно-цифровые символы соответствий и _
. Широко используемый \w
эквивалентно [A-Za-z0-9_]
и перестанет работать на Кириллических буквах.
\<
и \>
захватите границы слова, и круглые скобки группируют соответствие в первую букву и остальных, которые получаются с помощью \1
и \2
, соответственно.
Чтобы этот шаблон работал, необходимо настроить энергию для использования UTF-8.
set encoding=utf-8
sed 's/\b\([[:alpha:]]\)\([[:alpha:]]*\)\b/\u\1\L\2/g' <inputfile>
\b
границы слова соответствий в sed
, остальное совпадает с vim
версия. (Протестированный на GNU sed, классы символов не могли бы поддерживаться всего sed
версии.)
Это может быть сделано с регулярными выражениями, и существующий ответ касается того метода отлично, но существует другой подход.
Для отдельного слова просто переместитесь в первую букву слова и использования:
lgue
Чтобы сделать больше чем одно слово, Вы захотите использовать макрос
qqlguewq
Я сломаю это:
qq
- начните записывать названный макрос q
l
(это - нижний регистр L) - перемещают один символ направоgue
- поверните каждый символьный нижний регистр (это gu
) в конец текущего слова (e
)w
- перейдите к первому символу следующего словаq
- прекратите записывать макросМожно назвать макрос с @q
. Можно назвать его девять раз с 9@q
, или сорок два раза с 42@q
. С этим конкретным макросом безопасно назвать это произвольным количеством раз - таким образом, Вы могли использовать 9999@q
.
Другой маршрут является рекурсивным макросом:
qqqqqlguew@qq
qqq
- начинает записывать q
макрос, затем сразу остановки записать, эффективно очищая тот регистр@q
- вызовы q
макрос, который является пробелом теперь, но не будет, после того как Вы прекращаете записывать макросКогда макрос поразит конец заключительного слова в документе, это выйдет (поскольку это будет для любой ошибки того вида - иначе это продолжилось бы навсегда).