블로그로 돌아가기

Voicr Team · 2026년 5월 14일

Mac에서 텍스트 확장: 무료이면서 프라이버시까지 챙기는 대안

이메일, 주소, 서명을 반복해서 입력하는 일은 이제 그만. TextExpander에 돈을 내지 않고도 어떤 Mac 앱에서든 짧은 트리거를 긴 텍스트로 확장하는 방법을 소개합니다.

Mac에서 텍스트 확장: 무료이면서 프라이버시까지 챙기는 대안

당신이 별생각 없이 일주일에 스무 번쯤 반복하는 일이 있습니다. 이메일 서명을 입력하고, 집 주소를 적고, 채용 담당자에게 보내는 똑같은 답장을 또 적고, 업무 메시지 아래에 늘 붙는 정형화된 고지 문구를 또 한 번 입력하는 일이죠.

한 번에 몇 초밖에 안 걸리지만 스무 번, 백 번, 1년이면 천 번이 됩니다. 그렇게 흘려보낸 시간을 되찾는 방법이 바로 텍스트 확장입니다. 그리고 Mac에서는 굳이 구독료를 내지 않아도 이걸 할 수 있습니다.

텍스트 확장이란 정확히 무엇인가

텍스트 확장의 원리는 단순합니다. 짧은 트리거 단어를 저장해 두면, 도구가 입력 내용을 지켜보고 있다가 트리거를 다 입력하는 순간 그것을 더 긴 텍스트 블록으로 바꿔치기합니다.

`addr`을 치고 스페이스를 누르면 집 주소가 나타나고, `sig`를 치면 이메일 서명이 메시지에 들어가며, `meet`을 치면 일정 조율 안내를 담은 다섯 줄짜리 정형 문구가 알아서 붙여 넣어집니다.

어떤 도구든 작동 방식은 같습니다. 백그라운드의 작은 프로세스가 키보드 입력을 지켜보다가 저장된 트리거 목록과 대조하고, 일치하는 항목을 찾으면 트리거를 지운 뒤 확장된 텍스트를 끼워 넣습니다. 어떤 도구는 붙여 넣기를 흉내 내고, 어떤 도구는 글자를 하나씩 타이핑하지만, 사용자가 보기에는 결과가 똑같습니다.

TextExpander의 문제

TextExpander는 오랫동안 사실상의 표준이었습니다. 잘 작동합니다. 하지만 2026년 기준 개인 요금제도 월 $4.16부터 시작하고, 팀 요금제는 거기서 더 올라갑니다. Mac을 쓰는 기간 전체로 따지면, 사실상 수백 줄짜리 코드로 구현할 수 있는 기능 하나에 수백 달러를 쓰는 셈입니다.

더 큰 문제는 비용이 아니라 구조입니다. 스니펫은 TextExpander의 클라우드를 통해 동기화됩니다. 그래야 두 번째 Mac이나 iPhone에서도 같은 단축어를 쓸 수 있죠. 하지만 그 말은 곧 당신의 주소, 서명, 저장해 둔 답장, 그 밖에 스니펫으로 넣어 둔 모든 게 남의 서버를 거쳐 오간다는 뜻이기도 합니다.

대부분의 사람에겐 별문제가 아닙니다. 하지만 고객 정보를 다루는 프리랜서, 스니펫에 API 키나 사내 URL이 섞여 들어가는 개발자, 규제 산업에 종사하는 사람에게는 실제로 곤란한 일이 됩니다. 생산성 도구 카테고리 중에서, 대표격인 유료 옵션이 지금도 클라우드 동기화를 기본값으로 두는 건 사실상 텍스트 확장이 유일합니다.

작은 방패 아이콘 안에 스니펫이 로컬로 저장된 Mac과, 스니펫을 클라우드 서버로 올려 보내는 일반 기기를 비교한 이미지

프라이버시 우선 텍스트 확장기는 무엇이 다른가

프라이버시를 우선하는 텍스트 확장기는 외부 서버에 신호를 보낼 일이 없습니다. 스니펫은 Mac의 로컬 데이터베이스에 저장되고, 키 입력을 감지하는 매칭 로직도 전부 기기 안에서만 돕니다. 당신이 입력한 어떤 내용도 기기를 떠나지 않습니다.

