이 매뉴얼은 당근 텍스트 편집기의 기능을 빠르게 익힐 수 있도록 작성된 자습서입니다. 짧은 시간동안만 훑어 보아도 당근의 기능들 대부분을 쉽게 익혀 요긴하게 사용할 수 있습니다. 자습서에 사용된 그림은 작성 시점의 최신 버전입니다.

 

1.당근 소개 및 설치

.소개

당근(Dangeun)은 텍스트 파일을 보고 편집할 수 있는 텍스트 편집기입니다. 윈도우즈에 기본적으로 포함된 메모장과 유사하되 훨씬 더 풍부한 기능을 제공합니다. 당근의 주요 기능은 다음과 같습니다.

 

-기본적인 텍스트 편집 및 저장

-북마크, 줄번호, 현재행 표시 기능

-무한대의 편집 메모리 지원 및 다단계의 취소/재실행

-C/C++, SQL, HTML 문서에 대한 구문 강조

-FTP, HTTP 원격 파일 편집 가능

-관련된 파일을 묶음으로 관리할 수 있는 프로젝트 기능

-최대 4개까지의 편집창 분할

-이진 파일의 덤프를 출력하는 헥사 뷰

-백업 및 자동 저장, 편집 기록 저장

-사각형 형태의 영역을 선택할 수 있는 열모드

-자동화된 매크로 작성 가능

-단축키 재정의 가능

-자주 사용되는 문자열을 빠르게 입력할 수 있는 상용구

-문서 인쇄

-색상, 모양, 편집, 동작 등 풍부한 옵션 제공

 

당근 1.2 버전까지는 오픈 소스로 작성되어 소스는 물론 제작 과정을 자세하게 설명한 문서까지도 공개되어 있습니다. 텍스트 편집기는 물론이고 윈도우즈 응용 프로그램 제작에 관심이 있는 예비 개발자들은 당근 프로젝트를 통해 프로그래밍의 기본을 익힐 수 있습니다. 당근 프로젝트는 비주얼 C++ 컴파일러로 컴파일 가능합니다.

당근 1.2는 실습 프로젝트의 형식상 셰어웨어의 형태를 띠고 있으나 실제로는 아무런 제약없이 사용할 수 있는 프리웨어입니다. 뿐만 아니라 소스에 대해서도 코드의 일부 또는 전체를 제약없이 재사용할 수 있습니다. 당근의 편집 컨트롤인 ApiEdit는 C++ 프로젝트에 재사용 가능하도록 설계되어 있으므로 편집 컨트롤이 필요할 경우 ApiEdit를 활용하십시오.

.설치

당근은 다음 사이트에서 무료로 다운로드받을 수 있습니다. 이 사이트는 당근 개발자가 운영하는 프로그래밍 학습 사이트이며 C/C++과 윈도우즈 API 등을 학습할 수 있는 자료들을 제공합니다.

 

http://www.winapi.co.kr

 

왼쪽 메뉴에서 당근을 선택한 후 최신 버전을 다운로드받으십시오. 배포되는 압축 파일에는 당근의 실행 파일과 몇 가지 샘플 파일이 포함되어 있으며 프로젝트 소스는 별도로 배포됩니다.

당근은 별도의 설치 프로그램이 없으며 최초 실행시에 필요한 초기화를 수행합니다. 다운로드받은 파일을 적당한 디렉토리에 압축 해제한 후 Dangeun.exe를 더블클릭하여 곧바로 실행할 수 있습니다. 최초 실행시 다음 설치 대화상자가 나타납니다.

이 대화상자는 간단한 안내 메시지를 출력하고 설치중 사용할 옵션을 입력받습니다. 원하는 옵션을 선택한 후 확인 버튼을 누르시면 당근이 실행됩니다. 다음은 디폴트 옵션으로 설치된 모습입니다.

설치해제할 때는 메뉴에서 도구/설치 정보 삭제 항목을 선택합니다. 단, 편집중인 파일이 있을 경우는 설치 해제를 할 수 없으므로 문서창을 모두 닫은 후 설치 해제하십시오. 설치 해제중에 다음 대화상자를 출력합니다.

설치 해제하면 당근은 시스템에 어떠한 흔적도 남기지 않고 설치 전의 상태로 완벽하게 돌아갑니다. 설치 해제 후 실행 파일은 따로 삭제해 주십시오.

.창의 구성

당근은 여러 개의 창으로 구성됩니다.

 

각 창은 보기 메뉴에서 개별적으로 숨기기/보이기를 선택할 수 있으며 창 사이의 경계선을 드래그하여 크기를 조정할 수 있습니다. 경계선을 드래그하여 창의 크기를 아주 작게 만들면 해당 창을 숨깁니다. 당근은 여러 개의 문서를 동시에 편집할 수 있는 MDI 인터페이스를 사용합니다. 다음은 모든 창을 숨기고 편집창에 두 개의 문서를 연 모습입니다.

툴 바의 각 버튼들은 다음과 같은 기능을 제공합니다. 대부분 메뉴 명령들과 대응되며 풍선 도움말을 통해 단축키를 쉽게 익힐 수 있습니다.

 

버튼

설명

파일

파일 열기

파일 저장

잘라내기

복사

붙여 넣기

실행 취소

재샐행

자동 개행

헥사 보기

모드

명령 모드

검색

 

.기본 설정

당근은 사용자가 선택할 수 있는 풍부한 옵션을 제공합니다. 메뉴의 도구/기본 설정 항목을 선택하면 당근의 모든 옵션을 조정할 수 있는 대화상자를 보여줍니다. 다음은 일반 페이지의 옵션입니다.

시작할 때의 동작 : 당근을 시작할 때 어떤 문서를 읽을지를 지정합니다. 종료 직전에 편집하던 문서 목록을 저장해 두고 다음 실행할 때 그대로 복원할 수 있습니다.

탐색기의 팝업 메뉴에 당근 편집기 등록 : 탐색기의 팝업 메뉴에 "당근으로 편집" 항목을 삽입하여 탐색기에서 파일을 곧바로 열 수 있도록 합니다.

복수개의 인스턴스 허용 : 여러 개의 당근을 실행할 수 있습니다. 당근은 여러 개의 문서를 동시에 편집할 수 있으므로 굳이 이 옵션을 선택할 필요는 없습니다.

다른 프로그램에 의한 변경 감시 : 편집중인 파일이 외부의 다른 프로그램에 의해 변경되었는지를 감시합니다. 변경 발견시 별도의 대화상자로 다시 읽기 여부를 질문합니다.

변경된 파일 발견시 질문없이 다시 읽기 : 외부에서 파일이 변경되었을 시 별도의 질문없이 변경된 파일을 다시 읽습니다.

시작할 때 활성 프로젝트 다시 열기 : 파일창에 등록된 프로젝트 목록을 저장했다가 다음 시작할 때 다시 읽어옵니다.

시작할 때 상용구 묶음 다시 열기 : 상용구창에 등록된 상용구 묶음 목록을 저장했다가 다음 시작할 때 다시 읽어옵니다.

처음 열리는 문서창 최대화하기 : 아무 문서도 열리지 않은 상태에서 처음 여는 창은 항상 최대화하여 편집창 전체를 사용합니다. 이 옵션이 선택되지 않으면 편집창의 자식 윈도우로 조그맣게 열립니다.

기본 확장자 : 저장 대화상자에서 별도의 확장자없이 파일명만 입력할 때 적용할 확장자입니다. 예를 들어 abcd만 입력하면 기본 확장자를 붙여 abcd.txt로 저장합니다.

최근 파일 개수 : 당근은 최근 연 파일의 목록을 유지하며 파일/최근파일 목록에서 빠르게 다시 읽을 수 있습니다. 이 옵션은 최근 파일 목록의 개수를 지정합니다.

권장 옵션으로 : 최초 실행시의 옵션으로 돌아갑니다.

2.편집기능

.파일 열기

편집 대상 파일은 메뉴와 툴바, 파일창 등의 장치를 이용하여 여러 가지 방법으로 열 수 있습니다.

 

메뉴 또는 툴 바에서 새 파일(Ctrl+N) 명령을 선택합니다. 빈 문서창이 열립니다.

파일/열기 명령(Ctrl+O)을 선택한 후 파일 열기 공통 대화상자에서 열고자 하는 파일을 선택합니다. 한꺼번에 여러 개의 파일을 선택할 수도 있습니다.

탐색기에서 파일을 드래그하여 당근 윈도우로 떨어뜨리면 드롭된 파일을 엽니다. 한꺼번에 여러 개의 파일을 드래그할 수도 있습니다.

탐색기에서 대상 파일들을 선택한 후 팝업 메뉴를 열고 "당근으로 편집" 항목을 선택합니다. 당근이 실행되면서 선택한 파일을 엽니다.

⑤ 당근은 미니 탐색기인 파일창을 내장하고 있습니다. 이 창에서 파일을 더블클릭하면 즉시 편집할 수 있습니다.

