. 편집기의 기능

텍스트 편집기를 개발하기 전에 편집기들은 어떤 기능을 제공해야 하는지 잠시 생각해보자. 이 기능들은 앞으로 하게 될 실습의 주요 재료가 된다. 텍스트 편집기는 텍스트를 편집하는 프로그램이므로 다음 기능들은 당연히 가능해야 한다.

 

키보드를 통한 문자열 입력 및 수정

자유로운 이동 및 스크롤 기능

블록선택 및 클립보드 처리

파일 입출력 기능

기본적인 검색 기능

 

최소한 이 정도의 기능은 있어야 텍스트 파일을 열어서 편집할 수 있고 그 결과를 저장할 수 있다. 여기에 조금만 더 기능을 추가한다면 마우스처리, 인쇄, 단축키 처리, 여러 개의 파일 동시편집 등의 기능이 있다면 좋다. 다음은 좀 더 실용적인 편집기가 되기 위한 기능들이다. 현재 발표된 상용 편집기들은 이 기능들의 대부분을 지원한다.

 

색상, 글꼴, 줄간 등의 설정상태를 사용자의 취향에 맞게 변경할 수 있다.

무한 메모리관리 기능이 있어 대용량의 파일도 처리할 수 있다.

무한 번의 실행취소와 재실행(Undo/Redo) 기능을 지원해 실수를 되돌릴 수 있게 한다.

문법강조 기능으로 텍스트를 훨씬 더 보기 좋게 출력한다.

북마크, 상용구, 매크로 등의 고급 기능을 제공하기도 한다.

네트워크나 FTP 서버의 원격파일도 직접 읽고 수정할 수 있도록 한다.

프로젝트 관리 및 백업, 자동저장, 쉘 통합 등의 부가기능을 제공한다.

 

제공하는 기능들이 정말 많다. 텍스트 편집기의 공통적인 이런 기능들 외에 전문 편집기들은 또한 나름대로의 편집기능이 추가로 제공된다. HTML 편집기들은 HTML 태그 목록을 제공하며 제한적이기는 하나 비주얼 편집이 가능하다. 비주얼 스튜디오의 편집기에는 멤버 목록 보여주기, 함수 인수 보여주기, 디버깅중에 변수값 보기 등 프로그래밍에 필요한 전문 기능이 내장되어 있다.

기존의 편집기들이 이렇게 많은 기능을 이미 구현해놓았지만 그래도 아직 더 필요한 기능들이 많다. 모든 사람들의 다양한 욕구를 100% 충족시키기 위해서 텍스트 편집기는 아직도 더 많은 발전이 필요한 분야다. 텍스트 편집작업은 무척 따분한 작업인데 성능이 좋은 편집기를 쓰면 훨씬 더 빠르고 정확하게 작업할 수 있다. 텍스트 편집은 결국 사용자의 손에서 이루어지지만 편집기가 똑똑하면 사용자의 실수를 최소화할 수 있고 두세 번 해야 할 작업을 한번에 끝낼 수 있게 된다.

개발자로서 텍스트 편집기가 매력적인 또 다른 이유는 진입장벽이 없다는 점이다. 워드프로세서처럼 고유한 포맷을 다루는 프로그램들은 이미 작성된 문서로 인해 새로운 프로그램이 아무리 성능이 좋아도 쉽게 시장에 진입하지 못한다. 하지만 텍스트 포맷은 원래부터 포맷이 없기 때문에 다른 프로그램보다 쓰기 편하고 성능좋게 만들기만 하면 성공할 수 있다. 좋은 아이디어만 있다면 얼마든지 기존 제품을 능가할 수 있는 미개척 분야가 바로 텍스트 편집기 분야이다.

이 책에서 작성할 편집기는 상기 기능의 대부분을 지원하지만 그래도 개개인의 취향을 모두 만족시키기에는 많은 면에서 부족하다. 이 책을 읽고 난 다음에 여러분들은 자신에게 꼭 맞는 편집기를 직접 만들어 쓸 수 있기 바란다. 필요한 프로그램을 마음내키는 대로 만들 수 있다는 것은 정말 멋진 일이다.