Saturday, September 09, 2006
문자열 찾기 바꾸기] Vim (Vi), Gvim 리눅스 텍스트 에디터; 문자 찾기/치환 Find and Replace
GVim 또는 Vim에서 문자열을 찾거나 치환(바꾸기)하는 방법입니다.
* 현재 문서를 편집중이라면, 키보드의 Esc 키를 눌러 편집모드에서 빠져나옵니다.
* 키보드의 슬래쉬(/)키를 누르고, 찾을 문자열을 입력합니다. 만약 foo 라는 문자열을 찾는다면
그런데 /키는, 위에서 아래로 찾는 것입니다.
아래에서 위쪽 방향으로 찾으려면 물음표(?)키를 사용합니다. 현재 커서 위치의 위쪽에 있는 foo 라는 문자열을 찾으려면
다음 문자열 찾기는 소문자 n 입니다. 만약 foo 가 여러 개 있다면, 아래쪽 foo들을 계속 찾게 하는 것입니다.
역방향으로 계속 찾으려면 대문자 N 을 누릅니다.
※ 엔터키를 눌러서 일반모드로 나온 후 n을 눌러야 합니다. 찾을 문자열 뒤에 그냥 n을 붙이면 안 됩니다.
후추나님의 코멘트를 보고 나서야, 여기에 대한 설명이 부족했다는 것을 알았습니다.^^;
Vim은 대소문자를 구분하여 찾기에 불편합니다. Vim 설정 파일인 .vimrc 또는 _vimrc 파일에,
set ignorecase
이런 줄을 삽입하면 대소문자 구분 없이 찾기를 할 수 있습니다. (▶▶ [.vimrc] Vim / Gvim 설정 파일 예제 - 리눅스 텍스트 에디터 참고)
* 현재 문서를 편집중이라면, 키보드의 Esc 키를 눌러 편집모드에서 빠져나옵니다.
* 콜론(:)을 누르고 %s/foo/bar 라고 하면 모든 foo라는 문자열이 bar로 한꺼번에 치환됩니다.
다음과 같이 c 라는 옵션을 붙이면
이렇게 하면 정확하게 foo에 일치될 때만 바꿉니다. 즉 foo는 바꾸지만, foo 앞뒤로 다른 문자열이 붙어 있는 경우, 예를 들어
fooZZZ
ZZZfoo
ZZZfooZZZ
이런 문자열 속의 foo 는 바꾸지 않습니다.
대소문자 구분없이 바꾸려면
이 경우
foofoofoofoofoofoofoofoo
이렇게
barfoofoofoofoofoofoofoo
문장의 첫번째 foo만 bar로 치환됩니다. 문장의 모든 foo를 bar로 치환하려면
▶▶ Vim-VI-Gvim] 대소문자 구분 없이 문자열 찾기 옵션; Find Case Ignore
문자열 찾기(Find)
* 현재 문서를 편집중이라면, 키보드의 Esc 키를 눌러 편집모드에서 빠져나옵니다.
* 키보드의 슬래쉬(/)키를 누르고, 찾을 문자열을 입력합니다. 만약 foo 라는 문자열을 찾는다면
/foo
이렇게 하면 됩니다.그런데 /키는, 위에서 아래로 찾는 것입니다.
아래에서 위쪽 방향으로 찾으려면 물음표(?)키를 사용합니다. 현재 커서 위치의 위쪽에 있는 foo 라는 문자열을 찾으려면
?foo
라고 하면 됩니다.다음 문자열(문자) 계속 찾기
다음 문자열 찾기는 소문자 n 입니다. 만약 foo 가 여러 개 있다면, 아래쪽 foo들을 계속 찾게 하는 것입니다.
역방향으로 계속 찾으려면 대문자 N 을 누릅니다.
※ 엔터키를 눌러서 일반모드로 나온 후 n을 눌러야 합니다. 찾을 문자열 뒤에 그냥 n을 붙이면 안 됩니다.
후추나님의 코멘트를 보고 나서야, 여기에 대한 설명이 부족했다는 것을 알았습니다.^^;
대소문자 구분 없이 찾기
Vim은 대소문자를 구분하여 찾기에 불편합니다. Vim 설정 파일인 .vimrc 또는 _vimrc 파일에,
set ignorecase
이런 줄을 삽입하면 대소문자 구분 없이 찾기를 할 수 있습니다. (▶▶ [.vimrc] Vim / Gvim 설정 파일 예제 - 리눅스 텍스트 에디터 참고)
문자열 바꾸기(치환)
* 현재 문서를 편집중이라면, 키보드의 Esc 키를 눌러 편집모드에서 빠져나옵니다.
* 콜론(:)을 누르고 %s/foo/bar 라고 하면 모든 foo라는 문자열이 bar로 한꺼번에 치환됩니다.
다음과 같이 c 라는 옵션을 붙이면
:%s/foo/bar/c
바꿀 때마다 바꾸어도 좋은지 물어보기에 더 안전합니다. y를 누르면 바꾸고, n을 누르면 다음으로 건너뛰고, a를 누르면 모두 바꿉니다.:%s/\<foo\>/bar
이렇게 하면 정확하게 foo에 일치될 때만 바꿉니다. 즉 foo는 바꾸지만, foo 앞뒤로 다른 문자열이 붙어 있는 경우, 예를 들어
fooZZZ
ZZZfoo
ZZZfooZZZ
이런 문자열 속의 foo 는 바꾸지 않습니다.
대소문자 구분없이 바꾸려면
:%s/foo/bar/i
이렇게 i 옵션을 붙입니다. 이것은 ".vimrc" 파일을 고치지 않아도 작동합니다.전역 치환
이 경우
foofoofoofoofoofoofoofoo
이렇게
barfoofoofoofoofoofoofoo
문장의 첫번째 foo만 bar로 치환됩니다. 문장의 모든 foo를 bar로 치환하려면
:%s/foo/bar/g
이렇게 g 옵션을 사용합니다.:%s/foo/bar/gi
이렇게 여러 옵션을 혼용할 수도 있습니다.▶▶ Vim-VI-Gvim] 대소문자 구분 없이 문자열 찾기 옵션; Find Case Ignore
tag: editor
텍스트 에디터 | 문서 편집기 | Text Editor
tag: linux
리눅스 Linux | 유닉스 Unix | 시그윈 Cygwin
좋은 정보감사합니다^^
하나 궁금한게요,
/FOO 로 검색하면 FOO 단어가 잡히긴 하는데, 다음단어를 찾고자 n 을 누르면,
/FOOn 이라고 찍히고 검색하질 못하네요.
이럴경우, 어떻게 하죠?
이유를 모르겠군요-_-?
vim 자체에 버그가 있는 버전은 아닐까 싶습니다.
kim.youngMok // 엔터를치시고
일반모드에서 n누르세요.
그러고 보니 kim.youngMok님은 엔터키를 안 치시고
n을 누르신 것 같네요 ^^;;;
<< Home