관련 파일들을 프로젝트로 묶어 놓으면 프로젝트에서 파일을 열 수 있습니다. 프로젝트는 파일창의 아래쪽에 나타납니다.

당근은 한번 열었던 파일의 목록을 기억합니다. 파일/최근파일 항목을 선택하면 최근에 열었던 문서들이 표시되며 이 항목을 선택하면 파일을 다시 열 수 있습니다.

⑧ 기본설정 대화상자의 연결 페이지에서 당근과 특정 확장자를 연결해 놓을 수 있습니다. 탐색기에서 연결된 파일을 더블클릭하면 당근이 실행됩니다. 디폴트 설정 상태에서는 아무 것도 연결되어 있지 않으나 txt 확장자를 당근과 연결하면 메모장 대신 당근을 기본 텍스트 편집기로 사용할 수 있습니다.

 

인터넷에 연결되어 있다면 FTP나 HTTP 프로토콜을 사용하여 원격지의 파일을 열고 편집할 수도 있습니다. 편집한 파일은 파일/저장 명령으로 저장합니다. 되돌리기 명령은 모든 편집을 취소하고 디스크의 파일을 다시 읽습니다.

당근은 윈도우즈, 매킨토시, 유닉스 포맷의 안시 파일과 유니코드, UTF-8로 인코딩된 문서를 읽고 편집할 수 있으며 헥사 뷰로 임의의 이진 파일을 편집할 수도 있습니다. 텍스트 파일의 포맷을 변환할 때는 파일/ 포맷 변환 명령을 사용하십시오.

. 커서의 이동

편집창에서 커서를 이동할 때는 키보드의 커서 이동키를 사용합니다. 또는 마우스로 이동하고자 하는 위치를 클릭하여 즉시 이동할 수도 있습니다. PgUp, PgDn 키는 페이지 단위로 아래 위로 이동하며 Home, End는 줄의 처음과 끝으로 이동합니다. 커서 이동키와 Ctrl키의 조합은 특별한 이동을 수행합니다.

 

Ctrl 조합키

기능

좌우

단어 단위로 이동

상하

아래, 위로 스크롤

Home

문서 처음으로 이동

End

문서 끝으로 이동

 

Shift키는 모든 커서 이동키와 조합되어 사용되며 이동된 위치로 선택을 확장합니다. Shift키를 누른 채로 좌우로 이동하면 현재 위치에서 이동한 새 위치까지 선택됩니다. 단어 단위 선택 확장이나 마우스를 이용한 임의 위치로의 선택 확장도 가능합니다.

마우스로 드래그하면 임의의 영역을 훨씬 더 신속하게 선택할 수 있습니다. 마우스 더블클릭은 단어를 선택합니다. 마진 영역에서의 클릭은 줄 단위 선택이며 더블클릭은 문단 전체를 선택합니다. 문서 전체를 선택할 때는 편집/전체 선택 또는 단축키 Ctrl+A를 누르십시오. 문서를 스크롤할 때는 편집창의 오른쪽과 아래쪽에 있는 스크롤 바를 사용하거나 휠 마우스를 사용합니다.

자주 참조해야 하는 문서의 특정 부분에 북마크를 삽입해 놓고 빠른 속도로 이동할 수도 있습니다. 당근은 두 가지 종류의 북마크를 제공하며 다음 단축키로 설정 및 이동합니다.

 

북마크 종류

설정 해제

이동

이름없는 북마크

Ctrl+F2

F2

이름있는 북마크

Ctrl+Shift+1~9

Ctrl+1~9

 

마진에는 북마크가 설정된 행에 노란색의 북마크 표시가 나타납니다. 숫자가 있는 북마크는 Ctrl 키와 숫자키를 누름으로써 이동할 수 있으며 숫자가 없는 북마크는 F2키로 순서대로 이동합니다.

편집/최후 편집 위치로(단축키 Ctrl+Q)는 마지막 편집한 위치로 신속하게 이동합니다.

.편집

당근은 기본적으로 삽입 모드로 동작하며 문장을 입력하면 이후의 문장은 뒷쪽으로 자동 이동되어 새로 입력한 문장이 캐럿이 있는 위치에 삽입됩니다. 겹침 모드는 캐럿이 있는 위치의 글자가 새로 입력한 글자로 변경되는 모드입니다. 삽입 모드와 겹침 모드는 Ins 키로 토글하며 현재 모드가 상태란의 오른쪽 끝에 표시됩니다.

편집 메뉴에는 잘라내기, 복사, 붙여넣기 등의 기본적인 클립보드 명령들이 있습니다. 복사해서 추가, 잘라서 추가 항목은 클립보드에 이미 저장된 내용 뒤에 선택영역의 문장을 덧붙이는 기능으로서 문장의 부분들을 수집할 때 사용하면 편리합니다.

열모드는 직사각형 모양의 영역을 선택할 수 있는 기능입니다. 편집/열모드(단축키 Alt+C)로 열 선택 모드를 토글하며 다음과 같은 선택을 할 수 있습니다.

열선택된 상태에서 선택된 직사각 영역의 문자들을 한꺼번에 삭제, 이동, 복사할 수 있으며 다른 영역에 붙여 넣을 수도 있습니다.

가상 공백 기능은 글자가 없는 빈 공백 위치로도 캐럿이 자유롭게 이동할 수 있는 기능이며 도표 등을 그릴 때 편리하게 사용할 수 있습니다.

당근은 사용자의 모든 편집 동작을 기억하므로 직전에 실행했던 명령을 취소하거나 이미 취소된 명령을 재실행할 수 있습니다. 툴 바의 취소, 재실행 버튼을 사용하면 여러 단계의 명령들을 한꺼번에 취소 및 재실행할 수 있습니다.

.편집 옵션

기본 설정의 편집 페이지에는 문서 편집 기능에 관련된 옵션들이 있습니다.

탭 크기, 문자의 평균폭으로 크기 계산

탭의 폭을 몇 개의 문자 폭으로 계산할 것인지와 어떤 문자 폭을 기준으로 할 것인가를 지정합니다. 탭 크기가 클수록 탭간의 간격이 넓어집니다. 탭 폭의 기준은 문자 평균폭 또는 공백폭 중 하나를 선택할 수 있습니다. 디폴트 옵션은 평균 문자폭의 4배 크기로 탭 간격을 선택합니다.

취소 버퍼 크기

편집 동작을 기억할 취소 버퍼의 크기를 지정합니다. 이 용량이 클수록 취소할 수 있는 편집 동작의 단계가 많아지지만 사용하는 메모리는 더 많아집니다.

찾기 대화상자의 첫 위치

검색/찾기 또는 검색/바꾸기 명령으로 찾기 대화상자를 열 때 최초 어느 위치에 열 것인가를 지정합니다. 디폴트 옵션은 메인 윈도우의 오른쪽 위이며 텍스트를 편집하는 영역과 가급적이면 겹치지 않도록 되어 있습니다. 두 번째 이후 찾기 명령을 실행할 때는 최후 열렸던 위치에 다시 열립니다.

탭 입력시 공백 문자 입력

일정한 간격으로 탭을 띄우지 않고 공백 문자를 삽입하여 간격을 띄웁니다. 이렇게 작성한 문서는 탭 설정이 다른 편집기에서 열어도 항상 일정한 모양을 유지한다는 장점이 있으나 문서량이 커지고 커서 이동이 불편해집니다.

입력중에 자동 들여쓰기

C/C++ 언어의 { } 괄호처럼 블록을 구성하는 문자가 입력되었을 때 자동으로 들여쓰기를 함으로써 소스의 물리적인 모양을 보기 좋게 작성합니다.

Tab/Shift+Tab으로 통째로 들여쓰기/내어쓰기

선택영역이 있는 상태에서 Tab키를 누르면 선택영역의 모든 문단 앞쪽에 Tab 문자를 일괄 삽입하여 블록 전체를 들여씁니다. 이 옵션을 선택하지 않으면 선택 블록이 삭제되고 Tab문자 하나만 남습니다.

Home키로 줄 첫 문자로 가기

Home키를 눌렀을 때 줄의 첫 문자가 있는 위치로 이동합니다. 이 옵션이 선택되어 있지 않으면 줄의 처음으로 이동합니다. 줄 앞쪽에 공백이 있거나 들여쓰기된 문단은 Home키로 눌렀을 때 이동하는 위치가 달라집니다.

현재 위치의 단어로 찾을 대상 초기화

찾기 대화상자를 띄울 때 캐럿이 있는 위치의 단어를 자동으로 검색 대상 문자열로 선택합니다.

다음/이전 찾기는 현재 단어를 대상으로

다음 찾기(F3), 이전 찾기(Shift+F3)를 할 때 캐럿이 있는 위치의 단어를 대상으로 다음, 이전 찾기를 수행합니다.

마우스로 선택영역을 드래그하여 복사 및 이동하기

