Espanso YAML 설정에서 GUI 텍스트 확장기로 마이그레이션하기

간단한 답변: Espanso는 모든 스니펫을 YAML 형식의 match 파일(~/.config/espanso/match/*.yml) 안에 trigger/replace 쌍으로 저장합니다. 즉, 스니펫을 추가하거나 수정하려면 텍스트 에디터를 열고, YAML의 들여쓰기 규칙을 지키고, 테스트를 위해 서비스를 재시작해야 한다는 뜻입니다. Lightning Assist 같은 GUI 텍스트 확장기로 마이그레이션한다는 것은 각 match를 시각적 에디터에서 스니펫으로 다시 만드는 것을 의미합니다 — 같은 트리거 텍스트, 같은 대체 내용이지만 파일 대신 입력 필드를 사용합니다. 현재는 YAML 일괄 가져오기 기능이 없으므로 마이그레이션은 스니펫 하나씩 수동으로 진행해야 합니다. 스니펫 50개 미만의 라이브러리라면 대부분 15분도 채 걸리지 않습니다.
고지: 저희는 유료 텍스트 확장기인 Lightning Assist를 만들고 있으며, 따라서 Espanso는 경쟁 제품입니다. Espanso는 무료 오픈소스이고, 아래의 모든 해결책은 Espanso 자체를 위한 것입니다. 다른 도구로 옮길 필요는 없습니다.
~/.config/espanso/match/base.yml을 한 번도 열어본 적이 없다면 지금까지의 내용이 와닿지 않을 수도 있습니다. 그리고 바로 그런 분들이 이 가이드의 대상입니다: Espanso를 동작시키고 스니펫을 십여 개 추가해봤지만, 이제는 YAML을 전혀 신경 쓰지 않아도 되는 방법이 있는지 궁금해하는 분들입니다.
Espanso의 YAML 설정이 마찰을 일으키는 이유
Espanso는 정말 잘 만들어진 소프트웨어입니다. 무료이고 오픈소스이며 크로스 플랫폼이고, 파일 기반 모델은 실수가 아니라 의도적인 설계 선택입니다 — YAML은 이식성이 있고, diff를 확인하기 쉽고, 스크립트로 다룰 수 있습니다. 마찰은 나중에, 실제로 매일 사용하기 시작하면서 나타납니다:
Match 파일이 파일 시스템 곳곳에 흩어진다. Espanso는 설정을 match/ 폴더(무엇을 확장할지)와 config/ 폴더(확장이 어떻게 동작할지)로 나누어 관리하며, 시작점은 match/base.yml입니다. 스니펫 개수가 늘어나면 하나의 파일에 계속 추가하거나 여러 .yml 파일로 나누게 되는데, 어느 쪽이든 6개월 뒤에 "가격 관련 그거"를 찾으려면 검색창이 없으므로 파일을 열어서 눈으로 훑어야 합니다.
들여쓰기 자체가 문법이다. 기본적인 match는 다음과 같은 모습입니다.
matches:
- trigger: ":br"
replace: "Best Regards,\nJon Snow"
Espanso 공식 문서도 이 점을 단호하게 밝히고 있습니다. "들여쓰기를 반드시 포함하세요. 그렇지 않으면 올바른 YAML 문법이 아닙니다." 텍스트 에디터에 익숙한 개발자에게는 문제없지만, Slack에서 스니펫을 붙여넣거나 여러 줄로 된 블록을 복사했을 때 공백이 함께 따라오지 않으면 조용히 깨지는 대표적인 사례입니다. 보통 알아차리는 방법은 트리거가 그냥 확장되지 않는다는 것뿐입니다 — 대화상자도, 빨간 밑줄도 없이, 길을 잃은 공백 하나를 찾아낼 때까지 스니펫은 그저 조용히 아무 일도 하지 않습니다.
동기화도, 팀 공유도 없다. Espanso는 설계상 모든 것을 로컬에 저장합니다 — 프라이버시 측면에서는 확실히 좋지만, 그 대신 스니펫을 두 번째 기기로 옮기려면 수동으로 파일을 복사하거나, Dropbox 폴더를 쓰거나, 직접 관리하는 개인 git 저장소가 필요합니다. 계정도 없고 내장된 다중 기기 동기화도 없으며, 동료에게 스니펫 라이브러리를 넘겨줄 방법은 .yml 파일을 보내서 올바른 폴더에 넣어달라고 부탁하는 것뿐입니다.
테스트하려면 재시작해야 한다. match 파일을 수정하고 제대로 작동하는지 확인하려면 보통 저장한 뒤 테스트 중인 앱으로 전환하고, 트리거를 입력하고 — 발동하지 않으면 — 다시 파일을 확인하러 돌아가야 합니다. 짧은 루프이긴 하지만, 변경할 때마다 앞으로도 계속 반복하게 되는 루프입니다.
그렇다고 Espanso가 나쁜 소프트웨어라는 뜻은 아닙니다. 설정을 코드처럼 다루는 데 거부감이 없는 사람들을 위해 만들어진 소프트웨어일 뿐입니다. 그렇게 시간을 쓰고 싶지 않다면 해결책은 GUI입니다 — "더 나은" YAML 에디터가 아닙니다.
GUI로는 실제로 어떻게 보이는가
GUI 텍스트 확장기에서 스니펫은 파일이 아니라 한 행(row)입니다. 패널을 열고(Lightning Assist에서는 "My Snippets"입니다) "Create Snippet"을 클릭한 뒤, 한 필드에 트리거를, 다른 필드에 확장 내용을 입력하고 저장하면 됩니다. 찾아야 할 파일도 없고, 재시작해야 할 서비스도 없고, 맞춰야 할 들여쓰기도 없습니다 — 애초에 들여쓰기라는 개념이 없기 때문입니다. 서식 있는 텍스트, HTML 형식, 여러 줄로 된 내용 모두 이스케이프 처리 없이 확장 필드에 직접 입력하거나 붙여넣을 수 있습니다. 스니펫은 직접 이름을 붙인 폴더로 정리할 수 있으며, 파일을 하나하나 훑어보는 대신 전체 라이브러리를 검색할 수 있습니다.
트레이드오프는 예상하는 그대로입니다. 파일에 직접 접근하는 것(스니펫 기록을 git diff로 보거나 Vim으로 편집하는 것)을 포기하는 대신, 애초에 YAML 관련 메커니즘이 전혀 필요 없어집니다.
Espanso → Lightning Assist: 개념 대응표
이미 Espanso의 용어로 사고하는 데 익숙하다면, 각 개념이 어떻게 대응되는지 아래에서 확인하세요.
| Espanso 개념 | YAML에서는 | GUI에서의 대응 |
|---|---|---|
| Match | .yml 파일 안의 matches: 아래에 있는 항목 |
스니펫 — Snippets 패널의 한 행 |
| Trigger | trigger: ":br" |
Trigger 필드 — 같은 약어를 그대로 입력하면 됩니다. 콜론은 유지하고 싶을 때만 붙이면 됩니다 |
| Replace | replace: "Best Regards,\nJon Snow" |
스니펫의 확장 텍스트 — 서식 있는 텍스트, HTML, 여러 줄 내용을 기본적으로 지원 |
| Vars / 확장 기능(날짜, 셸, 클립보드, 폼) | 변수 유형을 참조하는 vars: 블록 |
확장 내용에 삽입하는 플레이스홀더 — [#Date#], [#Name#], 클립보드 변수 등 |
Match 파일(base.yml, 사용자 정의 .yml) |
~/.config/espanso/match/ 안의 파일 |
Snippets 패널의 폴더 — 파일명 대신 시각적으로 정리 |
Reload / espanso restart |
변경 사항을 반영하기 위한 수동 서비스 재시작 | 아무것도 할 필요 없음 — 저장하는 순간 스니펫이 바로 적용됨 |
| 정규식 트리거, 셸 명령 match | YAML + 스크립팅, Espanso 고유 기능 | 재현되지 않음. 이것이 워크플로의 핵심이라면 해당 용도로는 Espanso를 계속 사용하세요 |
마지막 행이 중요합니다. 이 글은 마이그레이션 가이드이지, "Lightning Assist가 Espanso의 모든 기능을 대신할 수 있다"는 주장이 아닙니다. 정규식 패턴 트리거와 셸 명령 기반 match는 Espanso만의 진짜 강점이며, 여기에는 대응하는 GUI 기능이 없습니다.
단계별 안내: 스니펫을 수동으로 마이그레이션하기
- 기존 match를 찾습니다.
~/.config/espanso/match/base.yml과 직접 만든 다른.yml파일을 모두 엽니다.trigger/replace쌍 하나하나가 다시 만들어야 할 대상입니다. - GUI 확장기를 설치합니다. 설정 파일은 필요 없습니다. Lightning Assist를 14일 동안 무료로 사용해 보세요 — 신용카드 불필요. 앱은 바로 스니펫 패널로 열리므로, 먼저 작성해야 할 설정 파일이 없습니다.
- 각 match를 스니펫으로 다시 만듭니다. New Snippet을 클릭하고, 트리거 텍스트를 Trigger 필드에 붙여넣습니다(그 표기법이 마음에 든다면
:br이나/addr을 그대로 유지해도 됩니다 — 어떤 텍스트든 유효한 트리거가 됩니다). 그런 다음 replace 내용을 확장 필드에 붙여넣습니다. - 변수를 플레이스홀더로 다시 만듭니다. 날짜 변수는
[#Date#]플레이스홀더가 되고, 클립보드 변수는 클립보드 플레이스홀더가 됩니다. 일반 텍스트는 그대로 일반 텍스트로 남습니다. 셸 명령 변수와 정규식 트리거는 직접 대응하는 기능이 없으므로, 필요하다면 해당 match는 Espanso에 그대로 남겨두세요. - 트리거 모드를 설정합니다. As-You-Type 확장(트리거를 입력하면 그 자리에서 인라인으로 확장됨)이 기본값이며 별도 설정이 필요 없습니다. 트리거를 입력한 뒤 키를 눌러 확장하는 방식을 원한다면, Settings → Triggers에서 한 번만 설정하면 됩니다.
- 무언가를 삭제하기 전에 테스트합니다. 연습용 문서에서 각 스니펫을 시험해 보세요. 마이그레이션한 세트가 기대한 대로 작동한다고 확인될 때까지는 Espanso 설정을 그대로 두세요 — 두 가지가 일시적으로 함께 존재해도 전혀 문제없습니다.
걸리는 시간에 대해서는 현실적으로 예상해야 합니다. 현재는 YAML 일괄 가져오기가 없으므로 모든 스니펫을 하나씩 수동으로 다시 만들어야 합니다. 스니펫 50개 미만의 라이브러리라면 보통 15분도 채 걸리지 않습니다. 100개 이상을 마이그레이션한다면, 적어도 YAML의 구조 덕분에 복사-붙여넣기는 간단합니다 — 각 블록에서 trigger와 replace 값을 읽어서 해당하는 GUI 필드에 붙여넣으면 됩니다.
얻는 것과 잃는 것
얻는 것: 설정 파일이 필요 없고, 테스트할 때마다 재시작하는 루프도 없으며, 폴더로 정리된 검색 가능한 스니펫 라이브러리를 갖게 됩니다. 핫키로 선택한 텍스트를 다시 쓰거나 번역하는 AI 명령, 같은 앱 안에서의 푸시투토크 음성-텍스트 변환, 기기 간 자동 클라우드 동기화, 필요하다면 팀 스니펫 공유까지 사용할 수 있습니다. 이 모든 것이 같은 계정으로 Windows, macOS, Linux에서 동작합니다.
잃는 것: Espanso는 언제까지나 무료이자 오픈소스입니다 — Lightning Assist의 무료 요금제는 스니펫 3개로 제한되며, 무제한 스니펫·폴더·팀 공유를 이용하려면 14일 체험 이후 월 $5.99가 필요합니다(AI 명령과 음성 기능은 별도로 구매하는 AI 크레딧을 사용합니다). 또한 GUI 모델에는 대응하는 기능이 없는 정규식 기반 트리거와 셸 명령 match도 잃게 됩니다. 이것이 Espanso를 쓰는 이유라면 이 마이그레이션은 당신을 위한 것이 아닙니다 — 그리고 그것은 남아 있을 정당한 이유입니다.
Espanso 생태계를 완전히 벗어나지 않고 GUI를 원한다면, 커뮤니티 프로젝트도 존재합니다 — espansoGUI(Rust/Iced, Flathub에서 배포), EspansoEdit(Windows용 무료 소프트웨어), EspansoGUI IDE 등입니다. 시도해 볼 가치는 있지만, 각각은 근본적으로 같은 YAML 파일 위에 얹힌, 자원봉사자가 개별적으로 유지하는 별도의 레이어일 뿐입니다. Espanso 자체에는 여전히 공식 GUI가 없습니다(핵심 프로젝트의 최신 안정 버전은 2026년 7월의 v2.4.0입니다). GUI 자체가 제품인 도구를 원한다면, 이 마이그레이션이 메워주는 것이 바로 그 간극입니다.
자주 묻는 질문
Espanso YAML 파일을 바로 가져올 수 있나요?
아직은 안 됩니다 — 일괄 가져오기 기능이 없습니다. 각 match를 시각적 에디터에서 스니펫으로 다시 만들어야 합니다. 대부분의 경우 스니펫 50개 미만의 라이브러리는 15분도 채 걸리지 않습니다. 더 큰 라이브러리는 여전히 하나씩 처리해야 하므로 규모에 비례해 시간이 더 걸립니다.
정규식 기반 트리거나 셸 명령 match를 잃게 되나요?
네. 이는 Espanso의 YAML/스크립팅 모델 위에 구축된 Espanso 고유의 기능이며, 여기에는 대응하는 GUI 기능이 없습니다. 정규식 트리거나 셸 기반 match가 설정의 핵심이라면 해당 용도로는 Espanso를 계속 사용하고, GUI 확장기는 더 단순하고 정적인 스니펫에만 고려해 보세요.
:br이나 /addr 같은 트리거 텍스트를 그대로 유지할 수 있나요?
네. Trigger 필드는 입력하는 어떤 텍스트든 받아들이며, 익숙한 표기법이라면 앞에 붙는 :이나 /도 그대로 사용할 수 있습니다. 마이그레이션한다고 해서 약어 스타일을 바꿔야 할 이유는 전혀 없습니다.
도구를 완전히 바꾸기 전에 시도해볼 만한 공식 Espanso GUI가 있나요?
공식적인 것은 없습니다. espansoGUI, EspansoEdit, EspansoGUI IDE 같은 커뮤니티 프로젝트가 그래픽 레이어를 더해주지만, 이들은 같은 YAML 파일 위에 얹힌 별도의, 자원봉사자가 유지하는 도구일 뿐입니다 — 여전히 원본 설정 파일과 한 발짝 떨어져 있는 셈입니다. GUI가 부가 기능이 아니라 제품 전체이길 원한다면, 이 마이그레이션이 만드는 차이가 바로 그것입니다.
관련 글
- 2026년 최고의 Espanso 대안 — 기능, 가격, 누가 전환해야 하는지에 대한 전면 비교
- Linux용 텍스트 확장기 — GNOME, KDE, 터미널에서 GUI 확장이 작동하는 방식
- Lightning Assist vs Espanso — 상세 비교
- Espanso가 작동하지 않나요? 흔한 9가지 해결법 — 일단 지금 설정부터 다시 동작시키고 싶다면
출처
- Espanso — Get Started 문서 — match 파일 구조, YAML 문법
- Espanso — Linux 설치 문서 — 배포판별 설치 방법
- Lightning Assist 요금제 — 공식 플랜 상세 정보