Vim에서 모든 텍스트를 소문자로 변환하는 방법


211

Vim의 모든 텍스트를 소문자로 어떻게 변환합니까? 가능합니까?


모든 문자가 대문자 인 html 페이지가 많이 있습니다. 이렇게하면 모든 것을 소문자로 다시 입력하는 시간이 절약됩니다.
ksuralta

2
질문을 편집하기 전에 vim의 모든 텍스트를 작은 대문자로 변환하는 방법이었습니다. 분명히 텍스트를 소문자로 변환하는 사용 사례가 있습니다.
레모네이드

6
VIM 웹 사이트에는 다음과 같은 답변이 있습니다. vim.wikia.com/wiki/Switching_case_of_characters 감사합니다.
fnds

답변:


122
  1. 실제로 작은 대문자를 의미한다면 불가능합니다 . 워드 프로세서 와 달리 텍스트 편집기 에서 텍스트를 굵게 또는 기울임 꼴로 변환 할 수 없기 때문에 불가능합니다 . 텍스트를 소문자로 변환하려면 시각적 블록을 만들고 (또는 대문자로 변환)을 누릅니다 . 명령 모드에서 틸드 ( )는 커서 아래 문자의 대소 문자를 반대로 바꿉니다.uU~

  2. Vim의 모든 텍스트를 작은 대문자로 보려면 guifont옵션을 보거나 :set guifont=*Vim 플레이버가 GUI 글꼴 선택기를 지원하는지 입력 하십시오.


33
텍스트 블록을 소문자로 만들기 위해 반드시 시각적 블록을 만들 필요는 없다고 언급 할 가치가 있다고 생각합니다. guu줄을 소문자로 만들고 gu[motion]해당 모션에 해당하는 텍스트를 소문자로 만듭니다. 마찬가지로, gUU그리고 gU[motion]대문자를 들어, 같은 방식으로 작동합니다.
재커리 머레이

1
실제로, 작은 글자는 ᴀʙcᴅᴇꜰɢʜıᴊᴋʟᴍɴoᴘʀsᴛᴜvwxʏz를 사용하여 대부분의 문자에 대해서도 가능합니다.
gerrit

1
그래도 해킹 일뿐입니다. 이것들은 일반적인 작은 대문자로 사용하기위한 것이 아니며 글꼴에서 잘 지원되지 않습니다. (데스크톱 컴퓨터에서 F는 이상하게 렌더링됩니다. 전화기에서는 전혀 렌더링되지 않습니다.) 예를 들어 유니 코드의 흥미로운 부분은 고마워요!
zoul

2
이 답변은 잘못되었습니다. user80168이 정답입니다.
Wayne Workman 4

400

나는 당신이 텍스트를 소문자로 원한다고 가정합니다. 해결책은 매우 간단합니다.

ggVGu

설명:

  1. gg -첫 줄로 이동
  2. V -라인 모드에서 시각적 선택을 켭니다.
  3. G -파일 끝으로 이동합니다 (전체 텍스트를 선택한 순간)
  4. u -소문자 선택 영역

88
시각적으로 선택하지 않고 원하는 경우 ggguG. : help gu
DrAl

18
사용 자본 U대문자에 대한 (예 ggVGU)
나단 월러스

42

mangledorf의 솔루션과 유사하지만 더 짧고 평신도 친화적

:%s/.*/\L&/g


3
:%s/.*/\L&겠습니까만으로도 충분합니다 (필요하지 않은 g때문에 플래그를 .*선택 전체 라인)
고든 구스타프손

1
그렇듯이 :%s/./\L&/g/ g /는 회선에 대한 전역 작업을 나타냅니다. 그러나 나를 얻는 것은 &입니다. 왜 필요한가요?
Braden Best

1
&는 여기에 서 what was matched by the pattern있으므로 다음과 같이 이해할 수 있습니다. replace .*by \Lowercase(what was matched by the pattern). .전 세계 에서 일치하는 것이 일치하는 것보다 느립니다..*
Camusensei

39

이 명령 모드 옵션을 사용하십시오

