Vim의 모든 텍스트를 소문자로 어떻게 변환합니까? 가능합니까?
Vim의 모든 텍스트를 소문자로 어떻게 변환합니까? 가능합니까?
답변:
guu
줄을 소문자로 만들고 gu[motion]
해당 모션에 해당하는 텍스트를 소문자로 만듭니다. 마찬가지로, gUU
그리고 gU[motion]
대문자를 들어, 같은 방식으로 작동합니다.
mangledorf의 솔루션과 유사하지만 더 짧고 평신도 친화적
:%s/.*/\L&/g
:%s/.*/\L&
겠습니까만으로도 충분합니다 (필요하지 않은 g
때문에 플래그를 .*
선택 전체 라인)
:%s/./\L&/g
/ g /는 회선에 대한 전역 작업을 나타냅니다. 그러나 나를 얻는 것은 &
입니다. 왜 필요한가요?
&
는 여기에 서 what was matched by the pattern
있으므로 다음과 같이 이해할 수 있습니다. replace .*
by \Lowercase(what was matched by the pattern)
. .
전 세계 에서 일치하는 것이 일치하는 것보다 느립니다..*
고양이를 피부에 바르는 여러 가지 방법 ... 내가 방금 게시 한 방식 은 다음과 같습니다.
:%s/[A-Z]/\L&/g
대문자의 경우도 마찬가지입니다.
:%s/[a-z]/\U&/g
나는이 구조 ( :%s/[pattern]/replace/g
)를 항상 사용하기 때문에이 방법을 선호 하므로 더 자연 스럽습니다.
:%s/./\U&/g
작동합니다. 숫자와 알파벳이 아닌 문자를 무시합니다. 나를 얻는 것은입니다 &
. 왜 \ U (또는 \ L) 자체로는 충분하지 않습니까? 이에 대한 설명을 얻을 수 있습니까?
&
일치하는 문자열의 스탠드 인입니다. 따라서 \U&
일치하는 문자열을 대문자로 바꾸어 교체에 사용될 수 있도록합니다.
예와 자세한 정보는 다음을 참조하십시오 : http://vim.wikia.com/wiki/Switching_case_of_characters
&
. \ L과 \ U는 완벽하게 이해되지만 왜 &
필요한가?
일반적으로 Vu(또는 VU대문자)는 V조치를 적용 할 전체 행을 이미 선택 했으므로 전체 행을 소문자로 전환하기에 충분합니다 .
틸다 ( ~)는 개별 문자 의 대소 문자를 변경하여 낙타 문자 또는 이와 유사한 결과를 낳습니다.
Vim이 다양한 경우를 처리하기 위해 많은 다른 모드를 가지고있는 방법과 이러한 모드가 깔끔하게 구성되는 방법은 정말 좋습니다.
예를 들어, v실제 비주얼 모드 및 관련 V-비주얼 라인 및 Ctrl+ Q-비주얼 블록 모드 (블록을 선택할 수있는 기능, 다른 고급 편집자들도 일반적으로 Alt키 를 누르고 텍스트를 선택하여 제공하는 훌륭한 기능 ).
유닉스 맛을 내고 있다면
:0,$!tr "[A-Z]" "[a-z]"
:%!tr A-Z a-z
!
때문에 외부 쉘 명령 나타내는 $ man tr
AS (대향 :help tr
) 즉 계시 tr
위한이다 translate
.
:%0,$!tr [:upper:] [:lower:]