목록으로

내용으로 파일 검색하기

시리즈, 입문
2024. 11. 13. PM 2:43:48
B 영역인 검색 액티비티도 Explorer 액티비티 못지않게 빈번하게 사용합니다. 여기서 검색은 파일이나 디렉터리 이름이 아니라 파일 내용에서 지정한 텍스트를 찾는 거지요.

텍스트 검색

Activity bar에서 돋보기 아이콘을 눌러 Primary side bar를 검색 영역으로 바꾸세요. 입력란이 두 줄이 있는데, 그 중 Find 라고 적힌 첫 번째 입력란에 '푸딩'을 입력해보세요.
검색한 단어가 있는 hello.md 파일이 목록에 나열되고, 그 아래에 검색어가 포함된 위치 별로 한 줄 한 줄 나열됩니다. 그 중에서 첫 번째 줄인 '푸딩캠프에 오신 걸 환영합...'을 선택하면 에디터 영역에 hello.md 파일이 열리고, '푸딩캠프에 오신 걸 환영합니다.' 줄에서 푸딩 단어가 있는 위치로 키보드 커서(caret)가 이동되어 표시됩니다.
검색할 대상의 범위는 Visual Studio Code가 연 디렉터리와 파일입니다. Visual Studio Code에서 기준 디렉터리를 지정한 이유 중 하나이지요. 우리는 vscode 디렉터리를 Visual Studio Code로 열었으므로 Visual Studio Code는 이 디렉터리 안에 있는 파일들 중에서 검색어를 찾습니다.
입력란 옆에 있는 'Aa' 아이콘은 영문 대소문자를 구분할지를 설정합니다. 소문자로 code라 입력하면 검색 결과가 있지만, 그 상태에서 Aa 아이콘을 눌러 대소문자 일치도 따지도록 설정하면 검색 결과가 없다고 나옵니다. Code와 code를 다른 텍스트로 분별하거든요.
ab 아이콘은 온전한 단어로써 구분할지 설정합니다. 단어는 띄어쓰기로 구분하고요. 검색어 입력란에 푸딩캠프라고 입력하면 검색 결과가 있지만 ab 아이콘을 누르면 검색결과가 없다고 나옵니다. 하지만 “푸딩캠프에”를 검색하면 검색 결과가 있지요.
마지막으로 .* 아이콘은 정규표현식으로 일치 여부를 따질지 설정합니다. 간단히 실습을 따라 해보겠습니다. .* 아이콘을 활성화한 상태에서 다음 검색어들을 차례대로 입력하며 검색 결과가 어떻게 나오는지 확인해보세요.
  • [a-z]
  • [a-z]+
  • [가-힣]
  • [가-힣]+
  • [a-z가-힣]+
정규 표현식(正規表現式, 영어: regular expression, 간단히 regexp 또는 regex, rational expression) 또는 정규식(正規式)은 특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식 언어이다. 정규 표현식은 많은 텍스트 편집기와 프로그래밍 언어에서 문자열의 검색과 치환을 위해 지원하고 있으며, 특히 펄과 Tcl은 언어 자체에 강력한 정규 표현식을 구현하고 있다.

컴퓨터 과학의 정규 언어로부터 유래하였으나 구현체에 따라서 정규 언어보다 더 넓은 언어를 표현할 수 있는 경우도 있으며, 심지어 정규 표현식 자체의 문법도 여러 가지 존재하고 있다. 현재 많은 프로그래밍 언어, 텍스트 처리 프로그램, 고급 텍스트 편집기 등이 정규 표현식 기능을 제공한다. 일부는 펄, 자바스크립트, 루비, Tcl처럼 문법에 내장되어 있는 반면 닷넷 언어, 자바, 파이썬, POSIX C, C++ (C++11 이후)에서는 표준 라이브러리를 통해 제공한다. 그 밖의 대부분의 언어들은 별도의 라이브러리를 통해 정규 표현식을 제공한다.

위키백과, 정규표현식 설명가 출처인 정규표현식 설명입니다. 정규표현식을 이해하고 활용하는 제가 읽기에도 이해하기 쉬운 설명은 아니군요. 정규표현식은 이 코스 주제에서 벗어나니 추후 별도 과정에서 다루겠습니다.

텍스트 치환

hello.md 문서 파일에 있는 글자 중에서 “푸딩”을 “Pudding”으로 바꿔보세요. 쉬운 일이지만 하기 귀찮은 단순 반복 작업입니다. 실수할 여지도 많고요. 앞서 검색 기능에서 보다시피 글자 비교는 사람보다 컴퓨터가 훨씬 잘하는 일이에요. 그리고 반복되는 일을 빠르게 해치우는 것도 컴퓨터가 훨씬 잘하지요. 검색어를 대체어로 맞바꾸는 치환은 검색 기능에서 몇 가지 행동을 추가해 반복하는 것입니다. Visual Studio Code에게 이 일을 시켜볼까요? 아참, 그 전에 앞서 실습에서 정규표현식을 설정했다면 다시 해제하시고요.
일일이 눈으로 “푸딩” 글자를 찾는 행위를 전문용어로 눈diff라고 하지요. 눈으로 차이점(difference)을 찾는다는 뜻이지요. 우스갯소리였습니다.
토이스토리 2기 모집 중!
푸딩캠프 뉴스레터를 구독하면 학습과 성장, 기술에 관해 요약된 컨텐츠를 매주 편하게 받아보실 수 있습니다.
목차