선택영역을 드래그해서 드롭하면 문장을 이동하며 Ctrl키를 누른 채로 드롭하면 복사합니다. 이 옵션을 선택하지 않으면 선택영역을 드래그할 수 없습니다.

자동개행된 줄에서 좌우 이동시 줄 끝과 다음줄 처음을 구분하기

자동개행된 줄의 끝 위치와 다음 줄의 시작 위치는 문서상의 실제 위치가 같습니다. 따라서 좌우 이동 명령으로 줄 끝으로는 사실상 이동할 수 없으나 이 옵션을 선택하면 두 위치를 다르게 구분합니다. 단, 이 옵션 선택 여부와 상관없이 Home, End는 줄 처음과 끝을 구분합니다.

검색 실패시 경보음 울리기

찾는 문장이 없을 경우 스피커를 통해 실패 경보음을 울립니다.

드래그 버튼 교체

마우스로 문장을 드래그하여 드롭하면 이동이며 Ctrl키를 누른채로 드롭하면 복사이나 이 옵션을 선택하면 반대로 동작합니다. 문장을 드래그하여 복사할 경우가 훨씬 더 많다면 이 옵션을 선택해 놓고 드래그 & 드롭만으로 쉽게 복사할 수 있습니다.

3.보기 모드

.헥사뷰

당근은 16진 보기 모드를 지원하여 임의의 이진 파일도 편집할 수 있으며 텍스트 파일의 문자 코드를 직접 수정할 수도 있습니다. 이진 파일을 열면 자동으로 헥사 뷰 상태로 열리며 보기/헥사뷰(Ctrl+H) 명령으로 헥사 뷰와 텍스트 뷰 사이를 토글할 수 있습니다.

왼쪽에는 파일 선두를 0번지로 한 오프셋이 표시되며 중앙에 파일의 실제 내용이 16진수로 덤프되며 오른쪽 열에는 파일 내용이 텍스트 형태로 출력됩니다. 줄당 바이트 수나 바이트 구분선 삽입 여부, 16진수의 대소문자는 기본 설정의 보기 페이지에서 선택할 수 있습니다.

헥사 뷰에서의 편집은 기본적으로 겹침 모드로 동작하며 Ins 키로 삽입 모드로 변경합니다. 선택이나 클립보드 동작, 북마크 조작 등은 텍스트 뷰의 경우와 동일합니다. 단, 팝업 메뉴에 16진 덤프된 모양 그대로 복사할 수 있는 덤프 복사 명령을 추가로 사용할 수 있습니다.

이 명령을 사용하면 선택이 걸친 모든행의 16진 덤프를 텍스트 형태로 클립보드에 그대로 복사합니다. 파일의 실제 내용이 아닌 덤프 텍스트가 필요할 경우 이 명령을 사용하십시오.

헥사 뷰에는 개행 코드로 분리된 문단의 개념이 없기 때문에 열모드나 들여쓰기, 내어쓰기, 문단 재구성 등의 명령은 사용할 수 없습니다.

.창 분할

당근의 편집창은 최대 4개로 분할 가능하여 동일 문서의 각각 다른 4 부분을 보며 편집할 수 있습니다. 분할을 시작할 때는 수직 스크롤 바 위, 수평 스크롤 바 왼쪽에 있는 스플릿 박스를 드래그하여 분할하고자 하는 위치에 드롭합니다. 또는 스플릿 박스를 더블클릭하여 절반으로 분할할 수도 있습니다.

분할된 각 창은 보기 상태, 스크롤 위치, 선택 영역, 캐럿 등을 개별적으로 가질 수 있습니다. 다음은 4개의 창으로 분할하여 한쪽은 헥사 뷰, 나머지는 텍스트 뷰로 편집하고 있는 모습입니다.

분할된 창의 한쪽에서 문서를 편집하면 나머지 창에도 편집 내용이 즉시 반영됩니다. 긴 소스의 각기 다른 부분을 보며 편집하고 싶을 때 이 기능을 사용하면 편리합니다. 분할된 창 사이를 이동할 때는 창/다음뷰(F6), 이전뷰(Shift+F6) 명령을 사용합니다.

분할된 창 사이의 스플릿 바를 드래그하면 분할 비율을 언제든지 변경할 수 있으며 한쪽을 아주 작게 만들면 분할이 취소됩니다. 또는 스플릿 바를 더블클릭하여 분할을 취소할 수도 있습니다.

.보기 옵션

당근은 외부적인 모습을 사용자의 기호에 맞게 지정할 수 있는 여러 가지 보기 옵션을 제공합니다. 기본 설정의 보기, 모양, 툴바, 색상 페이지에서 이 옵션들을 기호에 맞게 선택할 수 있습니다.

비활성화시 선택영역

당근이 포커스를 가지고 있지 않을 때 선택영역을 어떻게 처리할 것인가를 지정합니다. 항상 표시하면 선택영역을 언제나 볼 수 있어 편리하지만 때로는 지저분해 보일 수도 있습니다. 흐리게 표시는 포커스를 잃을 때 선택영역의 색상을 회색으로 변경하며 선택영역 숨김은 선택영역을 표시하지 않습니다. 단, 어디까지나 선택영역 표시만을 숨길 뿐이지 선택 자체가 취소되는 것은 아닙니다.

현재행 강조

캐럿이 있는 행을 강조하는 방식을 지정합니다. 디폴트로 이 옵션은 선택되어 있지 않지만 다음과 같은 여러 가지 강조 방식을 선택할 수 있습니다.

  

 

비활성화시 현재행 표시 숨김

선택영역 숨기기 기능과 마찬가지로 당근이 활성화되어 있지 않을 때 선택영역 표시를 제거합니다.

자동 개행 방식

자동 개행 기능이란 문단의 오른쪽 끝이 편집창의 폭보다 더 길어 화면에 다 표시하지 못할 때 자동으로 다음줄에 문단의 뒷부분을 표시하는 기능입니다. 자동 개행 방식은 한글과 영문에 대해 어디서 자동 개행할 것인가를 지정합니다. 디폴트는 한글 글자, 영문 단어이나 각각 글자, 단어 단위로 변경할 수 있습니다.

자동개행된 줄 처음에 공백 금지

줄 처음에 공백이 올 경우 앞 줄의 문자를 빌려와 공백이 줄 선두에 오지 않도록 합니다.

자동 개행 열

지정한 열에서 강제로 자동 개행합니다. 편집창의 크기와 상관없이 일정한 폭에서 자동 개행하고 싶을 때 이 옵션을 선택합니다.

열 표시선

지정한 열에 회색 수직선을 긋습니다. 표시선은 어디까지나 편집을 위한 참고 표시일 뿐 자동 개행 자체에는 영향을 주지 않습니다. 다음은 자동 개행열을 40컬럼에 지정하고 여기에 표시선을 그은 것입니다.

글꼴

텍스트 출력에 사용할 글꼴을 선택합니다. 서체, 크기, 굵게, 기울임, 장평 등을 선택할 수 있습니다. 편집에 가장 편리하고 읽기 쉬운 글꼴을 선택하여 사용하십시오.

줄간, 자간, 단어간격

줄 사이의 간격과 글자 사이의 간격, 단어 사이의 간격을 지정합니다. 모두 백분율입니다.

캐럿폭

현재 위치를 나타내는 캐럿의 폭을 지정합니다. 2픽셀이 가장 무난하나 캐럿이 잘 보이지 않거나 큰 글꼴을 사용한다면 캐럿의 크기도 적당히 크게 하는 것이 좋습니다.

헥사 뷰

헥사 뷰 출력에 사용되는 보기 옵션입니다. 줄당 몇 바이트씩 출력할 것인가와 바이트 구분선은 매 몇 바이트마다 출력할지, A~F 까지의 16진 문자는 대문자로 표시할 것인지를 선택합니다.

.모양 옵션

편집영역 안쪽 여백

편집창과 편집영역과의 거리를 지정합니다. 이 값이 너무 작으면 문장이 경계선에 밀착되어 읽기 어려우므로 적당히 간격을 띄우는 것이 좋습니다. 상하좌우 각각에 대해 0~32까지의 간격을 지정할 수 있습니다.

배경 그림

편집창의 배경에 비트맵 그림을 출력합니다. 샘플 중 하나를 선택할 수도 있고 외부의 비트맵 파일을 지정할 수도 있습니다. 그림 배치 방식은 배경에 출력할 그림의 개수와 위치를 지정합니다. 다음은 "아기" 샘플 비트맵을 오른쪽 아래와 반복 스크롤 방식으로 배치한 것입니다.

비트맵이 너무 짙으면 텍스트를 읽기 어려우므로 편집에 방해가 되지 않는 곳에 가급적 밝은 색상의 비트맵을 사용하는 것이 좋습니다. 반복 스크롤은 비트맵이 문서와 함께 스크롤되는 방식입니다.

눈금자 표시, 마진 영역 표시, 줄번호 보기

