S прописная: How to Write an Uppercase S
Переключение регистра символов | Vim Советы Вики
в: VimTip, использование
Вы можете изменить регистр текста:
- Переключить случай “
Hello” на “hello” сg~, затем движение. - Верхний регистр “
Hello” до “HELLO” сgUзатем движение. - Нижний регистр “
Hello” до “hello” сguзатем движение.
Кроме того, вы можете визуально выделить текст, а затем нажать ~ для переключения регистра, или U для преобразования в верхний регистр, или u для преобразования в нижний регистр.
Содержимое
- 1 Пример
- 2 Титульный корпус
- 3 Чемодан
- 4 Каталожные номера
- 5 комментариев
Примеры[]
-
~ - Переключение регистра символа под курсором или всех визуально выделенных символов.

-
3~ - Переключить регистр следующих трех символов.
-
г~3 нед - Переключить регистр следующих трех слов.
-
г~в - Переключить регистр текущего слова (внутреннее слово – курсор в любом месте слова).
-
г~$ - Переключить регистр всех символов в конец строки.
-
г~~ - Переключение регистра текущей строки (аналогично
В~).
Выше используется ~ для переключения регистра. В каждом примере вы можете заменить ~ на u, чтобы преобразовать в нижний регистр, или на U, чтобы преобразовать в верхний регистр. Например:
-
У - Заглавные буквы визуально выделенного текста.
- Сначала нажмите
vилиV, затем переместите курсор для выбора текста. - Если вы не выделяете текст, нажатие
Uотменит все изменения в текущей строке.
-
гУУ - Изменить текущую строку на верхний регистр (аналогично
VU).
-
- Изменить текущее слово на верхний регистр.
-
и - Нижний регистр визуально выделенного текста.
- Если вы не выделяете текст, нажатие
uотменит последнее изменение.
-
гуу - Изменить текущую строку на нижний регистр (аналогично
Vu).
Title case[]
Команда подстановки :s может изменить регистр (см. :help s/\u).
Следующее преобразует текущую строку в регистр заголовков (все строчные, кроме начальных прописных букв):
:s/\<\(\w\)\(\w*\)\>/\u\1\L\2/g
Объяснение Шаблон поиска \<\(\w\)\(\w*\)\> , который ищет (начало слова), затем \w (символ слова ), затем \w* (ноль или более символов слова), затем \> (конец слова).
\(...\) создают подвыражения, которые будут вызываться с помощью \1 и \2 в замене. Замена \u\1\L\2 заменяет два преобразованных подвыражения: \u преобразует первый символ следующего в верхний регистр, а \L преобразует все следующее в нижний регистр.
Этот подход имеет недостатки в тех случаях, когда слова могут содержать то, что регулярное выражение распознает как несловные символы, например апостроф в " Я буду "или" она ". Альтернатива, основанная на пробелах для границ слов:
:s/\<\(\w\)\(\S*\)/\u\1\L\2/g
Другой альтернативой является замена разделителя на # и использование \v (очень волшебно), чтобы уменьшить необходимость экранирования символов.
:s#\v(\w)(\S*)#\u\1\L\2#g
Twiddle case[]
С помощью следующего (например, в vimrc) вы можете визуально выделить текст, затем нажать ~ , чтобы преобразовать текст в ВЕРХНИЙ РЕГИСТР , затем нижний регистр , затем Заглавный регистр .
Продолжайте нажимать ~ , пока не получите нужный чехол.
функция! TwiddleCase(ул.)
если a:str ==# toupper(a:str)
пусть результат = tolower(a:str)
elseif a:str ==# tolower(a:str)
пусть результат = замена(a:str,'\(\<\w\+\>\)', '\u\1', 'g')
еще
пусть результат = toupper(a:str)
конец
вернуть результат
конечная функция
vnoremap ~ y:call setreg('', TwiddleCase(@"), getregtype(''))gv""Pgv
Ссылки[]
- :справка кейс
- :help 'tildeop'
Комментарии[]
Следующие слова будут пропускать однобуквенные слова и слова, написанные не в верхнем регистре. Он также учитывает неанглийские латинские символы.
:s/\v\C<([A-ZÀ-Ý])([A-ZÀ-Ý]+)>/\u\1\L\2/g
--Дженни 165.2.186.10 19:05, 5 апреля 2012 г. (UTC)
- Хорошо, спасибо. Я добавил
\Cк вашей команде выше, чтобы сделать поиск чувствительным к регистру (он не будет пропускать слова в нижнем регистре, если'ignorecase'установлен, если не присутствует\C).
Джон Беккет 09:58, 6 апреля 2012 г. (UTC) - ----спасибо за помощь! Я ищу пример, который изменит регистр при замене совпадений, а затем сохранит исходный регистр в оставшейся части... что-то вроде этого
- с/\(....\)abc\(....\)DeF\(....\)/\U\1DeF\L\2def ?? \3/ первое совпадение принудительно записывается в верхнем регистре, но также изменяет регистр следующего 'abc'. Второе совпадение принудительно пишется в нижнем регистре, как и следующее «DeF».... ?? выше, мы надеемся, сообщит замене, чтобы не заставлять строчные буквы, а сохранили исходный регистр 3-го совпадения... надеюсь, что это имеет смысл...
- спасибо, Джим Лумпкин Джимлумпкин (разговор) 19:45, 7 октября 2020 г. (UTC)
Мне дали самый полезный совет проверить документ :help s\L, в котором указано, что замена конца выполняется с помощью \e или \E... всем спасибо!
Джимлампкин (разговор) 19:57, 8 октября 2020 г. (UTC)
Контент сообщества доступен по лицензии CC-BY-SA, если не указано иное.
регулярное выражение - проверьте, является ли строка в верхнем регистре и цифры
спросил
Изменено 7 лет, 5 месяцев назад
Просмотрено 2к раз
Я хочу проверить, содержит ли строка только прописные буквы и цифры. Я попытался решить эту проблему с помощью RegExp, и пока у меня есть:
Функция CheckForInvalidChars()
тусклый б
Установить re = новое регулярное выражение
re.Pattern = "[A-Z_0-9]"
b = повторный тест ("eS")
сообщение б
Конечная функция
Однако переменная "b" возвращает значение true, так как я предполагаю, что она находит совпадение в "S", хотя я хочу, чтобы эта конкретная строка возвращала значение false, поскольку не все буквы в верхнем регистре. Как мне добиться этого?
Я пытался сделать это и с помощью функций, используя IsNumeric , но не могу найти IsUpperCase 9\w+$"
CheckForInvalidChars = re.