# todo.txt 형식 [![Gitter](https://img.shields.io/gitter/room/todotxt/todotxt.svg)](https://gitter.im/todotxt/todotxt) [English](./README.md) | [Korean (한국어)](./README.ko.md) todo.txt의 이유와 방법에 대한 완벽한 입문서입니다. todo.txt의 첫 번째이자 가장 중요한 규칙: > todo.txt 텍스트 파일의 한 줄은 하나의 할 일을 나타냅니다. ## 왜 일반 텍스트(plain text)인가? 일반 텍스트(Plain text)는 소프트웨어와 운영 체제에 구애받지 않습니다. 검색 가능하고, 호환성이 높고, 가볍고, 쉽게 조작할 수 있습니다. 정해진 형식이 없습니다. 다른 사람의 웹 서버가 다운되거나 Outlook .PST 파일이 손상되었을 때도 작동합니다. 내보내기 및 가져오기, 데이터베이스, 태그, 플래그, 별표, 우선순위 지정 또는 _'여기에 회사 이름을 넣어 주세요'_-같은 규칙도 없습니다. ## 효과적인 todo list의 3가지 핵심 요소 todo.txt에 있는 특별한 표기법을 사용하면 할 일 목록을 세 가지 핵심 요소로 나눌 수 있습니다. ### 우선순위 할 일 목록은 프로젝트별, 컨텍스트별 혹은 전체적으로 다음에 해야 할 가장 중요한 일이 무엇인지 알려줄 수 있어야 합니다. 선택적으로 할 일에 우선순위를 할당하여 목록의 맨 위로 올릴 수 있습니다. ### 프로젝트 큰 프로젝트를 진행하는 유일한 방법은 그와 관련된 작은 하위 할 일을 처리하는 것입니다. 당신의 `todo.txt`는 프로젝트와 관련된 모든 할 일을 나열할 수 있어야 합니다. "차고 청소" 같은 프로젝트를 진행하려면 내 할 일 목록에서 해당 프로젝트를 진행하기 위해 취해야 할 다음 논리적 행동을 알려주어야 합니다. "차고 청소"는 좋은 할 일 항목이 아닙니다. 그러나 "차고 청소" 프로젝트의 "Goodwill에 전화하여 픽업 예약"은 좋은 항목입니다. ### 컨텍스트 [Getting Things Done](https://en.wikipedia.org/wiki/Getting_Things_Done)의 저자 David Allen은 할 일을 수행할 '장소와 상황', 즉 컨텍스트에 따라 목록을 나누라고 제안합니다. 보내야 할 메시지는 `@email` 컨텍스트로, 걸어야 할 전화는 `@phone`으로, 집안일 프로젝트는 `@home`으로 이동합니다. 이렇게 하면 차 안에서 휴대폰으로 몇 분의 여유가 있을 때 `@phone` 할 일을 쉽게 확인하고 기회가 있을 때 한두 통의 전화를 걸 수 있습니다. 이 모든 것이 `todo.txt` 내에서 가능합니다. ## `todo.txt` 형식 규칙 `todo.txt`는 일반 텍스트 파일입니다. 우선순위, 프로젝트, 컨텍스트, 등록 및 완료 일자와 같은 구조화된 할 일 메타데이터를 활용하기 위한 몇 가지 간단하지만 유연한 파일 형식 규칙이 있습니다. `todo.txt` 파일 형식은 근본적으로 두 가지 목표를 가지고 있습니다: - 파일 내용은 텍스트 뷰어나 편집기 같은 도구 없이도 사람이 읽을 수 있어야 합니다. - 사용자는 일반 텍스트 편집기에서 합리적이고 예측 가능한 방식으로 파일 내용을 수정할 수 있습니다. 예를 들어, 줄을 알파벳순으로 정렬하는 텍스트 편집기는 당신의 할 일 목록을 의미 있는 방식으로 정렬할 수 있어야 합니다. 이 두 가지 목표 때문에, 예를 들어 할 일 맨 앞에는 우선순위나 날짜를 적어 시간이나 중요도 순으로 쉽게 정렬할 수 있도록 했습니다. 그리고 완료된 항목은 `x`로 표시하는데, 이는 정렬 시 목록 맨 아래로 보내는 효과와 함께 눈으로 보기에도 채워진 체크박스처럼 보이게 합니다. 나머지는 다음과 같습니다. ## 미완료 할 일: 3가지 형식 규칙 todo.txt의 매력은 정해진 형식이 없다는 점입니다. 각 할 일에 어떤 필드를 붙일지는 여러분의 상상력에 달려있습니다. 특별한 표기법을 사용해서 할 일의 컨텍스트(예: `@phone`), 프로젝트(예: `+GarageSale`), 우선순위(예: `(A)`)를 표시하는 것부터 시작해 보세요. todo.txt 파일은 다음과 같을 수 있습니다. ``` (A) 엄마에게 미트볼 고맙다고 전화하기 @phone (B) Goodwill 픽업 예약하기 +GarageSale @phone 동네에 안내문 붙이기 +GarageSale @GroceryStore pies ``` `@phone` 컨텍스트 항목에 대한 검색 및 필터링 결과는 다음과 같습니다. ``` (A) 엄마에게 미트볼 고맙다고 전화하기 @phone (B) Goodwill 픽업 예약하기 +GarageSale @phone ``` `+GarageSale` 프로젝트 항목만 보려면 다음과 같이 출력됩니다. ``` (B) Goodwill 픽업 예약하기 +GarageSale @phone 동네에 안내문 붙이기 +GarageSale ``` 현재 할 일에 대한 세 가지 형식 규칙이 있습니다. ### 규칙 1: 우선순위가 있는 경우 "항상" 맨 앞에 표시됩니다. 우선순위는 A-Z 사이의 대문자를 괄호로 묶고, 그 뒤에 공백을 하나 두어 표시합니다. 이 할 일은 우선순위를 가집니다: ``` (A) 엄마에게 전화하기 ``` 다음 할 일들은 우선순위가 없습니다. ``` 엄마에게 꼭 전화해야 함 (A) @phone @someday (b) 사장님께 보고하기 (B)->TPS 보고서 제출하기 ``` ### 규칙 2: 할 일 등록 일자는 선택적으로 우선순위와 공백 바로 뒤에 표시할 수 있습니다. 우선순위가 없으면 등록 일자가 먼저 표시됩니다. 등록 일자가 있는 경우 `YYYY-MM-DD` 형식이어야 합니다. 이 할 일들은 등록 일자를 가집니다. ``` 2011-03-02 +TodoTxt 할 일 형식 문서화하기 (A) 2011-03-02 엄마에게 전화하기 ``` 이 할 일은 등록 일자가 없습니다. ``` (A) 엄마에게 전화하기 2011-03-02 ``` ### 규칙 3: 컨텍스트와 프로젝트는 우선순위와 등록 일자 _뒤_ 라면 아무 곳에나 올 수 있습니다. - *컨텍스트* 앞에는 단일 공백과 골뱅이 (`@`)가 옵니다. - *프로젝트* 앞에는 단일 공백과 더하기 (`+`)가 옵니다. - *프로젝트* 또는 *컨텍스트*에는 공백이 아닌 모든 문자를 포함할 수 있습니다. - *할 일*에는 0개, 1개 또는 그 이상의 *프로젝트*와 *컨텍스트*가 포함될 수 있습니다. 예를 들어, 이 할 일은 `+Family` 및 `+PeaceLoveAndHappiness` 프로젝트의 일부이며 `@iphone` 및 `@phone` 컨텍스트의 일부이기도 합니다. ``` (A) 엄마에게 전화하기 +Family +PeaceLoveAndHappiness @iphone @phone ``` 이 할 일에는 컨텍스트가 없습니다. ``` 아무개에게 이메일 보내기 soandso@example.com ``` 이 할 일에는 프로젝트가 없습니다. ``` 2+2 더하는 법 배우기 ``` ## 완료된 할 일: 2가지 형식 규칙 할 일이 완료되었음을 나타내는 두 가지가 있습니다. ### 규칙 1: 완료된 할 일은 소문자 x 문자 (`x`)로 시작합니다. 할 일이 소문자 x(대소문자 구분)로 시작하고 바로 뒤에 공백이 온다면, 그 할 일은 완료된 것으로 표시됩니다. 이것은 완료된 할 일입니다. ``` x 2011-03-03 엄마에게 전화하기 ``` 이것들은 완료된 할 일이 아닙니다. ``` 실로폰 수업 X 2012-01-01 새해 다짐 세우기 (A) x 티켓 가격 알아보기 ``` 완료된 할 일이 일반적인 정렬 도구를 사용하여 할 일 목록의 맨 아래로 정렬되도록 소문자 x를 사용합니다. ### 규칙 2: 완료 일자는 x 바로 뒤에 공백으로 구분하여 표시됩니다. 예를 들어: ``` x 2011-03-02 2011-03-01 Tim의 pull request 리뷰하기 +TodoTxtTouch @github ``` 할 일에 등록 일자를 추가한 경우 완료 시 완료 일자 바로 뒤에 표시됩니다. 이렇게 하면 완료된 할 일이 일반적인 정렬 도구를 사용하여 날짜순으로 정렬됩니다. 많은 Todo.txt 클라이언트(앱)는 할 일 완료 시 우선순위를 버립니다. 만약 우선순위를 남기고 싶다면, 아래에 설명된 `key:value` 형식(예: `pri:A`)을 사용하십시오. 완료 일자(필수)와 함께 등록 일자(선택 사항)를 사용한 경우 할 일을 완료하는 데 걸린 일수를 계산할 수 있습니다. ## 추가 파일 형식 정의 도구 개발자는 추가 메타데이터에 대한 추가 형식 규칙을 정의할 수 있습니다. 개발자는 `key:value` 형식을 사용하여 추가 메타데이터(예: 마감일로 `due:2010-01-02`)를 정의해야 합니다. `key`와 `value`는 모두 콜론이 아닌 공백이 아닌 문자로 구성되어야 합니다. 콜론 하나만 `key`와 `value`를 구분합니다.