편집기의 상단과 왼쪽에 눈금자와 마진을 출력합니다. 줄번호 보기는 마진에 문서의 줄 번호를 출력하며 소스를 볼 때 편리합니다. 다음은 눈금자, 마진, 줄번호를 모두 출력한 것입니다.

눈금자에는 평균 문자폭을 기준으로한 컬럼 번호가 나타납니다.

개행 코드, 탭 코드, 공백 코드 표시

문서상의 제어 코드를 표시합니다. 개별적으로 이 옵션을 선택할 수 있으며 이 옵션은 열려진 모든 창에 적용됩니다. 현재 창에 대해서만 임시적으로 제어 코드를 보고자 할 때는 보기/제어코드보기(Ctrl+E) 명령을 선택하십시오. 다음은 모든 제어코드를 출력한 것입니다.

선택 블록의 모양

선택 블록의 높이와 외곽선 여부를 지정합니다. 다음 세 가지 중 하나를 선택할 수 있습니다.

  

 

글자의 위치

줄간이 클 경우 줄 높이의 어디에 문자열을 배치할 것인가를 지정합니다. 일반적으로 가운데 위치가 가장 무난합니다.

  

.툴바 설정

당근의 위쪽에는 툴바가 있으며 아래쪽에는 상태란이 있습니다. 툴바 페이지에서는 상태란과 툴바와 모양과 정보의 종류를 선택합니다.

툴바에 대한 옵션은 큰 아이콘 옵션과 설명 표시 옵션밖에 없습니다. 모니터의 해상도가 충분히 높다면 큰 툴바와 설명을 사용하는 것이 편리합니다.

상태란에는 표시할 필드를 선택할 수 있고 각 필드의 폭과 모양, 정렬 방식, 순서를 편집할 수 있습니다. 다음은 선택영역 정보와 현재 위치, 클립보드 내용을 상태란에 표시한 것입니다. 선택영역 정보는 양각으로 강조했으며 현재 위치는 오른쪽으로 정렬했습니다.

모니터의 폭이 충분히 넓다면 상태란에 가급적 많은 내용을 표시할 수 있습니다.

.색상 설정

색상 페이지에서는 당근의 각 부분 색상을 선택합니다.

디폴트는 미리 주어진 기본색이며 콤보 박스를 펼쳐 색상을 선택하거나 사용자 정의색으로 임의의 색상을 선택할 수 있습니다.

.신택스 컬러링

당근은 문서의 종류에 따라 구문 강조 기능을 제공하며 단어의 문법적 성격에 따라 다른 색상으로 출력합니다. 문법 페이지에서는 분석기가 단어 출력에 어떤 색상을 사용할 것인가를 지정합니다.

중앙의 리스트 뷰에서 색상 박스를 클릭하면 색상을 선택할 수 있는 메뉴가 열리며 이 메뉴에서 색상을 변경하면 분석기의 색상이 즉시 변경됩니다.

.읽기 모드

읽기 모드란 긴 문서를 읽을 때 자동으로 스크롤하는 기능입니다. 도구/읽기 모드 명령을 선택하면 다음과 같은 대화상자가 실행되며 읽기 모드 상태가 됩니다.

읽기 모드에서는 미리 지정한 글꼴과 줄간으로 전환되며 이 대화상자에서 글꼴을 즉시 변경할 수 있습니다. 자동 스크롤 기능을 사용하면 지정한 시간에 지정한 줄 수만큼 자동으로 스크롤되므로 키보드에 손대지 않고도 스크롤되는 문서를 편하게 읽을 수 있습니다. 만약 스크롤 속도보다 더 빨리 읽었다면 "줄 아래로" 버튼을 사용하여 수동으로 스크롤할 수도 있습니다.

이 대화상자에서 설정한 옵션은 읽기 모드의 고유한 설정으로 기억되며 다음번 읽기 모드에 그대로 적용됩니다. 대화상자를 닫으면 읽기 모드가 종료됩니다. 읽기 모드에서는 문서를 편집할 수 없습니다.

4.검색

.찾기

문서에서 특정 문자열을 검색할 때는 검색/찾기(Ctrl+F) 명령을 선택합니다. 편집창 오른쪽 위에 찾기 대화상자가 열립니다.

이 대화상자에서 검색 대상과 옵션을 선택합니다.

현재 위치에서 위쪽으로 검색 : 이 옵션을 선택하면 캐럿 위치의 위쪽으로 역방향 검색을 수행합니다. 선택하지 않을 경우 아래쪽으로 검색합니다.

공백으로 구분된 완전한 단어만 검색 : 다른 문장에 포함된 단어는 검색하지 않습니다. 예를 들어 "당근" 에 대해 검색할 때 "당근 편집기", "멋쟁이 당근" 등은 검색되지만 "당근이 좋다", "당근이지" 등에 포함된 당근은 검색되지 않습니다.

영문 대/소문자 구분 : 영문자의 대소 구분없이 검색합니다. 이 옵션이 선택되어 있지 않으면 "Korea" 검색에 대해 Korea, korea, KOREA 등이 모두 검색되나 대소문자를 구분하면 Korea만 검색됩니다.

파일 끝에서 찾지 못할 경우 처음부터 검색 : 현재 캐럿 위치에서 검색을 시작하여 문서 끝까지 검색했으나 발견되지 않을 경우 문서 처음부터 다시 검색합니다. 위쪽으로 검색할 때도 마찬가지로 문서 처음까지 검색해도 발견되지 않으면 문서 끝에서부터 다시 검색합니다.

검색이 완료된 후에 대화상자 닫기 : 찾기 대화상자는 기본적으로 모델리스로 동작하므로 검색이 끝난 후에도 포커스를 계속 가집니다. 검색 후 곧바로 편집을 하고 싶으면 이 옵션을 선택하여 검색 후 대화상자를 바로 닫습니다.

 

찾을 내용 콤보 박스에는 문자열 외에도 제어코드나 16진 코드를 포함할 수도 있습니다. 제어코드는 모두 \로 시작되며 찾을 내용 콤보 박스 오른쪽의  버튼을 누르면 제어코드를 입력할 수 있습니다.

찾을 내용 콤보 박스는 이전에 입력했던 내용을 모두 기억하므로 검색했던 단어를 다시 검색할 때 목록에서 하나를 고를 수 있습니다.

모두 찾기 버튼은 문서에 나타난 모든 단어를 검색하여 별도의 출력창에 결과를 표시합니다.

출력창의 항목을 더블클릭하면 검색된 위치로 즉시 이동합니다. 이외에도 다음과 같은 검색 명령을 제공합니다.

 

다음 찾기(F3) : 직전에 찾았던 단어의 다음 위치를 검색합니다.

이전 찾기(Shift+F3) : 직전에 찾았던 단어의 이전 위치를 검색합니다.

다음 단어 찾기(Ctrl+F3) : 현재 캐럿이 있는 위치 또는 선택된 단어의 다음 위치를 검색합니다.

이전 단어 찾기(Ctrl+Shift+F3) : 현재 캐럿이 있는 위치 또는 선택된 단어의 이전 위치를 검색합니다.

 

줄 찾기 명령(Ctrl+G)은 대화상자에서 입력한 줄로 즉시 이동합니다.

괄호 짝찾기 명령(Ctrl+B)은 (), {},[],<> 등 짝을 맞춰 사용되는 괄호의 상대편 짝을 찾으며 프로그래밍 소스를 편집할 때 블록의 시작과 끝을 찾을 때 편리합니다. Ctrl+Shift+B는 괄호의 짝을 찾아 블록 전체를 선택합니다.

마지막 편집 위치(Ctrl+Q)는 최후로 삽입 및 삭제한 위치로 이동합니다. 문서를 스크롤했더라도 Ctrl+Q를 누르면 최후로 편집한 곳을 빠르게 찾을 수 있습니다.

.바로 찾기

바로 찾기(F4)는 문자열을 입력하는 즉시 원하는 문자열을 검색하여 이동하는 기능입니다. F4키를 누르면 상태란의 첫 번째 칸에 바로찾기 입력란이 생성됩니다.

여기에 원하는 문자열을 입력하는 즉시 문서에서 최초로 발견되는 곳으로 이동합니다. 별도의 대화상자를 열지 않고 검색식을 입력하며 결과를 편집창에서 직접 확인할 수 있으므로 가장 빠른 검색 방법입니다.

검색중에 Esc나 Enter를 누르면 검색이 종료되고 편집창으로 돌아갑니다. 검색식을 다시 입력하고 싶을 때는 Tab키를 누릅니다. 검색된 단어의 다음, 이전 찾기를 하려면 아래, 위 커서 이동키를 눌러 다음, 이전 찾기를 즉시 수행할 수 있습니다.

.바꾸기

바꾸기는 특정 문자열을 찾아 다른 문자열로 변경하는 기능입니다. 검색/바꾸기 명령(Ctrl+R)을 선택하면 다음 대화상자가 나타납니다.

