vi 치환 문제..

innu의 이미지

tmpA, tmpF, tmpR ... 등등등

tmp + "대문자 알파벳 1자" 를 "소문자 1자" 로 바꿀 수 있는 방법이 없을까요?

tmpA => a
tmpF => f
tmpR => r

단, vim ex 모드에서 단 한줄의 명령으로 (쉘 호출없이)

elien의 이미지

:%s/tmp\(\u\)/\L\1/g

훗, 못 믿겠나?

innu의 이미지

훌륭하십니다.. :shock:

제대로 되는데 잘 모르겠네요.

제가 처음 생각한건

%s/tmp\([A-Z]\)/\1/g

이었는데 대문자 그대로 더군요...

%s/tmp\(\u\)/\L\1/g

설명 좀 해주시면 안될까요?[/code]

Debian Spirit !!!

keizie의 이미지

\u는 한 글자를 uppercase, 대문자로.
\U는 전체를 대문자로.

다른 건 기억이 안나네요. :)

innu의 이미지

kz wrote:
\u는 한 글자를 uppercase, 대문자로.
\U는 전체를 대문자로.

다른 건 기억이 안나네요. :)

vim 확장정규표현식에

\u => [a-z]
\U => [^a-z]

\L => [^A-Z]

으로 되어 있는데요 ?

Debian Spirit !!!

elien의 이미지

s/패턴/스트링/ 이라고 할 때,
먼저 패턴에서 \u 는 한 글자의 대문자를 의미합니다 [A-Z] 와 같은 의미지요 (:help \u)
그리고 뒤의 스트링에서 \L 은 이후의 string 을 모두 소문자로 하겠다는 의미입니다. (정확히는 \E 패턴까지예용 :help s/\L)
비슷한 것으로, \l 은 뒤에오는 string 중 한 글자만 소문자로 하겠다는 것이고,
\U, \u 는 마찬가지 방법으로 대문자로 바꿔주는 것입니다. (:help s/\u)
패턴에서의 \u 와 스트링에서의 \u 는 그 쓰임이 다르지요 :)

훗, 못 믿겠나?