guides

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

작성자 Lightning Assist 팀2026년 9월 14일9 분 읽기
espansoyamlmigrationguitext-expanderlinuxwindowsmacos
공유:

간단 답변: Espanso는 모든 스니펫을 YAML 매치 파일(~/.config/espanso/match/*.yml) 내의 trigger/replace 쌍으로 저장합니다. 따라서 스니펫을 추가하거나 편집하려면 텍스트 편집기를 열어 YAML 들여쓰기 규칙을 지키고, 서비스를 재시작해 테스트해야 합니다. Lightning Assist 같은 GUI 텍스트 확장기로 전환하면 각 매치가 시각적 편집기의 스니펫이 됩니다 — 같은 트리거 텍스트, 같은 확장 내용이지만 파일 대신 폼 필드로 관리됩니다. Lightning Assist 2.6부터는 매치 파일을 직접 가져올 수 있습니다: .yml 파일을 선택하면 모든 trigger/replace 쌍이 스니펫으로 변환되고, {{date}}, {{clipboard}}, 폼 변수는 플레이스홀더로 바뀝니다. 셸 명령어와 정규식 매치는 수동 검토가 필요합니다.

고지: 저희는 유료 텍스트 확장기인 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 기능이 없습니다.

단계별 가이드: 매치 파일 가져오기

2026년 9월 7일 업데이트: Lightning Assist가 이제 Espanso 매치 파일을 직접 가져오므로, 이전에 하나씩 다시 만드는 과정은 더 이상 필요하지 않습니다.

  1. 기존 매치 파일 위치 찾기. espanso path를 실행하고 표시된 match 폴더(보통 ~/.config/espanso/match/)를 엽니다. matches: 리스트가 있는 모든 .yml 파일을 그대로 가져올 수 있으며, 미리 병합할 필요는 없습니다.
  2. GUI 확장기 설치 후 설정 파일 건너뛰기. Lightning Assist 14일 무료 체험 — 신용카드 불필요. 앱은 바로 스니펫 패널로 열리며, 별도의 초기 설정 파일 작성이 없습니다.
  3. 각 매치 파일 가져오기. My Snippets에서 Import를 클릭하고 .yml 파일을 선택하세요. 각 매치는 하나의 스니펫이 됩니다: trigger(또는 triggers 첫 항목)가 트리거가 되고, replace가 확장 내용이 되며, label이 있으면 스니펫 이름으로 사용됩니다. 선행 기호는 유지되어 :br는 그대로 :br입니다. 가져오기는 모든 요금제에서 가능합니다. 무료 요금제는 한 번에 최대 5개 매치, 라이브러리 최대 20개 제한이 있으며, 14일 체험 기간에는 가져오기당 20개까지, Pro 요금제는 제한이 없습니다. 누락된 항목은 목록으로 표시되며 조용히 삭제되지 않습니다.
  4. 변수 확인. {{date}}, {{clipboard}}, {{form.field}} 변수는 각각 [#date#], [#clipboard#] 같은 플레이스홀더로 변환됩니다. 변환할 수 없는 셸 명령어 변수, 스크립트, 정규식 트리거는 삭제되지 않고 확장 텍스트에 그대로 남아 보여지므로 직접 확인하고 수정할 수 있습니다. 이런 요소가 핵심인 매치는 Espanso에 그대로 두세요.
  5. 트리거 모드 설정. 기본값은 입력 중 확장(트리거 입력 시 바로 확장)이며 별도 설정이 필요 없습니다. 트리거 입력 후 키를 눌러 확장하고 싶다면 설정 → 트리거에서 한 번만 설정하세요.
  6. 삭제 전에 테스트. 임시 문서에서 각 스니펫을 시험해 보세요. 마이그레이션한 스니펫이 예상대로 작동하는 것을 확인할 때까지 Espanso 설정은 유지하세요 — 두 환경을 잠시 병행해도 문제 없습니다.

가져오기 자체는 몇 초면 끝나며, 셸 명령어 또는 정규식이 포함된 매치를 검토하는 데 시간이 더 걸립니다. 일반 텍스트 매치 라이브러리라면 전체 마이그레이션은 몇 분 내에 완료됩니다.

얻는 것과 포기하는 것

얻는 것: 설정 파일이 없고, 테스트할 때마다 재시작할 필요가 없으며, 폴더로 정리된 검색 가능한 스니펫 라이브러리, 핫키로 선택 텍스트를 재작성하거나 번역하는 AI 명령, 같은 앱 내 푸시 투 토크 음성 인식, 기기 간 자동 클라우드 동기화, 필요 시 팀 스니펫 공유까지. 이 모든 기능이 Windows, macOS, Linux에서 동일한 계정으로 작동합니다.

포기하는 것: Espanso는 영원히 무료 오픈소스이며, Lightning Assist도 무료로 무제한 텍스트 확장을 제공합니다(최대 20개 스니펫, 폴더, 1개 팀 포함). 하지만 더 큰 라이브러리와 다수 팀 기능은 14일 체험 후 월 $5.99 비용이 발생합니다(프로 요금제는 AI 명령과 음성용 크레딧 월별 할당 포함). 또한 GUI 모델에는 정규식 트리거와 셸 명령어 매치가 없으므로 이 기능들은 사용할 수 없습니다. 이 기능들이 Espanso를 사용하는 핵심 이유라면 이 마이그레이션은 적합하지 않으며, 계속 Espanso를 사용하는 것도 정당한 선택입니다.

Espanso 생태계를 완전히 떠나지 않고 GUI를 원한다면 커뮤니티 프로젝트가 있습니다 — espansoGUI(Rust/Iced, Flathub), EspansoEdit(Windows 무료 소프트웨어), EspansoGUI IDE. 시도해볼 만하지만 모두 동일한 YAML 파일 위에 별도로 자원봉사자가 관리하는 레이어일 뿐이며, Espanso 자체는 공식 GUI가 검색 창 외에는 없습니다(핵심 프로젝트 최신 안정 버전은 2026년 9월 2일 출시된 v2.4.1). GUI가 제품 그 자체인 도구를 원한다면 이 마이그레이션이 그 차이를 메워줍니다.

자주 묻는 질문

Espanso YAML 파일을 직접 가져올 수 있나요?

네. My Snippets에서 Import를 클릭하고 매치 파일(.yml)을 선택하세요. 각 trigger/replace 쌍이 스니펫이 되고, label은 이름이 되며, {{date}}, {{clipboard}}, 폼 필드는 플레이스홀더로 변환됩니다. 셸 명령어 변수와 정규식 트리거는 GUI에 대응하는 기능이 없어 텍스트로 남아 검토할 수 있습니다.

정규식 트리거나 셸 명령어 매치를 잃게 되나요?

네. 이들은 Espanso의 YAML/스크립팅 모델에 특화된 기능이며, GUI 모델에는 대응 기능이 없습니다. 정규식 트리거나 셸 명령어가 핵심이라면 Espanso를 계속 사용하고, 단순하고 정적인 스니펫만 GUI 확장기로 관리하는 것을 권장합니다.

:br/addr 같은 트리거 텍스트를 그대로 유지할 수 있나요?

네. 트리거 필드는 사용자가 입력하는 모든 텍스트를 허용하며, 관습적으로 사용하는 선행 :/도 그대로 유지됩니다. 마이그레이션 중에 약어 스타일을 바꿀 필요는 없습니다.

Espanso 공식 GUI가 있나요? 완전히 도구를 바꾸기 전에 써봐야 하나요?

공식 GUI는 없습니다. espansoGUI, EspansoEdit, EspansoGUI IDE 같은 커뮤니티 프로젝트가 그래픽 레이어를 추가하지만, 모두 별도의 자원봉사자가 관리하는 도구이며 동일한 YAML 파일 위에서 작동합니다 — 여전히 원시 설정과 한 단계 떨어져 있습니다. GUI가 단순한 부가 기능이 아니라 제품 그 자체인 도구를 원한다면 이 마이그레이션이 그 차이를 만듭니다.

관련 글

출처