찾기 대화상자와 유사하나 바꿀 내용 에디트가 추가로 배치되어 있다는 점이 다릅니다. 바꿀 내용에 변경할 문자열을 입력하되 이 란을 비워두면 검색된 문자열을 모두 삭제합니다. 검색 관련 옵션은 찾기 대화상자의 경우와 동일하며 모두 바꾸기 버튼은 문서 전체를 대상으로 치환합니다.

.파일검색

파일 검색 기능(Ctrl+Shift+F)은 특정 디렉토리의 조건에 맞는 파일들을 대상으로 검색을 수행합니다.

찾기 대화상자와 유사하나 시작 폴더와 대상 파일의 조건을 입력하는 콤보 박스가 더 있습니다. 검색을 시작할 폴더는 찾아보기 버튼을 눌러 선택하거나 아니면 탐색기에서 폴더를 드래그하여 지정할 수도 있습니다. 두 콤보 박스는 전에 입력했던 내용을 기억하므로 이미 검색했던 디렉토리를 다시 검색할 때 편리합니다. 단어 검색, 대소문자 구분 검색 옵션 외에도 파일 검색에 사용하는 두 개의 옵션을 추가로 지정할 수 있습니다.

하위 폴더도 검색 : 시작 폴더의 서브 디렉토리들도 모두 검색합니다.

시작 폴더를 기준으로 한 파일명 표시 : 검색 결과 파일을 완전 경로로 표시하지 않고 시작 폴더를 기준으로 한 상대 경로로 표시합니다.

검색 결과는 화면 아래쪽의 검색 결과찾에 나타납니다.

이 창에서 항목을 더블클릭하면 검색된 파일을 즉시 열 수 있으며 검색 결과를 텍스트로 복사하거나 새 창으로 열 수도 있습니다.

파일에서 바꾸기는 모든 파일의 특정 문자열을 다른 문자열로 변경합니다.

5.단축키

.단축키 재정의

당근은 빠른 명령 수행을 위해 각 메뉴 명령에 단축키를 제공할 뿐만 아니라 사용자가 단축키를 변경하거나 새로운 단축키를 만들 수도 있습니다. 단축키 관리를 위해 도구/단축키 정의 명령을 실행합니다.

단축키 목록 대화상자는 현재 할당되어 있는 단축키의 목록을 표시하며 단축키를 관리하는 명령들을 제공합니다. 새로운 단축키를 추가하려면 추가 버튼을 누릅니다. 파일/새 이름으로 명령에는 별도의 단축키가 할당되어 있지 않은데 이 명령에 F12 단축키를 할당하려면 단축키 추가 대화상자에서 다음과 같이 입력합니다.

위쪽에서 단축키로 사용할 가상키와 조합키의 목록을 선택하고 아래쪽에서 메뉴 항목이나 매크로 명령을 작성합니다. 이 단축키를 정의하면 새 이름으로 저장하기 명령에 F12 단축키가 할당되며 메뉴에도 이 단축키에 대한 설명이 표시됩니다.

수정 버튼은 단축키를 다른 명령으로 수정하며 삭제 버튼은 단축키를 삭제합니다. 당근의 기본 단축키 설정으로 돌아가려면 기본 버튼을 누릅니다.

한번 변경된 단축키 설정은 레지스트리에 저장되므로 다음번 당근을 실행할 때도 그대로 유지됩니다.

.명령모드

명령모드는 A~Z, 1~0 등 일반적으로 문자 입력에 사용하는 키에도 단축키를 할당할 수 있는 모드입니다. 이 모드에서 문자키는 문자 입력으로 해석되지 않으며 명령으로 해석됩니다. 명령 모드를 토글하려면 편집/명령 모드(Alt+X) 명령을 선택합니다.

기본적으로 제공되는 명령 모드 중 D는 줄 끝까지 삭제하며 Shift+D는 문단 끝까지 삭제합니다. J는 현재 문단을 복사하여 아래쪽에 사본 문단을 만들며 O는 한 줄을 복사합니다. 매크로 명령과 명령 모드를 결합하여 사용하면 Ctrl, Alt, Shift 등의 조합키를 누르지 않고도 여러 가지 복잡한 편집 명령들을 수행할 수 있습니다.

예를 들어 복사와 붙여 넣기, 잘라내기 동작만 반복적으로 수행해야 한다면 오른손으로 마우스를 조작하고 왼손으로 X, C, V 키만 눌러 빠르게 작성할 수 있습니다.

6.매크로

.매크로

매크로는 반복적인 편집 작업들을 하나의 이름으로 등록해 놓는 기능입니다. 매크로 관리를 하려면 도구/매크로 명령을 선택합니다. 매크로를 관리하는 다음 대화상자가 나타납니다.

매크로 콤보 박스에서 편집 대상 매크로를 선택합니다. 처음 설치했을 경우 등록된 매크로는 하나도 없으므로 새 매크로 버튼을 눌러 매크로를 하나 만듭니다.

매크로의 이름과 단축키를 지정할 수 있습니다. 매크로는 반복적으로 사용되는 것이 보통이므로 빈 단축키 하나를 지정하는 것이 좋습니다. 확인 버튼을 눌러 매크로를 만든 후 매크로의 내용에 다음과 같이 명령을 입력합니다.

 

move right 2

 

이 명령은 캐럿을 두 칸 오른쪽으로 이동하라는 뜻입니다. 이후 Ctrl+D를 누르면 캐럿이 두 칸 오른쪽으로 이동합니다. 매크로를 수정하거나 편집하려면 다시 매크로 관리 대화상자를 호출하며 이 대화상자에서 매크로를 여러 번 실행할 수도 있습니다.

.매크로 기록

매크로는 편집 동작 여러 개를 묶어서 기록해 놓은 것입니다. 편집 동작들은 간단한 키워드로 표시되는데 사용자들이 이 문법을 익히기 어려우므로 보통 실제 동작을 키워드로 바꾸어 기록하는 것이 보통입니다. 당근은 이를 위해 사용자의 편집 동작을 항상 기록하여 매크로 후보 명령으로 관리하고 있습니다. 이 후보 명령들 중 일부를 매크로에 기록하면 이후부터 매크로를 통해 명령들을 반복 실행할 수 있습니다.

예를 들어 좌우의 문자를 바꾸는 작업을 자주 한다고 가정합시다. "한국"을 "국한"으로 "당근"을 "근당"으로 바꾸는 편집 동작이 필요하다면 사용자는 캐럿을 두 문자의 중간에 두고 다음과 같이 편집합니다.

 

Shift키와 오른쪽 커서 이동키를 눌러 "국"자를 선택합니다.

이 문자를 잘라냅니다.

한칸 왼쪽으로 이동하여 "한"자의 앞쪽으로 이동합니다.

잘라낸 "국"자를 이 위치에 붙입니다.

 

이 동작을 한 후 매크로 관리 대화상자를 열어 보면 사용자의 편집 동작이 후보 명령으로 기록되어 있습니다. 새 매크로 버튼을 눌러 "좌우바꿈"이라는 매크로를 만들고 단축키 F7을 지정해 놓습니다.

그리고 최근 편집 동작의 4개 명령을 선택하여 "선택된 최근 편집 동작 추가" 버튼을 누르면 이 명령들이 매크로의 내용으로 등록됩니다. 이 매크로를 저장하면 이후 단축키 F7을 눌러 즉시 좌우의 두 글자를 교환할 수 있습니다.

최근 편집 동작은 32개까지만 저장됩니다. 이 중 매크로에 포함하고자 하는 명령들을 선택하여 매크로의 내용으로 추가합니다. 물론 추가한 후 직접 편집할 수도 있습니다.

.명령의 추가

당근의 매크로는 아주 간단한 스크립트 형태로 되어 있으며 별도로 공부하지 않아도 의미를 쉽게 알 수 있는 영어 키워드로 되어 있습니다. 하지만 명령 목록을 일일이 외울 수는 없으므로 명령을 작성할 수 있는 대화상자가 제공됩니다. 매크로 관리창의 명령추가 버튼을 누르면 다음 대화상자가 나타납니다.

당근의 명령들은 "동사+목적어+회수"의 간단한 문법 구조를 가집니다. 예를 들어 오른쪽으로 두 칸 이동은 move right 2이며 scroll down 2는 두 칸 아래로 이동하라는 명령입니다. 이 대화상자에서 동작을 선택하면 오른쪽에 동작의 목적어들이 나열되므로 이 목록에서 목적어를 고르기만 하면 명령이 작성됩니다. 명령에 따라 목적어외에 옵션이 추가로 지정되는 것들도 있습니다.

복잡한 명령들도 대화상자의 컨트롤로 명령 구문을 쉽게 만들 수 있습니다. 이 대화상자는 단축키 편집시에도 사용할 수 있으며 각 단축키에 여러 개의 명령을 직접 삽입할 수 있습니다.

초기에는 이 대화상자를 통해 매크로 구문을 작성하고 익숙해지면 매크로 관리대화상자에 스크립트를 직접 작성할 수도 있습니다.

7.상용구

.상용구 기능