프라이버시 우선 옵션들의 구조는 거의 동일합니다: - 키 입력 버퍼 — 도구는 메모리에 짧은 롤링 버퍼를 유지합니다. 보통 최근에 입력한 50~100자 정도죠. 스페이스, 문장부호, Return, Tab 같은 경계 문자를 누르는 순간, 버퍼의 끝부분이 저장된 트리거와 일치하는지 확인합니다. 일치하면 확장하고, 아니면 다시 듣기 모드로 돌아갑니다. - 버퍼 비우기 — 앱을 전환하거나, 모디파이어 단축키를 누르거나, 확장이 한 번 일어날 때마다 버퍼는 즉시 비워집니다. 도구가 당신이 입력한 긴 기록을 들고 있는 일은 없습니다. 활성 메모리에는 최근 몇 글자만 남습니다. - 온디바이스 매칭 — 트리거 매칭 코드는 단순한 문자열 비교일 뿐입니다. 네트워크 호출도, 클라우드 조회도 없습니다. 확장될 텍스트는 로컬 파일에서 불러와 시스템 클립보드 또는 가상 키 입력으로 삽입됩니다.

Espanso가 바로 이렇게 동작합니다. Apple이 macOS에 기본 탑재한 텍스트 대치 기능도 마찬가지이고, Voicr의 스니펫 엔진도 같은 원리로 작동합니다. 이 부분은 아래에서 더 자세히 다룹니다.

가장 많은 시간을 되돌려주는 스니펫

효과가 가장 빨리 체감되는 트리거는 당신이 별생각 없이 반복해서 치는 것들입니다. 지난 한 주 동안 보낸 이메일, Slack 메시지, 코드 주석을 한 번 훑어보세요. 금방 눈에 들어옵니다. 거의 모든 사람에게 공통으로 등장하는 카테고리는 다음과 같습니다:

개인 연락처 정보 — 집이나 사무실 주소는 `addr`, 전화번호는 `phone`, 가장 자주 쓰는 이메일은 `email`. 이미 수천 번은 입력했을 것들이죠. 트리거 세 개만 만들어 두면 본전 뽑는 데 하루도 안 걸립니다.

이메일 서명 — 상황별로 다른 서명. 업무용은 `sig`, 개인용은 `sigp`, 채팅에서 쓰는 한 줄짜리 짧은 버전은 `sigs`처럼 정리해 두는 식입니다.

정형화된 답장 — 매주 보내게 되는 메시지들입니다. "연락 주셔서 감사합니다. 현재 새 클라이언트는 받지 않고 있습니다" 같은 문구, "편하게 이야기 나누시죠. 제 캘린더 링크입니다" 같은 답장, 점잖게 거절하는 문구 등. 각각 두 글자짜리 트리거로 만들어 두면 미래의 당신이 고마워할 겁니다.

코드와 문서 보일러플레이트 — 개발자라면 가장 명확한 이득이 라이선스 헤더, 자주 쓰는 import 블록, 로그 출력 포매터 같은 것들입니다. 더 나아가 스캐폴딩 템플릿 전체를 트리거로 저장해 두는 사람도 있습니다.

마크다운 구조 — 표 골격, 프런트매터 블록, 매번 잊어버리는 링크 문법 같은 것들. `tbl` 트리거로 3열짜리 마크다운 표 골격을 떨어뜨리고, `fm` 트리거로 제목·날짜·슬러그가 미리 채워진 프런트매터 블록을 꺼내 쓰는 식입니다.

대부분의 사람은 트리거를 다섯 개에서 열 개 정도에서 멈춥니다. 그 이상은 외워 두기가 부담스러워지는 지점이거든요. 그리고 시간을 절약하는 효과의 80%도 거기서 다 나옵니다. 트리거가 50개씩 필요하진 않습니다. 제대로 된 다섯 개면 충분합니다.

플레이스홀더로 만드는 동적 스니펫

고정된 스니펫은 순수 보일러플레이트를 처리합니다. 그리고 플레이스홀더는 스니펫 안에서 매번 한 부분만 살짝 달라지는 경우를 처리합니다. 보통 날짜나 시간, 아니면 방금 클립보드에 복사해 둔 내용 같은 것들이죠.

플레이스홀더 세 개면 실제 쓰는 거의 모든 경우를 커버할 수 있습니다:

`{date}` — 스니펫이 실행되는 시점의 오늘 날짜로 바뀝니다. `notes` 트리거를 만들어 두면 매번 `5/14/26 회의 노트`처럼 그날 날짜가 자동으로 찍힌 채로 펼쳐집니다. 직접 고칠 일이 없죠.

`{time}` — 현재 시각입니다. 로그 항목, 데일리 스탠드업 노트, 일지 헤더에 타임스탬프를 박을 때 유용합니다.

