[regex] vim을 사용하여 선택한 각 단어의 첫 글자를 대문자로 표시

vim에서 ~단일 문자를 대문자로 사용할 수 있다는 것을 알고 있지만 ( 이 질문 에서 언급했듯이 ) vim을 사용하여 선택 항목에서 각 단어의 첫 글자를 대문자로 표시하는 방법이 있습니까?

예를 들어, 다음에서 변경하려면

hello world from stackoverflow

…에

Hello World From Stackoverflow

vim에서 어떻게해야합니까?



답변

다음 대체를 사용할 수 있습니다.

s/\<./\u&/g
  • \< 단어의 시작과 일치
  • . 단어의 첫 문자와 일치
  • \u Vim에게 대체 문자열에서 다음 문자를 대문자로 지정합니다. (&)
  • & LHS에서 일치하는 항목을 대체하는 것을 의미합니다.


답변

:help case 말한다 :

To turn one line into title caps, make every first letter of a word
uppercase: >
    : s/\v<(.)(\w*)/\u\1\L\2/g

설명:

:                      # Enter ex command line mode.

space                  # The space after the colon means that there is no
                       # address range i.e. line,line or % for entire
                       # file.

s/pattern/result/g     # The overall search and replace command uses
                       # forward slashes.  The g means to apply the
                       # change to every thing on the line. If there
                       # g is missing, then change just the first match
                       # is changed.

패턴 부분에는이 의미가 있습니다.

\v                     # Means to enter very magic mode.
<                      # Find the beginning of a word boundary.
(.)                    # The first () construct is a capture group. 
                       # Inside the () a single ., dot, means match any
                       #  character.
(\w*)                  # The second () capture group contains \w*. This
                       # means find one or more word caracters. \w* is
                       # shorthand for [a-zA-Z0-9_].

결과 또는 대체 부분은 다음과 같은 의미를 갖습니다.

\u                     # Means to uppercase the following character.
\1                     # Each () capture group is assigned a number
                       # from 1 to 9. \1 or back slash one says use what
                       # I captured in the first capture group.
\L                     # Means to lowercase all the following characters.
\2                     # Use the second capture group

결과:

ROPER STATE PARK
Roper State Park

매직 모드의 대안 :

    : % s/\<\(.\)\(\w*\)/\u\1\L\2/g
    # Each capture group requires a backslash to enable their meta
    # character meaning i.e. "\(\)" verses "()".


답변

Vim Tips Wiki에는 시각적 선택을 소문자, 대문자 및 제목 케이스로 전환 하는 TwiddleCase 매핑 이 있습니다.

TwiddleCase함수를 추가하면 .vimrc원하는 텍스트를 시각적으로 선택하고 물결표 문자 ~를 눌러 각 케이스를 순환합니다.


답변

이 정규식을 사용해보십시오 ..

s/ \w/ \u&/g


답변

옵션 1- 이 매핑은 키q를매핑하여 커서 위치의 문자를 대문자로 표시 한 다음 다음 단어의 시작 부분으로 이동합니다.

:지도 q gUlw

이를 사용하려면 줄의 시작 부분에 커서를 놓고 q각 단어에 대해 한 번 눌러 첫 글자를 대문자로 만듭니다. 첫 글자를 그대로 두려면 w대신을 눌러 다음 단어로 이동하십시오.

옵션 2-이 매핑q은 커서 위치에있는 문자의 대소 문자를 반전하도록 키를매핑한 다음 다음 단어의 시작 부분으로 이동합니다.

:map q ~w

이를 사용하려면 q첫 글자의 대소 문자를 반전하기 위해 각 단어에 대해 한 번씩 히트 한 줄의 시작 부분에 커서를 놓습니다 . 첫 글자를 그대로 두려면 w대신을 눌러 다음 단어로 이동하십시오.

매핑을 해제합니다. –q 키에할당 된 매핑을 매핑 해제 (삭제)하려면:

:unmap q


답변

vim-titlecase이를위한 매우 유용한 플러그인 도 있습니다 .


답변

수정을 시각적 선택으로 제한하려면 다음과 같이 사용해야합니다.

:'<,'>s/\%V\<.\%V/\u&/g

\%V ............... see help for this