vim에서 ~
단일 문자를 대문자로 사용할 수 있다는 것을 알고 있지만 ( 이 질문 에서 언급했듯이 ) vim을 사용하여 선택 항목에서 각 단어의 첫 글자를 대문자로 표시하는 방법이 있습니까?
예를 들어, 다음에서 변경하려면
hello world from stackoverflow
...에
Hello World From Stackoverflow
vim에서 어떻게해야합니까?
답변:
다음 대체를 사용할 수 있습니다.
s/\<./\u&/g
\<
단어의 시작과 일치 .
단어의 첫 문자와 일치 \u
Vim에게 대체 문자열에서 다음 문자를 대문자로 지정합니다. (&)
&
LHS에서 일치하는 항목을 대체하는 것을 의미합니다.%s/\<./\u&/g
: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
원하는 텍스트를 시각적으로 선택하고 물결표 문자 ~
를 눌러 각 케이스를 순환합니다.
옵션 1- 이 매핑은 키q
를매핑하여 커서 위치의 문자를 대문자로 표시 한 다음 다음 단어의 시작 부분으로 이동합니다.
:지도 q gUlw
이를 사용하려면 줄의 시작 부분에 커서를 놓고 q
각 단어에 대해 한 번 눌러 첫 글자를 대문자로 만듭니다. 첫 글자를 그대로 두려면 w
대신을 눌러 다음 단어로 이동하십시오.
옵션 2-이 매핑q
은 커서 위치에있는 문자의 대소 문자를 반전하도록 키를매핑한 다음 다음 단어의 시작 부분으로 이동합니다.
:map q ~w
이를 사용하려면 q
첫 글자의 대소 문자를 반전하기 위해 각 단어에 대해 한 번씩 히트 한 줄의 시작 부분에 커서를 놓습니다 . 첫 글자를 그대로 두려면 w
대신을 눌러 다음 단어로 이동하십시오.
매핑을 해제합니다. -q
키에할당 된 매핑을 매핑 해제 (삭제)하려면:
:unmap q
qq~wq
그리고 @q
뒤에 @@
?
vim-titlecase
이를위한 매우 유용한 플러그인 도 있습니다 .
수정을 시각적 선택으로 제한하려면 다음과 같이 사용해야합니다.
:'<,'>s/\%V\<.\%V/\u&/g
\%V ............... see help for this