ggguG


gg - Goto the first line 
g  - start to converting from current line    
u  - Convert into lower case for all characters
G  - To end of the file.

27

고양이를 피부에 바르는 여러 가지 방법 ... 내가 방금 게시 한 방식 은 다음과 같습니다.


:%s/[A-Z]/\L&/g

대문자의 경우도 마찬가지입니다.


:%s/[a-z]/\U&/g

나는이 구조 ( :%s/[pattern]/replace/g)를 항상 사용하기 때문에이 방법을 선호 하므로 더 자연 스럽습니다.


마지막 예제에는 오타가 있다고 생각합니다 ( '대문자'와 마찬가지로) 정규 표현식은 '[AZ]'가 아니라 [az]로 변경되어야합니다.
monojohnny

1
:%s/./\U&/g작동합니다. 숫자와 알파벳이 아닌 문자를 무시합니다. 나를 얻는 것은입니다 &. 왜 \ U (또는 \ L) 자체로는 충분하지 않습니까? 이에 대한 설명을 얻을 수 있습니까?
Braden Best

2
&일치하는 문자열의 스탠드 인입니다. 따라서 \U&일치하는 문자열을 대문자로 바꾸어 교체에 사용될 수 있도록합니다.
Alec Jacobson

22
  • g ~를 사용하여 케이스 "HellO"를 "hELLo"로 전환 한 다음 이동합니다.
  • gU를 사용하여 대문자 "HellO"에서 "HELLO"로 이동합니다.
  • 구와 함께 소문자 "HellO"에서 "hello"로 이동하십시오.

예와 자세한 정보는 다음을 참조하십시오 : http://vim.wikia.com/wiki/Switching_case_of_characters


필자는 @mangledorf의 대답에서 원하는 문자를 소문자의 경우 이스케이프 시퀀스 "\ L &", 대문자의 경우 \\ &로 대체하여 직관적이지 않은 대체 명령이 있다고 생각합니다. 나를 얻는 것은입니다 &. \ L과 \ U는 완벽하게 이해되지만 왜 &필요한가?
Braden Best

9

사용하다 ggguG

gg : 첫 번째 줄로갑니다. gu : 소문자로 변경합니다. G : 마지막 줄로 간다.


이것이 칼라 니디의 대답과 어떻게 다릅니 까?
MSeifert

이 값을 0으로 바꾸려고했는데 이는 이전 답변의 사본 인 답변에 적합한 점수입니다. @MSeifert 부정적인 점수는 틀린 / 유해한 해결책을 위해 예약되어야합니다
Titou

7

일반적으로 Vu(또는 VU대문자)는 V조치를 적용 할 전체 행을 이미 선택 했으므로 전체 행을 소문자로 전환하기에 충분합니다 .

틸다 ( ~)는 개별 문자 의 대소 문자를 변경하여 낙타 문자 또는 이와 유사한 결과를 낳습니다.

Vim이 다양한 경우를 처리하기 위해 많은 다른 모드를 가지고있는 방법과 이러한 모드가 깔끔하게 구성되는 방법은 정말 좋습니다.

예를 들어, v실제 비주얼 모드 및 관련 V-비주얼 라인 및 Ctrl+ Q-비주얼 블록 모드 (블록을 ​​선택할 수있는 기능, 다른 고급 편집자들도 일반적으로 Alt키 를 누르고 텍스트를 선택하여 제공하는 훌륭한 기능 ).


6

유닉스 맛을 내고 있다면

:0,$!tr "[A-Z]" "[a-z]"

4
대괄호는 불필요하며, 일단 제거하면 따옴표도 필요하지 않습니다. :%!tr A-Z a-z
ephemient

!때문에 외부 쉘 명령 나타내는 $ man trAS (대향 :help tr) 즉 계시 tr위한이다 translate.
Braden Best

다른 방법 ::%0,$!tr [:upper:] [:lower:]
albertovar

2

비슷한 문제가 있었고을 사용 ":%s/old/new/g"하고 싶었지만 두 가지 명령을 사용했습니다.

:0
gu:$
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.