상용구란 자주 사용하는 문장을 모아 놓은 문장의 집합입니다. 당근과 함께 배포되는 Sample.dgc 파일에는 샘플 상용구들이 들어 있으며 상용구 묶음은 상용구창에 나타납니다. 하나의 상용구 묶음에는 무한대의 상용구를 저장할 수 있으며 계층적인 구조를 가집니다.

이 창에서 상용구를 더블클릭하면 저장된 문장이 편집창에 삽입되거나 새로운 편집창을 열어 상용구를 열어 줍니다. 상용구는 문장을 저장하고 있을 뿐만 아니라 상용구 삽입후의 캐럿 위치나 선택영역에 대한 정보도 포함되어 있습니다. 예를 들어 인사말 상용구를 더블클릭하여 삽입하면 다음과 같은 문자열이 삽입되고 아무개 문자열이 선택됩니다.

선택되어 있는 아무개 대신에 자신의 이름을 입력하면 인사말이 완성됩니다. switch 상용구를 삽입하면 미리 저장된 코드가 입력되고 제어 변수 자리로 캐럿을 옮겨 괄호안을 채울 수 있도록 합니다.

상용구 묶음 파일의 확장자는 dgc이며 파일/열기 명령으로 이 파일을 열면 상용구 창에 나타납니다. dgc 파일은 디폴트로 당근과 연결되어 있으므로 탐색기에 더블클릭만해도 즉시 열 수 있습니다. 상용구 창의 팝업 메뉴로 상용구 묶음을 관리합니다.

상용구 관리 항목을 선택하면 상용구 묶음내의 상용구를 편집할 수 있습니다.

.상용구 편집

상용구 관리 대화상자는 도구/상용구 관리 명령으로 열 수도 있고 상용구창의 팝업 메뉴에서 상용구 관리 항목을 선택하여 열 수도 있습니다. 새로운 상용구 묶음을 만들거나 상용구 창에 열려 있지 않은 묶음을 관리할 때는 도구 메뉴에서 열고 이미 열려진 상용구 묶음을 편집하려면 팝업 메뉴를 사용하는 것이 편리합니다. 샘플 상용구를 열면 다음 대화상자가 나타납니다.

위쪽에 상용구 묶음에 대한 정보가 표시되어 있으며 아래쪽에는 묶음내의 상용구가 계층적으로 표시됩니다. 트리에서 상용구를 선택하면 미리 보기를 할 수 있습니다. 묶음에는 임의 개수의 폴더와 상용구를 저장할 수 있으며 폴더 안에는 또 다른 폴더와 상용구를 둘 수 있습니다. 마치 하드 디스크의 폴더 구조처럼 비슷한 상용구끼리 폴더를 구성해 놓으면 찾기 편합니다.

트리에서 상용구를 드래그하면 위치를 옮깁니다. 상용구를 편집할 때는 대상 상용구를 트리에서 선택한 후 편집 버튼을 누르십시오. 다음과 같은 편집 대화상자가 나타납니다. 이 대화상자에서 상용구의 내용과 속성을 편집합니다.

상용구 내용에는 삽입할 문장을 작성하되 이 문장내에 ^|^ 라는 특수한 표식을 두 개까지 삽입할 수 있습니다. ^|^ 표식이 하나만 있으면 상용구 삽입 후 표식 위치로 캐럿을 옮기며 두 개 있으면 두 표식 사이의 문장을 선택합니다.

문법은 미리 보기란에 상용구를 표시할 때 구문 분석기를 지정하며 기본 동작은 상용구 창에서 더블클릭했을 때의 동작을 지정합니다. 다음 세 가지 동작을 지정할 수 있습니다. 상용구의 용도에 맞게 동작을 지정하십시오.

 

동작

설명

삽입

편집창의 현재 위치에 상용구 문장을 삽입합니다. 대개의 경우 짧은 문자열은 동작으로 편집창에 삽입합니다.

복사

클립보드로 복사만 합니다. 당근 이외의 프로그램에 사용할 상용구라면 클립보드로 복사만 넣을 수도 있습니다.

파일로

새로운 파일을 만들고 상용구 문장을 삽입합니다. , 상용구 내용을 기본으로 가지는 새로운 파일을 작성합니다. 프로그래밍 시작 소스나 HTML 시작 페이지 형식이 일정한 문서를 만들 동작을 사용하면 편리합니다.

 

자동 삽입명은 자동 상용구 삽입에 사용되는 상용구의 이름입니다.

.자동 상용구

자동 상용구 기능은 상용구 창을 통하지 않고 편집창에서 곧바로 상용구를 삽입할 수 있는 기능입니다. 모든 상용구에는 자동 삽입명이 부여되어 있으며 이 자동 삽입명이 입력되면 삽입명 대신 해당 상용구를 즉시 삽입합니다. 예를 들어 샘플의 인사말은 "--인사"라는 삽입명이 지정되어 있으므로 편집창에서 "--인사"를 입력한 후 Tab키를 누르면 이 삽입명을 가진 상용구가 삽입됩니다.

 

같은 원리로 for나 switch를 입력한 후 Tab키를 누르면 미리 지정된 코드가 삽입됩니다. 이 기능을 사용하려면 동작 페이지의 "자동 상용구 삽입 기능 사용" 옵션을 선택해 두어야 하며 Tab 또는 Space키로 상용구 삽입 키를 지정해 두어야 합니다.

자동 상용구 기능은 상용구창에 열려진 묶음을 대상으로 하여 동작합니다. 따라서 삽입하고자 하는 상용구 묶음이 상용구 창에 미리 열려 있어야 합니다. 한 번 읽은 상용구 묶음은 일부러 닫지 않는한 계속 상용구 창에 남아 있습니다.

8.인쇄

.문서 인쇄

편집하던 문서를 인쇄할 때는 파일/인쇄 명령을 선택합니다. 프린터 선택 대화상자에서 출력에 사용할 프린터를 선택하면 지면에 문서가 인쇄됩니다. 다음은 가사.txt라는 파일을 궁서체 폰트로 설정한 후 인쇄한 것입니다.

여러 페이지로 된 문서도 물론 인쇄할 수 있으며 인쇄중 대화상자에서 취소할 수도 있습니다.

.인쇄 옵션

인쇄에 사용할 용지의 크기, 방향, 해상도 등은 프린터 드라이버에서 지정한 설정을 그대로 따릅니다. 단, 몇가지 옵션은 당근 내부에서 변경할 수 있습니다. 인쇄 관련 옵션은 기본 설정의 인쇄 페이지에 있습니다.

용지 여백 : 용지의 여백을 밀리미터 단위로 지정합니다. 프린터에 선택된 용지에서 여백을 제외한 부분에 문자열을 정렬하여 배치합니다.

인쇄 글꼴 : 인쇄에 사용할 글꼴을 지정합니다. 화면의 글꼴과 같은 글꼴을 사용할 수도 있고 별도의 인쇄 글꼴을 따로 지정할 수도 있습니다. 화면 글꼴을 사용할 경우 편집창에서 임시적으로 변경한 글꼴을 그대로 사용하여 인쇄합니다.

머리말, 꼬리말 : 본문의 위쪽과 아래쪽에 출력할 문자열을 지정합니다. 단순한 문자열을 지정할 수도 있고 [ ] 괄호로 둘러싸인 예약어를 삽입하여 파일명, 경로, 인쇄 날짜, 시간, 쪽 번호 등을 출력할 수도 있습니다. 또한 정렬 예약어로 문자열을 좌, 우, 중앙으로 정렬할 수 있습니다. 머리말, 꼬리말과 본문 사이에는 수평 구분선을 그을 수 있습니다.

문법 분석 결과를 색상으로 출력 : 컬러 프린터를 사용할 경우 구문 분석된 결과대로 컬러 출력합니다.

왼쪽 여백에 줄번호 출력 : 용지의 왼쪽에 줄 번호를 출력합니다.

머리말, 꼬리말은 항상 시스템 글꼴로 출력 : 이 옵션을 선택하지 않으면 본문과 같은 글꼴로 출력합니다.

기본 프린터로 바로 인쇄 : 프린터 선택 대화상자를 보이지 않고 기본 프린터로 즉시 출력합니다.

배경 텍스트 : 용지의 중앙에 굵은 글꼴로 지정한 문장을 출력합니다.

개행 방식 : 용지폭을 기준으로 문서를 어떻게 정렬할 것인가를 지정합니다. 문서 모양 그대로 출력할 경우 용지의 폭보다 긴 문장이 잘릴 수도 있습니다.

9.문단 재구성

.병합

문단 재구성 기능은 개행 코드나 공백을 적절히 조정하여 문단을 보기 좋게 만드는 기능입니다. 인터넷의 게시물이나 강좌 같은 텍스트는 읽기 쉽게 하기 위해 문단 사이에 여백을 너무 많이 넣거나 강제 개행이 심해 읽기 불편하고 인쇄할 때 지면이 지나치게 낭비됩니다. 이럴 때 문단 재구성 기능을 사용하면 문단 모양을 보기 좋게 다듬을 수 있습니다.