`{clipboard}` — 지금 복사해 둔 내용입니다. URL을 복사한 다음 `cite` 트리거를 치면, 스니펫이 그 URL을 정해진 인용 형식으로 감싸서 끼워 넣습니다. 잘 만든 구현체는 확장이 끝난 뒤 원래 클립보드 내용을 그대로 복구해 줍니다. 그래서 복사해 둔 게 사라지는 일도 없습니다.

어떤 도구는 더 많은 걸 지원합니다. 확장 후 커서 위치를 잡아 주는 `{cursor}`, 입력 가능한 프롬프트 양식인 `{form}`, 트리거 자체에서 정규식으로 값을 뽑아내는 기능 같은 것들이죠. 다만 그만큼 복잡해집니다. 플레이스홀더가 하나 늘어날 때마다 외워야 할 것도 하나 늘어나니까요. 위의 세 가지면 일상에서 실제로 마주치는 상황은 거의 다 처리됩니다.

음성 받아쓰기와 텍스트 확장을 하나의 앱에서

타자를 덜 치고 싶어 하는 Mac 사용자들은 결국 메뉴 바에 생산성 도구 두 개를 띄워 두게 됩니다. 이메일과 긴 글쓰기에는 받아쓰기 앱을, 보일러플레이트에는 별도의 텍스트 확장기를. 아이콘도 두 개, 환경설정 패널도 두 개, 구독료 청구서도 두 개죠.

이 둘을 합칠 만한 이유는 충분합니다. 작동 원리가 사실상 겹치거든요. 두 도구 모두 키보드를 감시하고, 당신이 지금 켜 놓은 앱에 텍스트를 끼워 넣습니다. 따로 분리되어 있는 건 워크플로 자체가 본질적으로 다르기 때문이 아니라, 두 카테고리가 그저 따로 자라났기 때문일 뿐입니다.

Voicr는 macOS용 음성-텍스트 변환 앱이고, 텍스트 확장 엔진을 기본 기능으로 함께 제공합니다. FN을 누른 채 긴 이메일을 받아쓰기로 입력해도 되고, `addr` 다음에 스페이스를 눌러 주소를 펼쳐도 됩니다. 메뉴 바 아이콘 하나, 환경설정 패널 하나, 그리고 같은 Free 요금제로 둘 다 됩니다.

확장 엔진은 로컬 전용입니다. 메모리에 떠 있는 64자 롤링 버퍼가 키 입력을 저장된 트리거와 대조합니다. 버퍼는 앱을 전환할 때, 모디파이어 단축키를 누를 때, 확장이 성공적으로 일어날 때마다 비워집니다. 클라우드 동기화도, 네트워크 호출도, 화면 캡처도 없습니다. 스니펫은 앱의 로컬 데이터베이스에 저장되고, 외부로 전송되지 않으며, 당신 외에는 누구도 읽을 수 없습니다.

그리고 이 모든 게 Free 요금제에 그대로 들어 있습니다. 한 달에 5,000단어 분량의 음성 받아쓰기와 무제한 스니펫까지. 신용카드 등록도 없고, 따로 구독할 것도 없습니다. 받아쓰기 앱을 고민 중이라면, Voicr vs Wispr Flow 글에서 로컬 처리와 클라우드 기반 음성 처리의 장단점을 비교해 두었으니 참고하세요.

시작하는 법

텍스트 확장이 본인에게 맞는지 확인하는 가장 빠른 방법은 트리거 세 개로 시작해 보는 것입니다. 지난 한 주 동안 가장 자주 쳤던 보일러플레이트를 골라 보세요. 십중팔구 주소, 자주 보내는 답장 하나, 업무용 서명일 겁니다.

그 세 개만 저장해 두고 일주일 써 보세요. 같은 문구를 세 번쯤 더 치고 나서 "이것도 단축키로 만들고 싶다" 싶어 네 번째 트리거를 만들고 있다면, 이미 손이 기억하기 시작했다는 뜻입니다. 그다음부터는 알아서 굴러갑니다.

이것저것 찾아보고 설치하는 과정을 건너뛰고 싶다면, Voicr가 받아쓰기, 텍스트 확장, 메뉴 바 한 칸을 하나의 앱으로 모두 처리해 줍니다. Free 요금제로 한 달에 5,000단어 분량의 음성-텍스트 변환과 무제한 스니펫까지 쓸 수 있습니다. 신용카드도, 체험판 타이머도, 구독도 필요 없습니다. "계속 써야겠다" 싶을 때 결정해도 늦지 않습니다.

FN을 누른 채 말하고, 붙여 넣으세요. 트리거를 치고 스페이스를 눌러 펼쳐 보세요. 같은 아이콘, 같은 앱, 그리고 어떤 것도 당신의 Mac 밖으로 나가지 않습니다.