이 νŽ˜μ΄μ§€λŠ” 에디터 ν™•μž₯ κΈ°λŠ₯을 μœ„ν•œ μƒνƒœ 관리에 λŒ€ν•œ μ†Œκ°œλ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.

Note

이 νŽ˜μ΄μ§€λŠ” Obsidian ν”ŒλŸ¬κ·ΈμΈ 개발자λ₯Ό μœ„ν•΄ 곡식 CodeMirror 6 λ¬Έμ„œλ₯Ό μš”μ•½ν•œ κ²ƒμž…λ‹ˆλ‹€. μƒνƒœ 관리에 λŒ€ν•œ 더 μžμ„Έν•œ μ •λ³΄λŠ” State and Updatesλ₯Ό μ°Έμ‘°ν•˜μ„Έμš”.

μƒνƒœ λ³€κ²½

λŒ€λΆ€λΆ„μ˜ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œλŠ” μ†μ„±μ΄λ‚˜ λ³€μˆ˜μ— μƒˆ 값을 ν• λ‹Ήν•˜μ—¬ μƒνƒœλ₯Ό μ—…λ°μ΄νŠΈν•©λ‹ˆλ‹€. 결과적으둜 이전 값은 μ˜μ›νžˆ μ‚¬λΌμ§‘λ‹ˆλ‹€.

let note = '';
note = 'Heading'
note = '# Heading'
note = '## Heading' // 이 변경을 μ–΄λ–»κ²Œ μ·¨μ†Œν• κΉŒμš”?

μ‚¬μš©μž μž‘μ—… 곡간에 λŒ€ν•œ λ³€κ²½ 사항을 μ‹€ν–‰ μ·¨μ†Œ/λ‹€μ‹œ μ‹€ν–‰ν•˜λŠ” κΈ°λŠ₯을 μ§€μ›ν•˜κΈ° μœ„ν•΄ Obsidianκ³Ό 같은 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ€ λŒ€μ‹  λͺ¨λ“  λ³€κ²½ μ‚¬ν•­μ˜ 기둝을 μœ μ§€ν•©λ‹ˆλ‹€. λ³€κ²½ 사항을 μ·¨μ†Œν•˜λ €λ©΄ λ³€κ²½ μ „μ˜ μ‹œμ μœΌλ‘œ λŒμ•„κ°ˆ 수 μžˆμŠ΅λ‹ˆλ‹€.

μƒνƒœ
0
1Heading
2# Heading
3 Heading

TypeScriptμ—μ„œλŠ” λ‹€μŒκ³Ό 같이 ν‘œν˜„ν•  수 μžˆμŠ΅λ‹ˆλ‹€:

const changes: ChangeSpec[] = [];
 
changes.push({ from: 0, insert: 'Heading' });
changes.push({ from: 0, insert: '# ' });
changes.push({ from: 0, insert: '#' });

νŠΈλžœμž­μ…˜

ν…μŠ€νŠΈλ₯Ό μ„ νƒν•˜κ³  ν°λ”°μ˜΄ν‘œ "λ₯Ό 눌러 선택 μ˜μ—­ μ–‘μͺ½μ— λ”°μ˜΄ν‘œλ₯Ό μΆ”κ°€ν•˜λŠ” κΈ°λŠ₯을 상상해 λ³΄μ„Έμš”. 이 κΈ°λŠ₯을 κ΅¬ν˜„ν•˜λŠ” ν•œ κ°€μ§€ 방법은:

  1. 선택 μ˜μ—­ μ‹œμž‘μ— " μ‚½μž…
  2. 선택 μ˜μ—­ 끝에 " μ‚½μž…

κ΅¬ν˜„μ—λŠ” _두 개_의 μƒνƒœ 변경이 ν¬ν•¨λ©λ‹ˆλ‹€. 이λ₯Ό μ‹€ν–‰ μ·¨μ†Œ 기둝에 μΆ”κ°€ν•˜λ©΄ μ‚¬μš©μžλŠ” 각 λ”°μ˜΄ν‘œμ— λŒ€ν•΄ ν•œ λ²ˆμ”© 두 번 μ‹€ν–‰ μ·¨μ†Œν•΄μ•Ό ν•©λ‹ˆλ‹€. 이λ₯Ό ν”Όν•˜κΈ° μœ„ν•΄ μ΄λŸ¬ν•œ λ³€κ²½ 사항을 κ·Έλ£Ήν™”ν•˜μ—¬ ν•˜λ‚˜λ‘œ ν‘œμ‹œν•  수 μžˆλ‹€λ©΄ μ–΄λ–¨κΉŒμš”?

에디터 ν™•μž₯ κΈ°λŠ₯μ—μ„œ ν•¨κ»˜ λ°œμƒν•˜λŠ” μƒνƒœ λ³€κ²½ 그룹을 _νŠΈλžœμž­μ…˜_이라고 ν•©λ‹ˆλ‹€.

μ§€κΈˆκΉŒμ§€ 배운 λ‚΄μš©μ„ κ²°ν•©ν•˜κ³  단일 μƒνƒœ λ³€κ²½λ§Œ ν¬ν•¨ν•˜λŠ” νŠΈλžœμž­μ…˜μ„ ν—ˆμš©ν•œλ‹€λ©΄ μƒνƒœλ₯Ό _νŠΈλžœμž­μ…˜ 기둝_으둜 κ°„μ£Όν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ•žμ„œ μ–ΈκΈ‰ν•œ λ”°μ˜΄ν‘œ 감싸기 κΈ°λŠ₯을 에디터 ν™•μž₯ κΈ°λŠ₯으둜 κ΅¬ν˜„ν•˜λ €λ©΄ λ‹€μŒκ³Ό 같이 에디터 뷰에 νŠΈλžœμž­μ…˜μ„ μΆ”κ°€(λ˜λŠ” 전달)ν•©λ‹ˆλ‹€:

view.dispatch({
  changes: [
    { from: selectionStart, insert: `"` },
    { from: selectionEnd, insert: `"` }
  ]
});

λ‹€μŒ 단계

이 νŽ˜μ΄μ§€μ—μ„œλŠ” μƒνƒœλ₯Ό 일련의 μƒνƒœ λ³€κ²½μœΌλ‘œ λͺ¨λΈλ§ν•˜λŠ” 방법과 이λ₯Ό νŠΈλžœμž­μ…˜μœΌλ‘œ κ·Έλ£Ήν™”ν•˜λŠ” 방법에 λŒ€ν•΄ λ°°μ› μŠ΅λ‹ˆλ‹€.

μ—λ””ν„°μ—μ„œ μ‚¬μš©μž μ •μ˜ μƒνƒœλ₯Ό κ΄€λ¦¬ν•˜λŠ” 방법을 배우렀면 State fieldsλ₯Ό μ°Έμ‘°ν•˜μ„Έμš”.