도구/문단 재구성 메뉴 항목을 선택하면 문단을 관리할 수 있는 대화상자가 나타나며 위쪽의 탭에서 다섯 가지 형태의 문단 관리를 할 수 있습니다. 보통 둘 이상의 명령을 조합해서 사용하는 경우가 많으므로 적용 후에도 대화상자는 계속 열린채로 남아 있습니다. 문단 재구성 명령은 선택영역의 문단을 대상으로 동작하되 선택영역이 없으면 문서 전체가 조정 대상입니다.

병합은 개행 코드를 제거하거나 대체하여 문단들을 하나로 합칩니다. 중앙의 옵션으로 개행 코드를 어떻게 처리할 것인가를 지정할 수 있습니다. 삭제하거나 공백, 탭, 기타 지정한 문자열로 대체할 수 있으며 개행 코드가 제거되면 문단들이 하나로 합쳐집니다. 둘 이상의 개행 코드가 연속될 경우 두 번째 개행 코드는 별도의 방식으로 처리할 수 있어 두 줄 이상 개행된 문단은 병합하지 않을 수도 있습니다.

.분할

분할은 병합과 반대로 문단들을 일정한 기준에 따라 강제로 분할하는 기능입니다. 특정 문자나 문자 수, 화면폭에 맞게 문단을 분할할 수 있습니다.

중앙의 분할 방법은 문단을 분할할 기준을 지정하며 아래쪽의 옵션은 들여쓰기 및 분할 후의 문단 선두 공백 처리 방식을 지정합니다. 다음 예제 텍스트는 하나의 문단에 여러 개의 문장이 포함되어 있습니다.

이런 텍스트를 게시판에 올리면 게시판의 폭이나 자동 개행 여부에 따라 오른쪽 끝이 너무 길어져 읽기에 쉽지 않은데 이럴 때 일정한 기준에 따라 문단을 강제 분할하면 훨씬 더 읽기 편리합니다. 다음은 40문자 폭에서 문단을 분할한 것입니다.

40컬럼 위치에 개행 코드를 삽입하여 문단을 짧게 만들었습니다. 화면 폭이나 마침표 기준 또는 현재 화면에 보이는 그대로 문단을 분할할 수도 있습니다. 다음 문장은 인터넷의 게시판에 올려진 것인데 강제 개행에 의해 문단 사이가 끊어져 있어 읽기 어렵습니다.

보기 좋게 재구성하기 위해 일단 이 문단들을 병합합니다. 모든 문단이 하나의 문단으로 합쳐집니다.

병합된 문단을 마침표를 기준으로 다시 분할합니다.

끊어진 문단들이 하나로 합쳐졌으며 마침표를 기준으로 내용이 다른 문단은 분할되어 읽기에 좋고 인쇄해도 지면을 낭비하지 않습니다.

.수평 정렬

수평 정렬 기능은 공백을 적절히 재배치하여 문단의 수평 정렬 방식을 변경합니다. 좌, 우, 중앙 세 가지의 정렬 방식 중 하나를 선택할 수 있으며 문자수나 화면폭을 기준으로 할 수 있습니다.

다음 텍스트는 짧게 끊어진 문단들로 구성되어 있으며 문단들이 모두 왼쪽으로 정렬되어 있습니다.

이 문단을 오른쪽으로 정렬하면 문단 선두에 일정한 길이가 되도록 공백이 삽입되어 문단 끝이 화면의 오른쪽 끝에 가지런히 정렬됩니다.

, 문자수를 기준으로 할 경우 고정폭의 글꼴을 사용해야 원하는 정렬 결과를 얻을 수 있으며 화면폭을 기준으로 할 경우 현재 글꼴을 기준으로 하므로 글꼴이 변경되면 정렬 방식이 달라질 수도 있습니다.

.크기순 정렬

크기순 정렬은 문단의 문자 크기를 기준으로 정렬(Sort)하는 기능입니다. 오름차순과 내림차순으로 정렬할 수 있으며 영문 대소문자 구분 옵션과 동일한 행 제거 옵션을 쓸 수 있습니다.

다음 문서는 중국집에서 판매하는 음식들의 이름을 나열해 놓은 것입니다.

이 문서를 오름차순으로 정렬하면 다음과 같이 문자 순서가 빠른 음식이 앞에 옵니다.

크기순으로 문단을 정렬하면 중복된 행을 쉽게 찾을 수 있으며 중복행 제거 옵션을 사용하면 두 번 이상 반복되는 행을 손쉽게 제거할 수도 있습니다.

.빈줄 조정

빈줄 조정 기능은 문단 사이의 개행코드들을 어떻게 처리할 것인가를 지정합니다. 최소 옵션은 지정한 빈줄 이상이 문단 사이에 있도록 하며 최대 옵션은 지정한 이상의 빈줄은 삭제합니다. 고정은 정확하게 지정한만큼의 빈줄만 넣습니다.

다음 문서는 문단 사이에 빈줄을 적당히 넣어 시원스럽게 편집된 문서입니다. 읽기에는 좋지만 인쇄할 때는 페이지 수가 많아져 좋지 않습니다.

이 문서를 고정 0줄로 빈줄 조정하면 모든 문단 사이의 빈줄이 삭제되고 문단들이 밀착합니다.

이 기능은 반대로 지나치게 밀착되어 있는 문서에 적당히 빈줄을 넣는 용도로도 사용할 수 있습니다.

10.네트워크

.서버 관리

당근은 FTP, HTTP 프로토콜로 원격지의 파일을 편집하는 기능을 제공합니다. FTP 서버의 파일을 액세스하려면 먼저 서버를 등록해야 합니다. 파일/FTP 열기 명령을 선택한 후 서버 추가 버튼을 누르면 다음과 같은 대화상자가 나타납니다.

이 대화상자에서 FTP 접속 정보를 입력하십시오. 익명 서버인 경우 사용자 ID는 Anonymous를 사용하고 비밀 번호는 자신의 e-mail 주소를 입력하며 계정이 있는 서버인 경우 자신의 계정과 비밀 번호를 입력하면 됩니다. 이렇게 입력된 정보는 FTP 파일 열기 대화상자의 접속 대상 콤보 박스에 나타납니다. 이미 입력한 서버 정보를 수정할 때는 서버 수정 버튼을 누르고 삭제할 때는 서버 삭제 버튼을 누릅니다.

당근은 한번 입력한 FTP 접속 정보를 레지스트리에 암호화하여 저장합니다. 비밀 번호와 계정 정보는 외부에서 알아볼 수 없도록 암호화되므로 보안상의 문제가 없습니다.

.원격지의 파일 편집

접속할 FTP 서버 정보를 입력한 후 FTP 파일 열기 대화상자의 연결 버튼을 누르면 해당 서버로 접속되며 서버의 루트 디렉토리 목록이 나타납니다.

이 디렉토리에서 탐색기처럼 하위 디렉토리로 이동하며 원하는 파일을 선택하여 열면 당근 텍스트 편집기로 파일이 즉시 열립니다. 해당 파일을 다운로드하여 메모리상에서 직접 편집할 수 있습니다.

원격지에서 다운로드받은 파일을 다시 올릴 때는 별도의 업로드를 할 필요없이 저장만 하면 됩니다. 당근은 원격지의 파일을 저장하면 자동으로 업로드합니다. 단, 이 동작이 가능하기 위해서는 FTP 서버에 쓰기 가능한 계정으로 로그인해야 합니다.

.파일 관리

FTP 파일 열기 대화상자를 사용하면 FTP의 파일들을 로컬 드라이브에서처럼 관리할 수 있습니다. 새 파일과 폴더를 생성할 수 있으며 이름을 변경하거나 삭제할 수도 있습니다. 또한 로컬 디렉토리로 다운로드할 수 있으며 로컬의 파일을 원격지로 업로드할 수도 있습니다.

다운로드할 때는 대상 파일을 선택해 놓고 다운로드 버튼을 누른 후 파일을 저장할 폴더를 지정합니다. 업로드는 별도의 UI가 없으므로 탐색기에서 파일을 드래그하여 FTP 파일 열기 대화상자로 드롭합니다. 현재 선택된 디렉토리에 드롭된 파일이 업로드됩니다.

.HTTP 파일 열기

HTTP 프로토콜을 사용하면 웹 서버의 임의 파일을 읽을 수 있습니다. 파일/HTTP 열기 명령을 선택한 후 URL만 입력하면 이 파일을 다운로드하여 편집창에 엽니다.

HTTP 프로토콜은 업로드를 지원하지 않으므로 이렇게 읽은 파일을 웹 서버로 재전송할 수는 없으며 새로운 이름으로 로컬 디렉토리에 저장해야 합니다.

웹 서버의 파일을 편집하려면 HTTP 프로토콜 대신 FTP 프로토콜을 사용하십시오. HTTP 파일 열기는 파일을 읽어 내용을 확인할 때만 사용할 수 있습니다.

