가이드

단축키

gori의 단축키는 Hotkeys 편집기에서 재지정합니다. Preferences(Ctrl-,Editor & KeysHotkeys에서 )로 들어가거나, 커맨드 팔레트(Ctrl-P)의 **settings:hotkeys**로 바로 갈 수 있습니다. 에디터는 재지정 가능한 모든 동작을 발생 위치별(GLOBAL, HISTORY, REPEATER, FUZZER, INTERCEPT, …)로 묶어 나열합니다. 행을 고르고, 새 키를 누르면, 끝입니다.

Ctrl-,  → Editor & Keys → Hotkeys
Ctrl-P  → settings:hotkeys

키 예산 (새 단축키가 키를 얻는 방식)

맨 글자 키는 귀합니다. 새 동작은 키를 차지하기 전에 가격 등급을 정해야 합니다.

등급 가격 언제 예시
L0 구조적 Esc Enter Tab 화살표 Space(리더) 항상 포커스, 열기/닫기, READ/INS, space 메뉴
L1 루프 맨 글자 또는 스티키 패밀리(^R) 분당 여러 번 History/Issues j/k / y t(표시) v(뷰), 서브탭 스트립 t(표시), Repeater 전송
L2 세션 호흡 Global 맨 글자(상한: c i s만) 세션당 여러 번 capture, intercept, scope 렌즈
L3 맥락적 Space 다음 니모닉 가끔, 패널 로컬 compare, mine, send-group, copy-as
L4 드문 동작 / 설정 팔레트(Ctrl-P) 또는 Preferences(Ctrl-,) 드물게 설정, Match & Replace, 알림

경험칙:

편집

에디터는 작업 복사본을 엽니다. Enter를 누르기 전에는 아무것도 저장되지 않으며, Esc는 모든 변경을 버립니다.

동작
/ (또는 j / k), 휠 선택 이동
e 또는 Space 선택한 동작 재지정, 그다음 새 키를 누릅니다
x 또는 Backspace 선택한 동작의 바인딩 해제
r 선택한 동작을 기본값으로 초기화
Shift-R 모든 동작을 기본값으로 초기화
/ OS 기본 프로파일 순환(아래 참고)
Enter 저장 + 적용(실시간, 재시작 없음)
Esc 버리고 닫기

재지정을 시작하면 푸터에 *"press a key to bind"*가 표시됩니다. 아래 예약된 키에 나열된 것들을 제외하고, 원하는 키 조합을 수식 키와 함께 누르세요. 키가 예약되어 있거나 같은 위치의 다른 동작에서 이미 사용 중이면, 에디터는 이를 거부하고 이유를 알려줍니다. 키 입력 대기 상태는 그대로 열려 있으므로 다른 키를 눌러 보면 됩니다.

바인딩된 것이 없으면 행의 키 조합에 (unbound)가 표시됩니다. 마커는 기본값에서 변경했음을 뜻하고, ·은 기본값 상태를 뜻합니다.

충돌

두 동작은 다른 위치에서 발생할 때만 키를 공유할 수 있습니다. 이는 의도된 동작입니다(s는 거의 모든 곳에서 "scope 렌즈"지만 Comparer 탭에서는 "swap", c는 Intercept 큐에서 catch 방향을 순환하는 것을 제외하면 어디서나 "toggle capture"). 에디터는 같은 위치의 충돌만 막습니다. 거기서는 키맵이 둘 중 하나만 남길 수 있기 때문입니다.

예약된 키

일부 키는 터미널이나 gori가 필요로 하므로 재지정할 수 없습니다.

Ctrl-S 같은 흐름 제어/시그널 키 조합은 예약되어 있지 않습니다. gori는 터미널을 raw 모드로 실행하므로 이들이 앱에 도달합니다(Repeater의 SNI 토글은 Ctrl-S로 제공됩니다).

OS 기본 프로파일