11.프로젝트

.프로젝트 파일

프로젝트는 연관된 파일들의 묶음입니다. 예를 들어 특정한 사이트를 개발하기 위한 HTML, ASP 파일 등의 묶음을 프로젝트로 관리할 수 있습니다. 당근을 최초 실행하면 다음과 같은 샘플 프로젝트가 열립니다.

프로젝트에는 로컬 파일과 원격지의 파일, 디렉토리 등이 저장될 수 있습니다. 또한 논리적인 하위 묶음으로 관련 파일들의 그룹을 다룰 수 있습니다. 프로젝트에 저장된 파일은 프로젝트 창의 노드를 더블클릭함으로써 언제든지 열 수 있습니다.

당근의 프로젝트 파일은 확장자 dgp로 저장되며 파일 열기 대화상자에서 dgp 파일을 선택하면 프로젝트창에 열립니다. 프로젝트창의 팝업 메뉴를 통해 프로젝트를 관리합니다.

.프로젝트 관리

프로젝트 편집 항목을 선택하면 프로젝트내의 구성 파일을 편집할 수 있는 관리 대화상자가 나타납니다.

프로젝트 정보 수정 대화상자에서 프로젝트 관련 정보를 수정할 수 있습니다.

프로젝트내의 파일 경로 옵션에는 구성 파일의 경로 저장 방식을 지정합니다. 절대 경로로 지정하면 프로젝트 파일 자체를 옮기더라도 구성 파일을 문제없이 읽을 수 있으나 파일 자체가 이동되면 읽지 못합니다. 상대 경로는 프로젝트 파일이 있는 폴더를 기준으로 한 상대 경로로 저장되므로 프로젝트 파일과 함께 디렉토리가 통째로 이동되어도 구성 파일을 읽을 수 있습니다.

일반적으로 프로젝트는 관련 파일들이 있는 루트 디렉토리가 존재하므로 이 디렉토리에 프로젝트 파일을 저장하고 상대 경로로 구성 파일을 저장하는 것이 유리합니다.

이 대화상자에서 파일 및 원격지의 파일을 추가합니다. 폴더 링크는 폴더의 위치만을 프로젝트에 포함시킴으로써 폴더와 하위의 모든 파일, 서브 폴더를 프로젝트에 포함시키는 것입니다. 하위 묶음은 프로젝트 내의 논리적인 폴더이며 물리적인 파일의 위치와는 무관합니다. 예를 들어 C++ 소스의 경우 헤더 파일과 소스 파일, 리소스 파일 등에 대해 각각의 하위 묶음에 저장하면 검색하기 편리합니다.

.살펴보기 모드

파일창은 파일의 내용을 빠르게 훓어볼 수 있는 살펴보기 모드를 지원합니다. 파일창에서 파일을 더블클릭하면 새로운 편집창에 파일이 열리는 것이 보통이나 살펴보기 모드를 사용하면 새로운 창을 열지 않고 기존창에 파일을 다시 읽습니다. 단, 현재 편집창이 이미 편집되었으면 이때는 새로운 편집창을 엽니다.

살펴보기 모드를 사용하려면 팝업창에서 살펴보기 모드 항목을 선택합니다. 대량의 텍스트 파일을 빠른 속도로 훓어보고 싶을 때 살펴보기 모드를 사용하면 하나의 편집창으로 여러 개의 파일을 번갈아가며 열어볼 수 있어 편리합니다. 살펴보기를 중단할 때도 역시 팝업 메뉴의 살펴보기 메뉴를 선택하여 토글합니다.

12.ApiEdit 컨트롤

.ApiEdit 컨트롤

당근 프로젝트는 편집 컨트롤인 ApiEdit와 실행 파일인 Dangeun.exe로 구성되어 있습니다. 편집 컨트롤인 ApiEdit는 순수한 API로만 작성되어 크기가 대단히 작으며 속도가 빠릅니다. 또한 텍스트 편집 엔진이 필요한 타 프로젝트에서 쉽게 재사용할 수 있도록 모듈화되어 있으므로 필요할 경우 이 엔진을 자신의 프로젝트에 쉽게 활용할 수 있습니다.

ApiEdit 컨트롤을 사용하려면 프로젝트를 일단 만든 후 당근의 소스 프로젝트에서 다음 파일들을 복사한 후 프로젝트에 포함시키십시오.

 

AeUtil.h, cpp

ApiEdit.h, cpp

ApiEditText.h, cpp

ApiEditHexa.h, cpp

Parse.h, cpp

 

이 모듈들이 ApiEdit의 프레임과 뷰, 분석기 객체들을 정의합니다. 각 모듈의 구현 파일들을 보면 선두에 다음과 같은 전처리문이 있습니다.

 

//#define _WIN32_WINNT 0x400

//#define _WIN32_WINDOWS 0x401

//#include <windows.h>

//#include <windowsx.h>

//#include <imm.h>

//#include <stdio.h>

//#include <io.h>

//#include <malloc.h>

//#include <commctrl.h>

//#include <Shlwapi.h>

//#include <Shlobj.h>

//#include <wininet.h>

//#include <stdio.h>

//#include "Parse.h"

//#include "AeUtil.h"

//#include "ApiEdit.h"

//#include "ApiEditText.h"

//#include "ApiEditHexa.h"

#include "stdafx.h"

 

미리 컴파일된 헤더 옵션을 사용할 경우 이대로 사용할 수 있으나 그렇지 않은 경우는 제일 아래쪽의 #include "stdafx.h"를 삭제하고 위쪽의 주석 처리된 구문들의 주석을 해제하면 됩니다. ApiEdit 컨트롤 자체는 C++ 객체로 정의되어 있으므로 객체 선언문만으로 생성할 수 있습니다.

 

CApiEdit Ae;

 

그리고 Create 멤버 함수를 호출하여 ApiEdit 객체의 윈도우를 생성합니다.

 

Ae.Create(0,0,0,0,WS_CHILD | WS_VISIBLE,1,hWnd);

 

Create 멤버 함수는 위치, 크기, 스타일, ID, 부모 윈도우의 핸들을 인수로 요구합니다. 이렇게 생성해 놓기만 하면 ApiEdit 컨트롤이 hWnd의 자식 컨트롤로 동작합니다. 물론 위치나 크기는 부모 윈도우가 필요에 따라 적당한 곳에 배치해야 합니다. ApiEdit의 윈도우 핸들은 Ae.hWnd로 쉽게 액세스할 수 있습니다.

.ApiEdit 프로그래밍

ApiEdit는 객체 생성 후 Create 멤버 함수만 호출하면 곧바로 사용 가능합니다. 만약 ApiEdit의 스타일을 변경하려면 SetStyle, ChangeStyle 등의 함수로 다음 속성들을 선택 또는 해제하십시오.

 

#define AES_WANTTAB                        0x00000001

#define AES_USELINEEND                   0x00000002

#define AES_ALLOWDRAG               0x00000004

#define AES_SPACEFORTAB                0x00000008

#define AES_AUTOINDENT                   0x00000010

#define AES_BLOCKINDENTWITHTAB        0x00000020

#define AES_HOMETOFIRSTCHAR             0x00000040

#define AES_HIDECURLINE                   0x00000080

#define AES_CALCTABWITHAVG           0x00000100

#define AES_HORZSPLITABLE              0x00000200

#define AES_VERTSPLITABLE              0x00000400

#define AES_AUTOCONVERT               0x00000800

#define AES_FIXEDCOLUMN                 0x00001000

#define AES_NOWRAPCOLUMN            0x00002000

#define AES_USEAUTOCLIP                 0x00004000

#define AES_AUTOCLIPBYTAB             0x00008000

#define AES_SHOWMARGIN                  0x00010000

#define AES_SHOWENTER                   0x00020000

#define AES_SHOWTAB                        0x00040000

#define AES_SHOWSPACE                   0x00080000

#define AES_SHOWLINENUM                0x00100000

#define AES_SHOWRULER               0x00200000

#define AES_SWAPDRAGBUTTON              0x00400000

#define AES_SMARTSPACE                 0x00800000

#define AES_NOFIRSTSPACE          0x01000000

 

컨트롤의 색상을 변경할 때는 SetColor 함수를 사용하며 그 외 컨트롤의 여러 가지 옵션을 변경할 수 있는 멤버 함수들이 제공됩니다. ApiEdit의 멤버 함수 목록은 ApiEdit.h를 참조하시기 바랍니다. 멤버 함수명이 직관적으로 작성되어 있어 원하는 기능을 어렵지 않게 찾을 수 있습니다. 차후 ApiEdit의 프로그래밍 인터페이스가 정리되면 별도의 문서로 프로그래머를 위한 레퍼런스를 따로 제작할 예정입니다.

ApiEdit를 DLL로 만드는 것도 가능한 방법이기는 하나 단일 실행 파일을 생성할 수 없는 문제가 있어 DLL로는 아직 작성하지 않았습니다.