/ 프로파일 선택기는 새(재정의되지 않은) 바인딩이 어떤 기본 키 세트를 사용할지 고릅니다: auto(gori가 빌드된 플랫폼을 추적), macOS, Linux, Windows. 직접 지정한 재바인딩은 OS와 무관하게 항상 선택한 프로파일 위에 얹힙니다.

현재 OS별 기본값은 동일합니다. 터미널에서 Ctrl+글자 조합은 macOS, Linux, Windows 모두에서 애플리케이션에 도달하며, 정말 위험한 키는 위의 예약된 제어 문자들입니다(어디서나 차단됨). 프로파일 메커니즘은 실제 터미널별 충돌이 생겼을 때 디스패치를 건드리지 않고 바로잡을 수 있도록 마련해 둔 것입니다. 지금으로서는 auto가 모두에게 옳은 선택입니다.

커맨드 모디파이어

예약된 키에 나열된 키 조합 패밀리는 키맵보다 먼저 하드코딩된 가드가 소비하기 때문에 고정입니다. 문제는 터미널이 Ctrl 형태를 아예 전달하지 않는 경우입니다.

Preferences → Editor & Keys → Keys → Command modifier(Ctrl-,), 또는 팔레트의 **settings:keys**에서 이 패밀리를 CtrlOption (⌥) 사이에서 고를 수 있습니다. 이는 교체가 아니라 별칭 추가입니다. Option을 고르면 ⌥P로도 팔레트가 열리고 ^P도 그대로 동작합니다. 바뀌는 것은 표시뿐입니다 — 상태 힌트, Help 탭, 팔레트가 모두 ⌥P, ⌥N, ⌥1-9로 표시됩니다.

모디파이어 동작
Ctrl (기본) ^P ^N ^W ^G ^F ^B ^E ^Z ^, ^1-^9
Option (⌥) 위 전부 더하기 ⌥P ⌥N ⌥W ⌥G ⌥F ⌥B ⌥E ⌥Z ⌥, ⌥1-⌥9

Ctrl이 계속 살아있으므로 Option을 골라도 팔레트에 못 들어가는 상황은 생기지 않습니다. 다만 바꾸기 전에 알아둘 점이 있습니다 — macOS에서는 터미널이 Option을 Meta/Esc+로 보내도록 설정해야 합니다. 그러지 않으면 ⌥Pπ로 도착해 아무 일도 일어나지 않습니다.

하지 않는 일 두 가지. 에디터에서 이미 재지정할 수 있는 키 조합(^R send, ^S SNI 등)은 건드리지 않습니다 — 그건 동작별로 재지정하세요. 그리고 이 패밀리의 Option 조합(예: alt-n)에 어떤 동작을 바인딩해 뒀다면, 별칭을 켜는 순간 가려집니다. 가드가 이기고 해당 동작은 기본값으로 되돌아가며, 저장 토스트가 그 동작을 알려줍니다.

첫 실행 마법사의 Review 스텝에서도 이 값을 요약해 보여주므로, 앱에 들어가기 전에 모디파이어를 고를 수 있습니다.

저장 위치

~/.gori/settings.json(디렉터리는 $GORI_HOME으로 재정의)의 hotkeys 블록에, 필요한 값만 담아 저장됩니다. 변경한 바인딩만 동작 id별 키 조합 라벨 목록으로 기록되며, 빈 목록은 명시적 바인딩 해제입니다.

{
  "hotkeys": {
    "os": "auto",
    "command_modifier": "alt",
    "bindings": {
      "rules.edit": ["g"],
      "scope.edit": []
    }
  }
}

command_modifier"ctrl"(기본) 또는 "alt"이며, 알 수 없는 값은 "ctrl"로 되돌아갑니다. 손대지 않은 설치본은 hotkeys 블록 자체를 쓰지 않습니다.

없는 동작은 프로파일 기본값을 사용합니다. 알 수 없는 id와 파싱할 수 없는 키 조합은 로드할 때 무시되므로, 수동 편집이나 버전 차이가 있어도 무리 없이 동작합니다.

제약

다음 단계