์ด ๋ฌธ์„œ์˜ ์›๋ณธ์€ ์™ธ๋ถ€ ์œ„ํ‚ค์—์„œ ๊ฐ€์ ธ์™”์Šต๋‹ˆ๋‹ค.
์› ๊ฐœ๋ฐœ์ž
ํ˜„์žฌ ๊ฐœ๋ฐœ์ž๋“ค
GNU ํ”„๋กœ์ ํŠธ
์ตœ์ดˆ ๋ฆด๋ฆฌ์Šค
์•ˆ์ • ๋ฒ„์ „
27.1 (2020๋…„ 8์›” 11์ผ)
ํ”„๋ฆฌ๋ทฐ ๋ฒ„์ „
ํ˜„์žฌ ์—†์Œ
๊ฐœ๋ฐœ ์–ธ์–ด
์šด์˜ ์ฒด์ œ
ํฌ๋กœ์Šค ํ”Œ๋žซํผ
์–ธ์–ด
๋ผ์ด์„ ์Šค
GNU GPLv3
์›น ์‚ฌ์ดํŠธ

1. ๊ฐœ์š”2. ์ƒ์„ธ3. ์—ฐํ˜4. GNU Emacs5. ๋ณ€์ข…๋“ค
5.1. XEmacs5.2. ๋‹ค๋ฅธ ๋ณ€์ข…๋“ค
6. ํŠน์ง•7. Emacs Lisp Package Archive, ELPA8. ์„ฑ๋Šฅ9. ํ”Œ๋žซํผ10. ์ง€์—ญํ™”11. ์‚ฌ์šฉ์ž ์ •์˜12. ์‚ฌ์šฉ๋ฒ•
12.1. ๋ช…๋ น12.2. ๋ฒ„ํผ
13. ๋น„ํŒ
13.1. RSI13.2. ๋ชจ๋‹ฌ ํŽธ์ง‘๊ธฐ13.3. ์ปค์„œ์ด๋™13.4. ์ด๋งฅ์Šค๋Š” OS13.5. ๋‚œํ•ดํ•จ
14. Elisp15. ์ฐธ๊ณ 
15.1. ๋‹ค์šด ๋ฐ›๊ธฐ

1. ๊ฐœ์š”[ํŽธ์ง‘]



์ด๋งฅ์Šค. ์œ ๋ช…ํ•œ UNIX ํ™˜๊ฒฝ ๋ฌธ์„œ ํŽธ์ง‘๊ธฐ ์ค‘ ํ•˜๋‚˜์ด๋‹ค.

2. ์ƒ์„ธ[ํŽธ์ง‘]

ํ™•์žฅ์„ฑ์ด ๋งค์šฐ ๋†’์€ ๊ฒƒ์œผ๋กœ ์œ ๋ช…ํ•œ๋ฐ, ํ‚ค๋ณด๋“œ ๋‹จ์ถ•ํ‚ค๋งŒ ํ•ด๋„ 1,000๊ฐœ๊ฐ€ ๋„˜์–ด๊ฐ€๋Š” ์—ฝ๊ธฐ์ ์ธ ๋ฉด๋ชจ๋ฅผ ๊ฐ–์ถ”๊ณ  ์žˆ๋‹ค. ๋”๊ตฐ๋‹ค๋‚˜ ๋งคํฌ๋กœ๊ฐ€ ์—„์ฒญ๋‚˜๊ฒŒ ๋งŽ์•„์„œ, ๋‹ค ์ตํžˆ๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅ์— ๊ฐ€๊น๋‹ค. 1970๋…„ ์ค‘๋ฐ˜๋ถ€ํ„ฐ ๊ฐœ๋ฐœ์ด ์‹œ์ž‘๋˜์—ˆ์œผ๋ฉฐ 2019๋…„ ํ˜„์žฌ๊นŒ์ง€๋„ ํ™œ๋ฐœํ•˜๊ฒŒ ๊ฐœ๋ฐœ์ด ์ด๋ฃจ์–ด์ง€๊ณ  ์žˆ๋Š” ์ƒํ™ฉ์ด๋‹ค. ์—ญ์‚ฌ๊ฐ€ ๊ธด ๋งŒํผ ์—ฌ๋Ÿฌ ๋ฒ„์ „์ด ์žˆ๋Š”๋ฐ ์—ญ์‹œ ๊ฐ€์žฅ ์ •ํ†ต์œผ๋กœ ์ธ์ •๋ฐ›๋Š” ๋ฒ„์ „์€ GNU Emacs๋กœ, ํ˜„์žฌ GNU Project(์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธ)์—์„œ ๊ด€๋ฆฌํ•˜๋Š” ๋ฒ„์ „์ด๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด ์™ธ์—๋„ XEmacs, Aquamacs ๋“ฑ ๋‹ค์–‘ํ•œ ๋ฒ„์ „์ด ์กด์žฌํ•œ๋‹ค.

๋ณธ๋”” TECO๋ผ๋Š” ํŽธ์ง‘๊ธฐ์— ๋งคํฌ๋กœ๋ฅผ ์งœ ๋„ฃ์œผ๋ฉด์„œ ๊ฐœ๋ฐœ์ด ์‹œ์ž‘๋˜์—ˆ๋Š”๋ฐ ์œ ๋ช…ํ•œ ๋ฆฌ์ฒ˜๋“œ ์Šคํ†จ๋จผ์ด ์ฒซ ์ฃผ์ž๋กœ ๊ฐœ๋ฐœ์„ ์‹œ์ž‘ํ–ˆ๋‹ค. ์ดํ›„ TECO ํŽธ์ง‘๊ธฐ ๋งคํฌ๋กœ๋ฅผ ์งœ๋˜ ์—ฌ๋Ÿฌ ์‚ฌ๋žŒ๋“ค์ด ํ•ฉ์„ธํ•˜์—ฌ ๋ณธ๊ฒฉ์ ์œผ๋กœ ๊ฐœ๋ฐœ์ด ์‹œ์ž‘๋˜์—ˆ๋‹ค.



UNIX ๊ณ„์—ด์—๋Š” ์ด๋งฅ์Šค ๋ง๊ณ ๋„ vim์ด๋ผ๋Š” ๋…€์„์ด ์žˆ๋Š”๋ฐ, ์ด ๋‘˜์ด ํŽธ์ง‘๊ธฐ ์–‘๊ฐ• ์ฒด์ œ๋ฅผ ๊ตฌ์ถ•ํ•˜๊ณ  ์žˆ๋Š” ์ƒํ™ฉ์ด๊ณ , ์˜ค๋žซ๋™์•ˆ ๋‘˜์„ ๋น„๊ตํ•˜๋Š” ๋–ก๋ฐฅ๊ณผ ํ•จ๊ป˜ ํ‚ค๋ฐฐ๊ฐ€ ์ง„ํ–‰๋˜์—ˆ๋‹ค. ์‹ฌ์ง€์–ด ํŽธ์ง‘๊ธฐ ์ „์Ÿ์ด๋ผ๋Š” ์šฉ์–ด๋ฅผ ์‚ฌ์šฉํ•  ์ •๋„. ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ ๋ฉด์—์„œ๋Š” ์ด๋งฅ์Šค๊ฐ€ ํ™•์‹คํ•œ ์šฐ์œ„์— ์žˆ์—ˆ์ง€๋งŒ, ๊ฐ€๋ฒผ์›€ ๋ฐ ํŽธ๋ฆฌํ•œ ํ™˜๊ฒฝ ์ด๋™์— ์žˆ์–ด์„œ๋Š” vim์ด ์šฐ์œ„์— ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฒฐ๊ตญ ํŽธ์ง‘๊ธฐ ์›Œ๋Š” ๊ฒฐ๋ก ์ด ๋‚  ์ˆ˜ ์—†๋Š” ๋„ค๋ฒ„์—”๋”ฉ ์Šคํ† ๋ฆฌ๊ฐ€ ๋˜์—ˆ๋‹ค. M16 ์†Œ์ด vs. AK-47 ๊ณผ ๋น„์Šทํ•œ ๊ฒฝ์šฐ๋ผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์—ญ์‹œ๋‚˜ ์ตœ๊ฐ•์ž๋Š” ed

vim์ด vi์˜€๋˜ ์‹œ์ ˆ์—๋Š” vim script ๊ฐ™์€ ๊ฒƒ์ด ์กด์žฌํ•˜์ง€๋„ ์•Š์•˜๊ธฐ์— ํ™•์žฅ ๊ธฐ๋Šฅ์„ ๊ฐœ๋ฐœํ•˜๊ธฐ์— ๋ฌด๋ฆฌ๊ฐ€ ์žˆ์—ˆ๋‹ค. 2020๋…„ ํ˜„์žฌ๋Š” vim script๋„ ์—ฌ๋Ÿฌ ํŒจ๋Ÿฌ๋‹ค์ž„์„ ์ฑ„์šฉํ•˜์—ฌ ์ƒ๋‹นํžˆ ๋ฒ”์šฉ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์— ๊ฐ€๊นŒ์›Œ์กŒ๊ธฐ์— ์ด๋งฅ์Šค ๋ชป์ง€ ์•Š๊ฒŒ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๊ณ , ์‹ค์ œ๋กœ๋„ ๊ต‰์žฅํžˆ ๋งŽ์€ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์กด์žฌํ•œ๋‹ค. ๊ทธ๋ ‡๋‹ค๊ณ  ํ•˜์—ฌ๋„ ์—ฌ์ „ํžˆ vim์ด ์ด๋งฅ์Šค์˜ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ธฐ๋Š” ๋ฌด๋ฆฌ๊ฐ€ ์žˆ์œผ๋ฉฐ, ์ด๋งฅ์Šค๋„ ๋งŽ์€ ํ™•์žฅ ๊ธฐ๋Šฅ๋“ค์ด ๊ฐœ๋ฐœ๋˜๊ณ  ์žˆ๊ธฐ์—, vim์— ๋น„ํ•ด ํ™•์žฅ์„ฑ์ด๋‚˜ ์ œ๊ณต๋˜๋Š” ๊ธฐ๋Šฅ์ด ๋–จ์–ด์ง„๋‹ค๊ณ  ๋ณด๊ธฐ ํž˜๋“ค๋‹ค. vim์ด๋‚˜ Emacs๋‚˜ ํ„ฐ๋ฏธ๋„์—์„œ๋„ ๊ธฐ๋Šฅ์„ ์˜จ์ „ํžˆ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ƒ๊ฐ๋ณด๋‹ค ๋งŽ์€ ํ”Œ๋Ÿฌ๊ทธ์ธ๋“ค์ด TUI์™€ ์ž˜ ์•ˆ ๋งž๋Š”๋‹ค. ๊ฒŒ๋‹ค๊ฐ€ ๋ฐ˜๋Œ€๋กœ Emacs์—์„œ ํ„ฐ๋ฏธ๋„์„ ์—๋ฎฌ๋ ˆ์ดํŒ… ํ•  ์ˆ˜ ์žˆ๊ธฐ์—...[1] ๋‹ค๋งŒ vim์ด๋‚˜ Emacs๋‚˜ ์Šคํฌ๋ฆฝํŠธ ์ธํ„ฐํ”„๋ฆฌํ„ฐ๊ฐ€ ๋ฌด์ง„์žฅ ๋А๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์— ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋งŽ์ด ์„ค์น˜ํ•˜๋ฉด ๋‘˜ ๋‹ค ๋งŽ์ด ๋А๋ ค์ง„๋‹ค. Emacs์—๋Š” Vim์˜ ํ‚ค ๋ฐ”์ธ๋”ฉ์„ ์ง€์›ํ•˜๋Š” Evil ๋ชจ๋“œ๊ฐ€ ์žˆ๊ณ , Spacemacs์™€ ๊ฐ™์€ ํ‚คํŠธ๋ฅผ ์ด์šฉํ•˜๋ฉด ๊ธฐ๋ณธ ์„ค์ •์ด Vim ๋ฐ”์ธ๋”ฉ์ด๊ธฐ ๋•Œ๋ฌธ์— Vim์„ ์“ธ ์ค„ ์•ˆ๋‹ค๋ฉด ์ƒ๋‹นํžˆ ์‰ฝ๊ฒŒ Emacs๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

์‹ค์ œ๋กœ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์œˆ๋„์šฐ์ธ ๊ฒŒ์ž„ ์„œ๋ฒ„๋ฅผ ์ œ์™ธํ•œ ๊ฑฐ์˜ ๋Œ€๋ถ€๋ถ„์˜ ๋ถ„์•ผ์—์„œ๋Š” ์œ ๋‹‰์Šค/๋ฆฌ๋ˆ…์Šค๊ฐ€ ์••๋„์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๊ณ  ์ฆ๊ฐ€ํ•˜๋Š” ์ถ”์„ธ์ด๋‹ค. ํŠนํžˆ ๋ฐœ์ „์†Œ ์‹œ์Šคํ…œ๊ณผ ๋ณ€์ „์†Œ ์‹œ์Šคํ…œ์€ ์œ ๋‹‰์Šค/๋ฆฌ๋ˆ…์Šค๊ฐ€ ์ „๋ถ€๋ผ ํ•ด๋„ ์ข‹์„ ์ •๋„์ด๋‹ค. ์ด ๋•Œ, ์—…์ฒด์—์„  ๋‚ฉํ’ˆํ•  ์„œ๋ฒ„์— ์—…๋ฌด์™€ ๊ด€๊ณ„์—†๋Š” ํˆด์ด๋‚˜ ์•ฑ์€ ์ตœ์†Œํ•œ์œผ๋กœ ์„ค์น˜ํ•˜๊ฑฐ๋‚˜ ๋””ํดํŠธ๋ฅผ ์œ ์ง€ํ•˜๋Š”๋ฐ vi/vim์ด ์•ˆ ๊น”๋ฆฐ ๋ฆฌ๋ˆ…์Šค/์œ ๋‹‰์Šค ๊ณ„์—ด์€ ์‚ฌ์‹ค์ƒ ์กด์žฌํ•˜์ง€ ์•Š๋‹ค ๋ณด๋‹ˆ ์ž์—ฐํžˆ ๊ทธ๋Ÿฌํ•œ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์˜ ์—”์ง€๋‹ˆ์–ด๋“ค์€ ํ˜„์žฅ๊ณผ ๋™์ผํ•œ ํˆด์— ์ต์ˆ™ํ•ด์ง€๋Š” ๊ฒŒ ์œ ๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๊ธฐ๋„ ํ•˜๊ณ , ์ด๋งฅ์Šค ํŠน์œ ์˜ ์ปค์Šคํ…€์ด ์ž์‹ ์ด ์„ค์ •ํ•˜์ง€ ์•Š์€ ํ™˜๊ฒฝ์—์„œ์˜ ์‚ฌ์šฉ์— ์‹ฌํ•œ ์ด์งˆ๊ฐ์„ ๋А๋ผ๊ฒŒ ํ•˜๋Š” ๊ฒƒ๋„ ์›์ธ์œผ๋กœ ์ง€์ ๋œ๋‹ค. ๋‹ค๋งŒ TRAMP๋ฅผ ์“ฐ๋ฉด ์• ์ดˆ์— ์„œ๋ฒ„์— Emacs๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ์„ ํ•„์š”๋„, ํ„ฐ๋ฏธ๋„๋กœ ๋กœ๊ทธ์ธ ํ•  ํ•„์š”๋„ ์—†์ด, ๋กœ์ปฌ ํŽธ์ง‘๊ธฐ์—์„œ ์„œ๋ฒ„ ํŒŒ์ผ์„ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๊ธฐ์กด ์„ค์น˜ ์œ ๋ฌด๋Š” ๊ทธ๋‹ค์ง€ ์˜ํ–ฅ์ด ์—†๋‹ค. ์‚ฌ์‹ค Emacs๋ฅผ ์“ฐ๋Š” ์‚ฌ๋žŒ๋“ค์€ VI๋ฅผ ๋Œ€์ฒด๋กœ ์“ธ ์ค„ ์•„๋Š” ์‚ฌ๋žŒ๋“ค์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋ƒฅ ๊น”๋ ค ์žˆ๋Š” ๊ฑฐ ์“ด๋‹ค๋Š” ๊ฒŒ ๋” ์ •ํ™•ํ•œ ์–˜๊ธฐ์ผ ๋“ฏ. ๊ฒŒ๋‹ค๊ฐ€ Emacs ์˜ค๋ž˜ ์“ฐ๋Š” ์‚ฌ๋žŒ๋“ค์€ ๋‹น์—ฐํžˆ ์ž์‹ ์˜ Setting์„ ์˜ฎ๊ธธ ๋ฐฉ๋ฒ•๋„ ๋งˆ๋ จํ•ด ๋†“๋Š”๋‹ค. ๋Œ€ํ‘œ์ ์œผ๋กœ GitHub์— ๊ณต์œ ํ•ด๋†“๊ฑฐ๋‚˜ tar๋กœ Portable ์ €์žฅ์žฅ์น˜์— ์ €์žฅํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. Emacs์™€ vim์— ๋Œ€ํ•œ ๊ณต์ •ํ•œ ๋น„๊ต๋Š” Emacs๋Š” vim๋งŒํผ ๋งŽ์€ ๋ฐฐํฌํŒ์— ๊ธฐ๋ณธ์œผ๋กœ ๊น”๋ ค์žˆ์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์œผ๋กœ ๋งˆ๋ฌด๋ฆฌ ์ง€์–ด์•ผ ํ•œ๋‹ค.

3. ์—ฐํ˜[ํŽธ์ง‘]

์ฒ˜์Œ ๊ฐœ๋ฐœ์ด ์‹œ์ž‘๋œ ๊ณณ์€ MIT AI Lab์—์„œ Incompatible Timesharing System (ITS) ์ด๋ผ๋Š” OS์— ์“ฐ์ด๋˜ TECO(Tape Editor and Corrector)๋ผ๋Š” ํŽธ์ง‘๊ธฐ์—์„œ ์‹œ์ž‘๋˜์—ˆ๋‹ค. ์š”์ฆ˜ ์‰ฝ๊ฒŒ ์ ‘ํ•  ์ˆ˜ ์žˆ๋Š” ํŽธ์ง‘๊ธฐ๋“ค๊ณผ ๋‹ฌ๋ฆฌ TECO๋Š” ํŽธ์ง‘ ๋ชจ๋“œ, ์ถ”๊ฐ€ ๋ชจ๋“œ, ๋ฌธ์„œ ์ถœ๋ ฅ ๋ชจ๋“œ๊ฐ€ ๋”ฐ๋กœ ์กด์žฌํ–ˆ์œผ๋ฉฐ ํ…์ŠคํŠธ๋ฅผ ํƒ€์ดํ•‘ํ•ด ์ž…๋ ฅํ–ˆ์–ด๋„ ๋ฐ”๋กœ ํ˜„์žฌ ํŽธ์ง‘ ์ค‘์ธ ๋ฌธ์„œ์— ๋ฐ˜์˜๋˜์ง€ ์•Š๊ณ  ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•˜์—ฌ ํ•ด๋‹น ๋ฌธ์ž์—ด์„ ์ž…๋ ฅํ•˜๋„๋ก ํ”„๋กœ๊ทธ๋žจ ํ•˜์—ฌ์•ผ ๋น„๋กœ์†Œ ์ž…๋ ฅ๋˜๋Š” ๋ถˆํŽธํ•จ์„ ์ž๋ž‘ํ–ˆ๋‹ค. ์‚ฌ์‹ค ์ด ๋‹น์‹œ ํŽธ์ง‘๊ธฐ๋“ค์€ ์ด ์ •๋„๋ฉด ํŽธ๋ฆฌํ•œ ๊ฒƒ์ด์—ˆ๋‹ค. ์˜›๋‚ ์—๋Š” ํŽ€์น˜ ์นด๋“œ๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ–ˆ๋‹ค๋Š” ๊ฒƒ์„ ์ƒ๊ธฐํ•ด ๋ณด์ž. ์ด์™€ ๋น„์Šทํ•œ ํŽธ์ง‘๊ธฐ๋กœ vi์˜ ์ „์‹ ์ธ ed๋ผ๋Š” ๋…€์„์ด ์กด์žฌํ•œ๋‹ค.

์Šคํ†จ๋จผ์€ 1972~1974๋…„ ๋™์•ˆ ์Šคํƒ ํผ๋“œ์˜ AI Lab ์„ ๋ฐฉ๋ฌธํ•˜๋ฉด์„œ E๋ผ๋Š” ํŽธ์ง‘๊ธฐ๋ฅผ ์ ‘ํ•˜๊ฒŒ ๋˜๋Š”๋ฐ, ์ด๊ฒŒ ๋ฐ”๋กœ WYSIWYG(What You See Is What You Get)๊ธฐ๋Šฅ์„ ๊ฐ€์ง€๊ณ  ์žˆ์—ˆ๋‹ค. ์—ฌ๊ธฐ์— ๋†€๋ž€ ๋‚˜๋จธ์ง€ ์ดํ›„ MIT๋กœ ๋Œ์•„์™€์„œ TECO์— ๋น„์Šทํ•œ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ฒŒ ๋˜๊ณ , ํŽธ์˜๋ฅผ ์œ„ํ•ด ์—ฌ๋Ÿฌ ๋งคํฌ๋กœ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด์„œ ์ ์  ๋ถˆ๋ ค๋‚˜๊ฐ€๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค. ์ดํ›„ ๋งคํฌ๋กœ๊ฐ€ ์ ์  ๋งŽ์•„์ง์— ๋”ฐ๋ผ MACS๋ผ๋Š” ์€์–ด๊ฐ€ ์“ฐ์ด๊ฒŒ ๋˜์—ˆ๊ณ , Editing MACroS๋ผ๊ณ  ์•„์˜ˆ ์ƒˆ๋กœ์šด ์ด๋ฆ„์œผ๋กœ ๋ถ€๋ฅด๊ฒŒ ๋œ ๊ฒƒ์ด EMACS์˜ ์‹œ์ž‘์ด๋‹ค. ์ดˆ๊ธฐ ๋ฒ„์ „์€ MIT AI Lab์—์„œ ์“ฐ์ด๋˜ PDP ๊ณ„์—ด ์ปดํ“จํ„ฐ์—์„œ๋งŒ ์“ธ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

์ดํ›„ ๋‹ค๋ฅธ ๊ธฐ์ข…์— ์“ฐ์ผ ์ˆ˜ ์žˆ๋„๋ก ์ฝ”๋“œ๋ฅผ ๋‹ค์‹œ ์“ฐ๋Š” ๊ณผ์ •์—์„œ SINE, EINE, ZWEI ๊ฐ™์€ ํŽธ์ง‘๊ธฐ๊ฐ€ ๋‚˜์™”๋Š”๋ฐ, ์ด๋“ค์˜ ํŠน์ง•์€ LISP ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์งœ์—ฌ์กŒ๋‹ค๋Š” ๊ฒƒ์ด์—ˆ๋‹ค. ์ดํ›„ LISP ์–ธ์–ด๋Š” ๋ชจ๋“  Emacs ๋ฒ„์ „์—์„œ ์ฑ„์šฉ๋˜์—ˆ๊ณ  ํ˜„์žฌ๊นŒ์ง€๋„ GNU Emacs๋‚˜ ๋‚˜๋จธ์ง€ ๋ณ€์ข…๋“ค์€ ์ „๋ถ€ LISP ์–ธ์–ด ๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘๋™ํ•œ๋‹ค. 1981๋…„์— ๋“œ๋””์–ด C๋กœ ์“ฐ์—ฌ์ง„ Emacs๊ฐ€ UNIX์— ์“ฐ์ด๊ธฐ ์‹œ์ž‘ํ–ˆ๋Š”๋ฐ ์ด ๋‹น์‹œ์—๋Š” ์ž์œ  ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ์•„๋‹ˆ์—ˆ๋‹ค.

4. GNU Emacs[ํŽธ์ง‘]

์•ž์—์„œ ์–ธ๊ธ‰ํ•œ 1981๋…„ ๋ฒ„์ „์€ ์ƒ์šฉ์ด์—ˆ๊ธฐ์— 1984๋…„ ๋ฆฌ์ฒ˜๋“œ ์Šคํ†จ๋จผ์€ Emacs๋ฅผ ์ž์œ  ์†Œํ”„ํŠธ์›จ์–ด๋กœ ๋งŒ๋“ค๋ ค ํ–ˆ๋‹ค. 1981๋…„์˜ ์ƒ์šฉ ๋ฒ„์ „๊ณผ ๋‹ค๋ฅธ ์ ์€ LISP ์—”์ง„์„ ์˜ค๋ฆฌ์ง€๋„๋กœ ๊ต์ฒดํ•˜์˜€๊ณ  ๊ฑฐ์˜ ๋ชจ๋“  ์ฝ”๋“œ๋ฅผ ์ƒˆ๋กœ ์งœ ๋„ฃ์œผ๋ฉด์„œ GNU๋กœ์จ ์ตœ์ดˆ์˜ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ๋‚˜์˜ค๊ฒŒ ๋œ๋‹ค. ์ดํ›„ ์ƒ์šฉ ๋ฒ„์ „๋ณด๋‹ค ๋” ๋งŽ์€ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ฒŒ ๋˜์–ด ๊ฒฐ๊ตญ์—๋Š” ๋‹ค์‹œ UNIX๋กœ ๋Œ์•„์™€ ์ƒ์šฉ ๋ฒ„์ „์„ ๋ฐ€์–ด๋‚ด๊ฒŒ ๋˜์—ˆ๊ณ , UNIX์—์„œ ์‚ฌ์šฉ๋˜๋Š” Emacs ํŽธ์ง‘๊ธฐ์˜ ๊ฐ€์žฅ ๋Œ€ํ‘œ์ ์ธ ์˜ˆ๋กœ ์ž๋ฆฌ์žก๊ฒŒ ๋œ๋‹ค. ์ดํ›„ 1986๋…„์— ๋ณด์•ˆ ํ—ˆ์ ์ด ๋ฐœ๊ฒฌ๋˜์–ด ๋ฃจํŠธ ๊ณ„์ •์ด ํ„ธ๋ฆฌ๋Š” ์‚ฌ๊ฑด์ด ์ผ์–ด๋‚œ ํ›„ 1999๋…„๊นŒ์ง€ ์„ฑ๋‹น๊ณผ ์‹œ์žฅ ๋ชจ๋ธ์„ ๋„์ž…ํ•จ์— ๋”ฐ๋ผ ๊ฐœ๋ฐœ์ด ์ง€์ฒด๋˜๊ฒŒ ๋œ๋‹ค. ํ‘์—ญ์‚ฌ ํ˜„์žฌ๋Š” ์Šคํ†จ๋จผ์ด ์ง์ ‘ ๊ฐœ๋ฐœํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๊ณ  ์Šˆํ…ŒํŒ ๋ชจ๋‹ˆ์–ด(Stefan Monnier)์™€ ์ •์ด๋™(Chong Yidong)์—๊ฒŒ ๋ฌผ๋ ค์ฃผ์—ˆ๋‹ค.

5. ๋ณ€์ข…๋“ค[ํŽธ์ง‘]

5.1. XEmacs[ํŽธ์ง‘]

1991๋…„์— ์‹œ์ž‘๋œ ๊ฐ€์žฅ ์œ ๋ช…ํ•œ Emacs ๋ณ€์ข…์œผ๋กœ, Lucid Inc.์—์„œ GNU Emacs ์•ŒํŒŒ 19 ๋ฒ„์ „์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฐœ๋ฐœ๋˜์—ˆ๋‹ค. ์ดˆ์ฐฝ๊ธฐ์—๋Š” Lucid Emacs๋ผ ๋ถˆ๋ฆฌ๋‹ค XEmacs๋กœ ๋ฐ”๋€Œ์—ˆ๋‹ค. ํ˜„์žฌ๋Š” GPLv2 ๋ผ์ด์„ ์Šค๋ฅผ ํ†ตํ•ด ๊ณต์งœ๋กœ ํ’€๋ ค ์žˆ๋‹ค. GNU Emacs ๊ฐœ๋ฐœ์ด ์ง€์ฒด๋œ ํ‘์—ญ์‚ฌ๊ธฐ๊ฐ„ ์ค‘ C++ IDE๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•˜๋Š” ์ž…์žฅ์— ๋†“์ธ ๊ฐœ๋ฐœ์ž๋“ค์ด ์ง์ ‘ ๊ฐœ๋ฐœํ•œ ๊ฒƒ. ๋•๋ถ„์— ๊ฐœ๋ฐœ ๋‹น์‹œ์—๋Š” GNU Emacs๋ณด๋‹ค ํ›จ์”ฌ ๋ฏธ๋ คํ•œ GUI ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์—ˆ๋‹ค. ์›๋ž˜ Lucid Inc.์—์„œ ๊ฐœ๋ฐœ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ฒ˜์Œ์—๋Š” ๋‹น์—ฐํžˆ ์ƒ์šฉ์ด์—ˆ์œผ๋‚˜ 1994๋…„ ๋„์‚ฐํ•˜๋Š” ๋ฐ”๋žŒ์— ๊ฒฐ๊ตญ ์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ์ „ํ™˜ํ•˜๊ฒŒ ๋œ๋‹ค. ์ด๋ฆ„์„ XEmacs๋กœ ๋ฐ”๊พธ์—ˆ๋Š”๋ฐ X Window System๊ณผ๋Š” ์ „ํ˜€ ๊ด€๊ณ„๊ฐ€ ์—†๊ณ , X๋กœ ๋ถ™์ธ ์ด์œ ๋Š” ๋‹จ์ง€ ๋” ์ด์ƒ Lucid๋ฅผ ๋ถ™์ผ ์ด์œ ๊ฐ€ ์—†์—ˆ๊ธฐ ๋•Œ๋ฌธ.

์—ญ์‹œ๋‚˜ GNU Emacs์™€ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ ๋งŽ์€ ์–ธ์–ด๋ฅผ ์ง€์›(์ ์–ด๋„ ์ด๋“ค ์–ธ์–ด๋กœ ๋ฌธ์„œ๋ฅผ ์ž‘์„ฑ ๊ฐ€๋Šฅ)ํ•œ๋‹ค. ๋ฌผ๋ก , Windows์™€ macOS ํ”Œ๋žซํผ์—์„œ๋„ ๋Œ๋ฆด ์ˆ˜ ์žˆ๋‹ค. Emacs Lisp ์–ธ์–ด๋ฅผ ์ด์šฉํ•ด ์—ฌ๋Ÿฌ ๊ธฐ๋Šฅ์„ ๊ฑด๋“œ๋ฆด ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ๋„ ๋™์ผํ•˜๋‹ค. ์ด๋ ‡๋“ฏ์ด ๊ธฐ๋Šฅ์ด ํก์‚ฌํ•œ ๋งŒํผ GNU Emacs์™€ ์ €์ž‘๊ถŒ ๋ฌธ์ œ๋กœ ์‹œ๋„๋Ÿฌ์› ๋˜ ์ ์ด ์žˆ์ง€๋งŒ ๋ญ, ์ด๊ฒƒ๋„ ์ด์ œ๋Š” ์˜คํ”ˆ ์†Œ์Šค์ธ๋ฐ... ์•ž์—์„œ ์–ธ๊ธ‰๋˜์—ˆ๋“ฏ์ด XEmacs๋Š” ์›๋ž˜ ๊ธฐ์—…์šฉ์œผ๋กœ ๊ฐœ๋ฐœํ•œ ๊ฒƒ. ๊ฒŒ๋‹ค๊ฐ€ ํ˜„์žฌ XEmacs ์ฝ”๋“œ ์ „๋ฐ˜์˜ ์ €์ž‘๊ถŒ์„ ํ–‰์‚ฌํ•˜๋Š” ๊ณณ์€ ๋‹ค๋ฆ„ ์•„๋‹Œ GNU. ๊ฒŒ๋‹ค๊ฐ€ ์ง€๊ธˆ๋„ GNU Emacs์™€ ์ฝ”๋“œ๋ฅผ ๊ณต์œ ํ•  ์ •๋„.

5.2. ๋‹ค๋ฅธ ๋ณ€์ข…๋“ค[ํŽธ์ง‘]

์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋ณ€์ข…๋“ค์ด ๋‚˜์™”๋Š”๋ฐ, ์ผ๋ณธ์—์„œ ์œˆ๋„์šฐ์ฆˆ ๊ธฐ๋ฐ˜์œผ๋กœ ์ œ์ž‘๋œ Meadow, XEmacs์˜ ์‚ฌ์ƒ์•„ SXEmacs, OS X ์šฉ์œผ๋กœ ๊ฐœ๋ฐœ๋œ Aquamacs๊ฐ€ ์œ ๋ช…ํ•˜๋‹ค. ์ด๊ฒƒ๋“ค ์™ธ์—๋„ ํด๋ก  ๋ฒ„์ „๋“ค์ด ์•„ํƒ€๋ฆฌ ์‚ฌํƒœ๋ฅผ ๋ฐฉ๋ถˆ์ผ€ ํ•  ์ •๋„๋กœ ๋งŽ์ด ์ถœ์‹œ๋˜์—ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ๋œ ์ด์œ ๋Š” ๋‹น์‹œ Emacs ๊ฐ€ ๋Œ์•„๊ฐ€๋Š” ํ™˜๊ฒฝ์ด ๋น„๊ต์  ๊ณ ์‚ฌ์–‘์ด์—ˆ๊ธฐ ๋•Œ๋ฌธ. 32๋น„ํŠธ ์ฃผ์†Œ ๊ณต๊ฐ„๊ณผ 1๋ฉ”๋น„(MiB)๋ฐ”์ดํŠธ[2]์˜ ๋žจ์„ ํ•„์š”๋กœ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์œ ๋ช…ํ•œ ๋ณ€์ข…๋“ค์˜ ๋ฆฌ์ŠคํŠธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
  • Climacs: Common Lisp ์–ธ์–ด๋ฅผ ์“ฐ๋„๋ก ์ˆ˜์ •ํ•œ ๋ฒ„์ „.
  • E3
  • Edwin: MIT Scheme ์˜ ๊ธฐ๋ณธ ์—๋””ํ„ฐ.
  • Epsilon: ์—ญ์‹œ๋‚˜ ๋˜ ๋‹ค๋ฅธ ํด๋ก . DOS, Windows, Linux, FreeBSD, macOS, OS/2 ๋“ฑ ์—ฌ๋Ÿฌ ์šด์˜์ฒด์ œ์— ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋Š”๋ฐ Lisp ๋ง๊ณ ๋„ C ์–ธ์–ด๋กœ ์ง์ ‘ ์ต์Šคํ…์…˜์„ ์ œ์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • Freemacs: ๋„์Šค ๋ฒ„์ „์œผ๋กœ 64 ํ‚ฌ๋กœ๋ฐ”์ดํŠธ์˜ ๋ฉ”๋ชจ๋ฆฌ์— ์•Œ๋งž๊ฒŒ ๊ณ ์นœ ๋ฒ„์ „.
  • JED
  • JOVE: ๋งคํฌ๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ๋ฒ„์ „.
  • Joe's Own Editor
  • MINCE: CP/M์— ์“ฐ์ด๋„๋ก ์ˆ˜์ •ํ•œ ๋ฒ„์ „.
  • Mg: ์›๋ž˜ MicroGNUEmacs๋กœ ๋ถˆ๋ ธ์œผ๋‚˜ GNU Emacs์™€์˜ ํ˜ผ๋™์„ ๋ง‰๊ธฐ ์œ„ํ•ด mg๋กœ ๊ฐœ๋ช…. ํ˜„์žฌ OpenBSD์— ๊ธฐ๋ณธ์œผ๋กœ ๋“ค์–ด๊ฐ„๋‹ค.
  • MicroEMACS: ์ด๋ฆ„๊ณผ ๊ฐ™์ด ์ €์‚ฌ์–‘(?) ์ปดํ“จํ„ฐ์—์„œ ๋Œ์•„๊ฐ€๋Š” ๊ฒƒ์„ ๋ชฉ์ ์œผ๋กœ ๊ฐœ๋ฐœ๋˜์—ˆ๊ณ , ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ํŒŒ์ƒํ˜•์ด ์กด์žฌํ•œ๋‹ค. Emacs์— ๋น„ํ•˜์—ฌ ํ˜„์ €ํ•˜๊ฒŒ ์ ์€ ๊ธฐ๋Šฅ๊ณผ ์ ์€ ์šฉ๋Ÿ‰์ด ํŠน์ง•์ด๋‹ค. ์ฐธ๊ณ ๋กœ ์ด ๋ถ„๋„ ์ด๊ฒƒ์„ ๋œฏ์–ด๊ณ ์ณ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๋“ฏ.
  • NotGNU: ๋„์Šค, ์œˆ๋„์šฐ์ฆˆ, ๋ฆฌ๋ˆ…์Šค์šฉ์œผ๋กœ ๊ฐœ๋ฐœ๋œ ๊ฐ€๋ฒผ์šด ๋ฒ„์ „.
  • PceEmacs
  • QEmacs: ์ˆ˜๋ฐฑ ๋ฉ”๊ฐ€ ์ด์ƒ์˜ ํฐ ํŒŒ์ผ์„ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋Š” UTF-8 ๊ธฐ๋ฐ˜์˜ Emacs
  • Spacemacs: Vim ์‚ฌ์šฉ์ž๋“ค์„ ์œ„ํ•ด ๋งŒ๋“ค์–ด์ง„ Emacs. ๋งŽ์€ ํŒจํ‚ค์ง€๋“ค์ด ๊ธฐ๋ณธ์ ์œผ๋กœ ๊น”๋ ค ์žˆ๋‹ค.
  • Xyzzy: ์ผ๋ณธ์‚ฐ Emacs ํด๋ก . ์ฝ”๋”ฉ ์ข€ ํ•œ๋‹ค๋Š” ์ผ๋ณธ ์—”์ง€๋‹ˆ์–ด๋“ค์€ ์š”๊ฑธ ์‚ฌ์šฉํ•œ๋‹ค๋Š”๋ฐ, ์ตœ๊ทผ์—๋Š” ์—…๋ฐ์ดํŠธ ๋˜๊ณ  ์žˆ์ง€ ์•Š๋‹ค. ์ง€์›ํ•˜๋Š” OS๋„ Windows ๋ฟ์ด๋‹ค. ๋‹ค์šด๋กœ๋“œ :https://bitbucket.org/mumurik/xyzzy/wiki/Home
  • Yi: Haskell ์–ธ์–ด๋กœ ์“ฐ์ธ Emacs
  • Zile
๋“ฑ ๋งŽ์ด ์žˆ๋‹ค.

6. ํŠน์ง•[ํŽธ์ง‘]

์ด๋งฅ์Šค๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ํ…์ŠคํŠธ ์—๋””ํ„ฐ์ด๋‹ค. ์ฆ‰, ์›Œ๋“œํ”„๋กœ์„ธ์„œ์™€ ๋‹ฌ๋ฆฌ ํฐํŠธ ๊ธฐ๋ฐ˜์˜ ํ…์ŠคํŠธ๋ฅผ ๋‹ค๋ฃจ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๊ณ , ๋…ธํŠธํŒจ๋“œ์ฒ˜๋Ÿผ ํ…์ŠคํŠธ๋ฅผ ๋‹ค๋ฃฌ๋‹ค. ๊ธฐ๋ณธ์ ์ธ ํ…์ŠคํŠธ ํŽธ์ง‘๊ธฐ ๊ธฐ๋Šฅ ์™ธ์—๋„ ๋‹จ์–ด๋‚˜ ๋ฌธ์žฅ ๋‹จ์œ„๋กœ ํŽธ์ง‘ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ , ์—ฌํƒ€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ ๋ณด์ด๋Š” ๊ตฌ๋ฌธ ๊ฐ•์กฐ ๊ธฐ๋Šฅ ๋ฐ ๋งคํฌ๋กœ ๊ธฐ๋Šฅ์ด ์กด์žฌํ•œ๋‹ค. ๊ธฐ๋ฐ˜์€ TECO ๊ฐ™์€ ๋ฌผ๊ฑด์ด์ง€๋งŒ ์‚ฌ์‹ค์ƒ ํ˜„์žฌ ๋‚˜์™€ ์žˆ๋Š” ํ…์ŠคํŠธ ํŽธ์ง‘๊ธฐ๋“ค๊ณผ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์€ ๋‹ค๋ฅด์ง€ ์•Š๋‹ค.

LISP์˜ dialect๋กœ Emacs Lisp๋ผ๋Š” ์ปดํ“จํ„ฐ๊ณตํ•™ ์ „๊ณต์ด ์•„๋‹ˆ๋ฉด ๋ณดํ†ต ์ ‘ํ•  ์ผ์ด ์—†๋Š” ํŠน์ดํ•œ ์ปดํ“จํ„ฐ ์–ธ์–ด ์ธํ„ฐํ”„๋ฆฌํ„ฐ๋ฅผ ๋‚ด์žฅํ•˜๊ณ  ์žˆ์–ด์„œ, ๋งˆ์Œ๋งŒ ๋จน์œผ๋ฉด ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๊ฐ•๋ ฅํ•œ ๋งคํฌ๋กœ๋Š” ๋ฌผ๋ก  ์‹ฌ์ง€์–ด ๊ฒŒ์ž„ ๊นŒ์ง€๋„ ๋งŒ๋“ค์–ด ๋ฒ„๋ฆด ์ˆ˜ ์žˆ๋‹ค. ์ธํ„ฐํ”„๋ฆฌํ„ฐ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•จ์— ๋”ฐ๋ผ ํ”„๋กœ๊ทธ๋žจ์„ ์žฌ ์‹œ์ž‘ํ•˜๊ฑฐ๋‚˜ ์žฌ ์ปดํŒŒ์ผํ•  ํ•„์š” ์—†์ด ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ๋งˆ์Œ๊ป ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด ํŠน์ง•์ด๋‹ค. ์ด๋งฅ์Šค๋ฅผ ํ™•์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋Œ€๋žต,
  • ์ต์Šคํ…์…˜์„ ๋‚ด ์ž…๋ง›์— ๋งž๋„๋ก ์ˆ˜์ •, ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ•. ์˜ˆ๋ฅผ ๋“ค์–ด ์ƒ‰์ƒ์ด๋‚˜ ๊ทธ๋ž˜ํ”ฝ UI ๋“ฑ์„ ๋ฐ”๊พธ๋Š” ๊ฒƒ๋“ค์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ์ด ๊ฒฝ์šฐ, ๊ตณ์ด lisp ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์ง€ ์•Š๊ณ  ์ˆ˜์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์ œ๊ณต๋œ๋‹ค.
  • ํ‚ค์ŠคํŠธ๋กœํฌ๋ฅผ ๋…นํ™”ํ•˜์—ฌ ๋งคํฌ๋กœ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•.
  • Emacs Lisp๋ฅผ ์ด์šฉํ•˜์—ฌ ์•ˆ๋“œ๋กœ๋ฉ”๋‹ค ์Šค๋Ÿฌ์šด ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•. ๋ณดํ†ต ์„ค์ • ํŒŒ์ผ์ธ .emacs์— ๊ตฌํ˜„ํ•˜๊ฒŒ ๋˜๋Š”๋ฐ ์ด ๋•๋ถ„์— ๋ณดํ†ต Emacs ์• ์šฉ์ž๋“ค์˜ ์„ค์ • ํŒŒ์ผ์€ ์—ฌ๋Ÿฌ ๊ฐœ๋กœ ๋ถ„ํ• ๋˜์–ด ์ˆ˜๋ฐฑ ์ˆ˜์ฒœ์ค„์ด ๋„˜์–ด๊ฐ€๋Š” ๊ฒŒ ํŠน์ง•์ด๋‹ค.

์œผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค. ๊ด€๋ จ๋งŒํ™”

์ด๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ๋งŒ๋“ค์–ด ๋„ฃ๊ธฐ๋งŒ ํ•œ๋‹ค๋ฉด ๋Œ€์ฒด๋กœ ์ด๋งฅ์Šค๋กœ ๋ชป ํ•˜๋Š” ๊ฒƒ์„ ๋ฐœ๊ฒฌํ•˜๊ธฐ๊ฐ€ ์–ด๋ ค์šธ ์ •๋„์ธ๋ฐ, ๋•๋ถ„์— ํƒ€ ํ”„๋กœ๊ทธ๋žจ๋“ค๊ณผ ์—ฐ๋™ํ•˜์—ฌ ๊ฑฐ์˜ ๋ฌดํ•œ์— ๊ฐ€๊นŒ์šด ํ™•์žฅ์„ฑ์„ ์ž๋ž‘ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์œ„ํ•œ IDE(Integrated Development Environment)๋ฅผ ๊ตฌ์„ฑํ•  ์ˆ˜๋„ ์žˆ๊ณ , LaTeX ํƒ€์ž…์„ธํŒ…์„ ์œ„ํ•œ ํ™˜๊ฒฝ์„ ์กฐ์„ฑํ•˜๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.

7. Emacs Lisp Package Archive, ELPA[ํŽธ์ง‘]

๋ฒ„์ „ 24๋ถ€ํ„ฐ ๊ธฐ๋ณธ์œผ๋กœ ํฌํ•จ๋œ Emacs์˜ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์ด๋‹ค. package-list-packages ๋ชจ๋“œ์—์„œ ๋Œ€๋ถ€๋ถ„ ๊ฐ„๋‹จํ•˜๊ฒŒ ์„ค์น˜/์‚ญ์ œ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

๊ด€๋ จ ๋งํฌ: http://emacswiki.org/emacs/ELPA

์œ ๋ช…ํ•œ ์ €์žฅ์†Œ ์ฃผ์†Œ (๋Œ€๊ฐœ ์ด ์„ธ ๊ตฐ๋ฐ์˜ ์ €์žฅ์†Œ์— ์žˆ๋Š” ํŒจํ‚ค์ง€๋กœ Emacs๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฑฐ์˜ ๋ชจ๋“  ๊ฒƒ์„ ๋‹ค ํ•  ์ˆ˜ ์žˆ๋‹ค.)
  • GnuELPA: http://elpa.gnu.org/packages/ (๊ธฐ๋ณธ์œผ๋กœ ์žกํ˜€์žˆ๋‹ค)
  • MELPA: http://melpa.milkbox.net/packages/
  • Marmalade: https://marmalade-repo.org/packages/

์•„๋ž˜๋Š” ์œ ๋ช…ํ•œ ํ™•์žฅ ๊ธฐ๋Šฅ๋“ค์„ ๋‚˜์—ดํ•œ ๊ฒƒ์ด๋‹ค.
  • AUCTeX
  • Calc
  • Calendar-mode
  • Dissociated Press
  • Dunnet: ๊ฒŒ์ž„
  • Ediff
  • Emerge
  • Emacs/W3: ์›น ๋ธŒ๋ผ์šฐ์ €!
  • ERC: IRC ํด๋ผ์ด์–ธํŠธ
  • Gnus
  • Magit
  • MULE
  • Org-mode
  • Info
  • Planner
  • SES: ์Šคํ”„๋ ˆ๋“œ์‹œํŠธ...
  • VM (View Mail): ์ด๋ฉ”์ผ ํด๋ผ์ด์–ธํŠธ
  • Wanderlust
  • EMMS: ๋น„๋””์˜ค ํ”Œ๋ ˆ์ด์–ด!!!

๋ฌผ๋ก  ์ด ์™ธ์—๋„ ์—„์ฒญ๋‚˜๊ฒŒ ๋งŽ๋‹ค... ๊ทธ๋ฆฌ๊ณ  ์ด ์ค‘์—์„œ AUCTeX์™€ Org-mode ๋Š” ๊ฐ€ํžˆ ์ด๋งฅ์Šค์˜ ํ‚ฌ๋Ÿฌ์•ฑ์ด๋ผ ๋ด๋„ ๋  ์ •๋„๋กœ ๋งŽ์€ ๊ธฐ๋Šฅ์„ ๋‚ด์žฅํ•˜๊ณ  ์žˆ๊ณ , ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋‚˜ ๋‹ค๋ฅธ ์šฉ๋„๋กœ ์“ฐ์ง€ ์•Š๋”๋ผ๋„ ์ €๊ฒƒ๋งŒ์„ ์œ„ํ•ด ์ด๋งฅ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ๋žŒ๋“ค๋„ ์žˆ์„ ์ •๋„. Org-mode๋Š” ์ต์ˆ™ํ•ด์ง€๋ฉด ์ƒํ™œ์˜ ๋ชจ๋“  ๊ธฐ๋ก์„ Org-mode๋ฅผ ํ†ตํ•ด์„œ ํ•ด๋„ ๋  ์ •๋„๋กœ ํŽธํ•˜๋‹ค. ๋‹จ ๋†’์€ ์ง„์ž… ์žฅ๋ฒฝ์ด ๋ฌธ์ œ. ๊ทผ๋ฐ ๊ธฐ๋Šฅ์ด ๋งŽ์€ ๋งŒํผ ๋ฐฐ์šฐ๊ธฐ๋„ ์–ด๋ ต๋‹ค.ํŽธ์ง‘๊ธฐ ์†์˜ ์ผ๊ฐœ ๋ชจ๋“œ ์ฃผ์ œ์— ๋งค๋‰ด์–ผ๋งŒ ์ฑ… ํ•œ ๊ถŒ ๋ถ„๋Ÿ‰ ์ €๊ฒƒ๋“ค์ด ๋‹ค ์ž˜ ์œ ์ง€๋ณด์ˆ˜๋˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ, ์ธ๊ธฐ ์žˆ๋Š” ํ™•์žฅ์€ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์ž˜ ๋˜๋Š” ํŽธ.

8. ์„ฑ๋Šฅ[ํŽธ์ง‘]

์•ž์—์„œ ์–ธ๊ธ‰๋˜์—ˆ๋‹ค์‹œํ”ผ ์ดˆ์ฐฝ๊ธฐ์—๋Š” ์ƒ๋‹นํ•œ ๊ณ ์‚ฌ์–‘์˜ ๋จธ์‹ ์„ ์š”๊ตฌํ–ˆ์œผ๋ฏ€๋กœ ์„ฑ๋Šฅ ์ž์ฒด๋Š” ํ…์ŠคํŠธ ์—๋””ํ„ฐ ์น˜๊ณ ๋Š” ๋ณ„๋กœ ์ข‹์ง€ ์•Š์•˜๋‹ค. ์ด๋งฅ์Šค๊ฐ€ ๊ฐœ๋ฐœ๋œ ์‹œ๊ธฐ๋ฅผ ์ƒ๊ฐํ•ด๋ณด์ž. 1970๋…„๋Œ€์— PC ์„ฑ๋Šฅ์ด๋ž€ ๊ทธ์•ผ๋ง๋กœ ์•ˆ์Šต ๊ทธ ์ž์ฒด. ์ด๋Š” ์ฃผ๋กœ Lisp ์ธํ„ฐํ”„๋ฆฌํ„ฐ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ธ๋ฐ ๋•๋ถ„์— Eight Megabytes And Constantly Swapping์ด๋ผ๋Š” ์˜ค๋ช…์„ ์–ป๊ธฐ๋„ ํ•  ์ •๋„์˜€๋‹ค. ์ด ๋˜ํ•œ ์ค„์ด๋ฉด EMACS๊ฐ€ ๋œ๋‹ค. ๋‹ค๋ฅธ ํ‘œํ˜„์œผ๋กœ๋Š”, Emacs Makes A Computer Slow, Eventually Mallocs All Computer Storage, Eventually Makes All Computers Sick์ด ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ ํŽธ์ง‘๊ธฐ ์ „์Ÿ ํ‚ค๋ฐฐ๊ฐ€ ์ผ์–ด๋‚˜๋ฉด ํ•ญ์ƒ ๊นŒ์ด๋Š” ์›์ธ์ด ๋˜๊ณ  ๋ง์•˜๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ํ•˜๋“œ์›จ์–ด์˜ ๋ฐœ์ „์œผ๋กœ ์ด๋Ÿฌํ•œ ์ง€์ ๋“ค์€ ๋” ์ด์ƒ ์œ ํšจํ•˜์ง€ ์•Š๊ฒŒ ๋˜์—ˆ๊ณ , ํ˜„์žฌ ์‚ฌ์šฉ๋˜๋Š” GUI ์›Œ๋“œํ”„๋กœ์„ธ์„œ ํ˜น์€ IDE ํ”„๋กœ๊ทธ๋žจ๋“ค๊ณผ ๋น„๊ตํ•˜๋ฉด ํ›จ์”ฌ ๋น ๋ฅด๊ฒŒ ๋กœ๋”ฉ๋œ๋‹ค. ๊ฒŒ๋‹ค๊ฐ€ vi์˜ ์ •์‹ ํ›„๊ณ„์ž๋ผ ๋ณผ ์ˆ˜ ์žˆ๋Š” vim๋„ ๊ธฐ๋Šฅ์„ ์ด๊ฑฐ์ €๊ฑฐ ์ถ”๊ฐ€ํ•˜๋‹ค ๋ณด๋‹ˆ ์ด๋งฅ์Šค์™€ ์‚ฌ์ด์ฆˆ ์ธก๋ฉด์—์„œ ๋น„๊ฒฌ์ด ๊ฐ€๋Šฅํ•  ์ •๋„๋กœ ๋ถˆ์–ด๋‚˜๊ฒŒ ๋˜์—ˆ๋‹ค. ๋‹ค๋งŒ, ์ด๋งฅ์Šค์˜ ๊ฒฝ์šฐ ์‹คํ–‰ ์‹œ Elisp ์„ค์ • ํŒŒ์ผ์„ ๋ถˆ๋Ÿฌ์˜ค๋Š”๋ฐ Elisp์ด ์†๋„๊ฐ€ ๋А๋ฆฐ ํŽธ์ด๋ผ ์„ค์ • ํŒŒ์ผ์ด ์ข€ ๊ฑฐ๋Œ€ํ•œ ๊ฒฝ์šฐ๋Š” ์‹คํ–‰ ์‹œ๊ฐ„์ด ์—ฌ์ „ํžˆ vim ์— ๋น„ํ•ด ์ƒ๋‹นํžˆ ๋–จ์–ด์ง€๋Š” ํŽธ์ด๋‹ค. vim๋„ ๋ฌผ๋ก  ์„ค์ •ํŒŒ์ผ์„ ๋ถˆ๋Ÿฌ์˜ค๊ธด ํ•˜์ง€๋งŒ, ๊ฑฐ๋Œ€ํ•œ ์ •์‹ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ธ Elisp์— ๋น„ํ•˜๋ฉด ๋ง ๊ทธ๋Œ€๋กœ ๊ทธ๋ƒฅ ์„ค์ • ํŒŒ์ผ ์ˆ˜์ค€์ด๋ผ ์˜ค๋Š˜๋‚  ์ปดํ“จํ„ฐ ๊ธฐ์ค€์œผ๋กœ ์†๋„์—๋Š” ๊ฑฐ์˜ ์˜ํ–ฅ์ด ์—†๋‹ค. 32๋น„ํŠธ ์‹œ์Šคํ…œ์—์„œ ๊ฑฐ๋Œ€ํ•œ ํŒŒ์ผ์„ ๋‹ค๋ฃจ๋Š” ๋ฐ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ๋„ ํ–ˆ๋Š”๋ฐ, 23.2 ๋ฒ„์ „ ์ด์ „์—๋Š” ๊ณ ์ž‘ 256MB ์ •๋„์˜ ํฌ๊ธฐ๋งŒ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ์—ˆ๊ณ , ํ˜„์žฌ๋„ 512MB ์ •๋„ ๋ฐ–์—๋Š” ๋ชป ๋‹ค๋ฃฌ๋‹ค. ๋ฌผ๋ก , 64๋น„ํŠธ ์‹œ์Šคํ…œ์—์„œ๋Š” ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๊ฐ€ ์—†๋‹ค. 1024PB๊ฐ€ ์ตœ๋Œ€ ํ•œ๋„.

๋˜ ํƒ€ OS์— ๋น„ํ•ด Windows์—์„œ ์„ฑ๋Šฅ์ด ๋–จ์–ด์ง€๊ธฐ๋„ ํ•œ๋‹ค. ์ฃผ๋กœ ํ…์ŠคํŠธ ๋ Œ๋”๋ง ๋ถ€๋ถ„์ด ๊ทธ๋Ÿฌ๋‹ค ๋ณด๋‹ˆ ์ €์‚ฌ์–‘ ์ปดํ“จํ„ฐ์—์„œ๋Š” ์Šคํฌ๋กคํ•˜๋‹ค๊ฐ€ ๋ ‰์ด ์‹ฌํ•˜๊ธฐ๋„ ํ•˜๋‹ค.

9. ํ”Œ๋žซํผ[ํŽธ์ง‘]

GUI ํŒŒํŠธ๋ฅผ ์ œ์™ธํ•œ ์ˆœ์ˆ˜ํ•œ ์ด๋งฅ์Šค๋Š” Elisp ์ธํ„ฐํ”„๋ฆฌํ„ฐ์™€ ์†Œ์ˆ˜์˜ primitive function ์ •๋„๋งŒ C๋กœ ๋งŒ๋“ค์–ด์ ธ ์žˆ์œผ๋ฉฐ, ๋‚˜๋จธ์ง€๋Š” ์ „๋ถ€ ๊ทธ๊ฑธ ์‚ฌ์šฉํ•˜๋Š” Elisp ์ฝ”๋“œ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค. ๋ฐ”๊ฟ” ๋งํ•˜๋ฉด C ์–ธ์–ด๊ฐ€ ์ง€์›๋˜๋Š” ํ™˜๊ฒฝ์—์„  ์ด๋งฅ์Šค๊ฐ€ ๋Œ์•„๊ฐ„๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์œˆ๋„์šฐ๋ฅผ ๋น„๋กฏํ•œ ๋Œ€๋ถ€๋ถ„์˜ ํ”Œ๋žซํผ์€ ๋‹ค C ์–ธ์–ด๊ฐ€ ์ง€์›๋˜๊ธฐ ๋•Œ๋ฌธ์— ํ˜„์กดํ•˜๋Š” ๊ฑฐ์˜ ๋ชจ๋“  ์šด์˜์ฒด์ œ๋ฅผ ์ง€์›ํ•œ๋‹ค. ์œ ๋‹‰์Šค ๊ณ„์—ด ์‹œ์Šคํ…œ์€ ๋ฌผ๋ก , ๋„์Šค, ์œˆ๋„์šฐ์ฆˆ์—์„œ๋„ ๊ตฌ๋™์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ๋ฒ„์ „์ด ์žˆ๋‹ค. ๋˜ํ•œ, ํ…์ŠคํŠธ ํ„ฐ๋ฏธ๋„์—์„œ ๊ตฌ๋™์‹œํ‚ฌ ์ˆ˜๋„ ์žˆ๊ณ , GUI ํ™˜๊ฒฝ์—์„œ ๊ตฌ๋™์‹œํ‚ฌ ์ˆ˜๋„ ์žˆ๋‹ค๋Š” ํŠน์„ฑ์ด ์žˆ๋‹ค. ๋ฐ˜๋Œ€๋กœ ๊ฒฝ์Ÿ์ž์ธ vi๋Š” gvim ๊ฐ™์€ GUI ๊ธฐ๋ฐ˜์˜ ํŒŒ์ƒํ˜•์ด ๋‚˜์˜ค๊ธฐ ์ „๊นŒ์ง€๋Š” ํ…์ŠคํŠธ ํ„ฐ๋ฏธ๋„์—์„œ๋งŒ ๊ตฌ๋™ ๊ฐ€๋Šฅํ–ˆ๊ณ , gvim์˜ ๊ฒฝ์šฐ๋Š” ๋ณ„๊ฐœ์˜ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ์ทจ๊ธ‰ํ•œ๋‹ค. Unix ๊ณ„์—ด์˜ ํ”Œ๋žซํผ์—์„œ๋Š” X Window ์‹œ์Šคํ…œ์—์„œ gtk ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘๋™ํ•˜๊ณ , OS X์—์„œ๋Š” Cocoa ๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘๋™(ํ˜„์žฌ 24.3 ๋ฒ„์ „)ํ•œ๋‹ค. ๋ฌผ๋ก  ์œˆ๋„์šฐ์ฆˆ์—์„œ๋„ ๋‹ค๋ฅธ GUI ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ค์น˜ํ•  ํ•„์š” ์—†์ด ์ž˜ ์ž‘๋™ํ•œ๋‹ค. ์œˆ๋„์šฐ์ฆˆ ๋ฒ„์ „ ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” ์ธ์Šคํ†จ๋„ ํ•„์š”๊ฐ€ ์—†๋Š” ํฌํ„ฐ๋ธ” ๋ฒ„์ „์ด๋‹ค.

10. ์ง€์—ญํ™”[ํŽธ์ง‘]

์ง€๊ตฌ์ƒ์˜ ๋ชจ๋“  ์–ธ์–ด๋ฅผ ์ „๋ถ€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์˜์–ด๋Š” ๋ฌผ๋ก , ํ•œ๊ตญ์–ด, ์ค‘๊ตญ์–ด, ํžˆ๋ธŒ๋ฆฌ์–ด, ํŽ˜๋ฅด์‹œ์•„์–ด ๋“ฑ์„ ์ง€์›ํ•˜๋ฉฐ, ์ด ์–ธ์–ด๋“ค์˜ ์ž…๋ ฅ๊ธฐ๋“ค๋„ ์ž์ฒด์ ์œผ๋กœ ์ œ๊ณต์„ ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ispell์ด๋ผ๋Š” ๋งž์ถค๋ฒ• ๊ฒ€์‚ฌ ํ”„๋กœ๊ทธ๋žจ๊ณผ ์—ฐ๋™์‹œํ‚ค๋ฉด ๋งž์ถค๋ฒ• ๊ฒ€์‚ฌ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค. ์—ญ์‹œ UTF-8์„ ์ง€์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ•œ ๊ฐ€์ง€ ๋ฌธ์ œ๋Š” ์˜ค๋ฅธ์ชฝ์—์„œ ์™ผ์ชฝ์œผ๋กœ ์“ฐ๋Š” ๋ฌธ์ž์˜ ๊ฒฝ์šฐ ํ˜„์žฌ ์•ˆ์ • ๋ฒ„์ „์—์„œ๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์œผ๋‚˜ bzr์— ์žˆ๋Š” ์ตœ์‹  ๋ฒ„์ „์€ ๋ฌธ์ œ ์—†๋‹ค.

๋˜ ํ•œ ๊ฐ€์ง€ ๋‹จ์ ์€ ์œ ์ € ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์˜์–ด๋กœ ์“ฐ์—ฌ์ ธ ์žˆ์—ˆ๊ณ , ํ˜„์žฌ๊นŒ์ง€ ์ง€์—ญํ™”๊ฐ€ ์•ˆ ๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๋ฌผ๋ก  ํŠœํ† ๋ฆฌ์–ผ๋„ ์˜์–ด๋กœ ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ์ œ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์˜์–ด ๊ณต๋ถ€๊ฐ€ ํ•„์ˆ˜์ด์ง€๋งŒ, ์ด๊ฑธ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ๋žŒ๋“ค ์ค‘์— ์ด ์ •๋„ ์˜์–ด๋ฅผ ํ•ด์„ํ•˜์ง€ ๋ชป ํ•˜๋Š” ์‚ฌ๋žŒ์€ ์—†์„ ๊ฒƒ์ด๋‹ค. ์งง์€ ํŠœํ† ๋ฆฌ์–ผ์€ ํ•œ๊ธ€ํ™”๊ฐ€ ๋˜์–ด ์žˆ๋‹ค. ํ•˜์ง€๋งŒ, ๋ณธ๊ฒฉ์ ์ธ ๋งค๋‰ด์–ผ์ด ์‹œ์ž‘๋˜๋Š” ๋‚˜๋จธ์ง€ ๋ถ€๋ถ„์€ ์ฃ„๋‹ค ์˜์–ด. ์‚ฌ์‹ค ๋ถ„๋Ÿ‰์ด ์ •๋ง ๋งŽ๊ธฐ ๋•Œ๋ฌธ์— ๋ˆ„๊ตฐ๊ฐ€ ๋ฒˆ์—ญ์„ ํ•ด ์ค€๋‹ค๋ฉด ํ•œ๊ตญ ์ด๋งฅ์Šค ์—ญ์‚ฌ์— ์ด๋ฆ„์ด ๋‚จ์„์ง€๋„ ๋ชจ๋ฅธ๋‹ค!

๋ค์œผ๋กœ ์‹œ๊ฐ์žฅ์• ์ธ๋“ค์„ ์œ„ํ•ด ์ฒญ๊ฐ์ ์œผ๋กœ ํ”ผ๋“œ๋ฐฑ์„ ์ฃผ๋Š” ์ด๋งฅ์Šคํ”ผํฌ(Emacspeak) ์‹œ์Šคํ…œ์„ ์ง€๋‹ˆ๊ณ  ์žˆ๋‹ค.

11. ์‚ฌ์šฉ์ž ์ •์˜[ํŽธ์ง‘]

vi์˜ ๋‹จํƒ€ ์ปค๋งจ๋“œ๊ฐ€ ์ด๋งฅ์Šค์—์„œ๋Š” ๋ฐฐ ์ด์ƒ์œผ๋กœ ๋ถˆ์–ด๋‚˜๋Š” ๊ฒŒ ๋Œ€๋ถ€๋ถ„์ด๊ธฐ ๋•Œ๋ฌธ์— vi์— ๋น„ํ•ด ํŽธ์ง‘์ด ๋ถˆํŽธํ•œ ๊ฒƒ์€ ๊ธฐ์ • ์‚ฌ์‹ค์ด๋‹ค. ํ•˜์ง€๋งŒ, ์ด๋งฅ์Šค์—์„œ๋Š” vi์—์„œ ๋ถˆ๊ฐ€๋Šฅํ•œ ์ˆ˜๋งŽ์€ ๊ฒƒ๋“ค์ด ๊ฐ€๋Šฅํ•˜๊ณ , ๊ทธ์ค‘ ํ•˜๋‚˜๊ฐ€ ์œ ์—ฐํ•œ ์‚ฌ์šฉ์ž ์ •์˜์ด๋‹ค. ์ผ๋‹จ ์ด๋งฅ์Šค์—์„œ๋Š” ๋ชจ๋“  ๋‹จ์ถ•ํ‚ค๋ฅผ ๋ฐ”๊พธ๋Š” ๊ฒŒ ๊ฐ€๋Šฅํ•˜๋‹ค. ๋‹จ์ถ•ํ‚ค ์ˆ˜์ค€์„ ๋„˜์–ด์„œ ์•„์˜ˆ Extensible VI Layer(Evil) ๋“ฑ๊ณผ ๊ฐ™์ด vi ์Šคํƒ€์ผ๋กœ ๋ฐ”๊ฟ” ๋ฒ„๋ฆฌ๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•˜๋ฉฐ, vi๋ฅผ ๋„˜์–ด์„  ๋ณธ์ธ์—๊ฒŒ ๋งž์ถค ํ˜•์‹์œผ๋กœ ๋ฐ”๊ฟ” ๋ฒ„๋ฆฌ๋Š” ๊ฒƒ ์—ญ์‹œ ๊ฐ€๋Šฅํ•˜๋‹ค. ํ‚ค๋ฅผ ๋ฐ”๊พธ๋Š” ๊ฒƒ ์™ธ์— ๊ธฐ์กด ๊ธฐ๋Šฅ์„ ์ด์šฉํ•˜์—ฌ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์—ฌ๊ธฐ์— ๋‹จ์ถ•ํ‚ค๋ฅผ ๋ถ™์ด๋Š” ๊ฒƒ๋„ ๋ฌธ์ œ๊ฐ€ ์—†๋‹ค. ๋˜ํ•œ, vi์—์„œ ๊ตฌ๊ฒฝํ•˜๊ธฐ ํž˜๋“ , ๋ณดํ†ต์€ ์“ธ๋ฐ์—†์ง€๋งŒ ๋ˆ„๊ตฐ๊ฐ€์—๊ฒŒ๋Š” ์œ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ณ„์˜๋ณ„ ํฌํ•œํ•œ ๊ธฐ๋Šฅ์„ ๋””ํดํŠธ๋กœ ๋‹ค ํฌํ•จํ•˜๊ณ  ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํ˜„์žฌ ์ปค์„œ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋Š” ๋ฌธ์ž์˜ ํฐํŠธ์— ๋Œ€ํ•œ ์ •๋ณด๋‚˜, ๋ฒ„ํผ์—์„œ ์„ ํƒํ•œ ๋ถ€๋ถ„๋งŒ ๋ฌธ์ž ์ธ์ฝ”๋”ฉ์„ ๋ฐ”๊พธ๋Š” ๊ธฐ๋Šฅ[3], ํ™”๋ฉด์˜ ๋ฌธ์ž๋ฅผ ๊ฐ€์ง€๊ณ  ์žฅ๋‚œ์น˜๋Š” ๊ธฐ๋Šฅ[4]๋“ฑ์„ ํฌํ•จํ•˜์—ฌ ์ด๋ฆฌ์ €๋ฆฌ ์ฐพ์•„๋ณด๋ฉด ๊ทธ์•ผ๋ง๋กœ lisp ํ•ด์ปค๋“ค์˜ ์ž‰์—ฌ๋ ฅ์„ ๋ณด์—ฌ์ฃผ๋Š” ๋“ฏํ•œ ๊ธฐ๋Šฅ๋“ค์ด ๋„˜์ณํ๋ฅธ๋‹ค.

๊ธฐ๋ณธ ์„ค์ •์„ ํฌํ•จํ•˜์—ฌ ์ž๊ฐ€ ์ปค์Šคํ„ฐ๋งˆ์ด์ œ์ด์…˜์€ Elisp ์ฝ”๋“œ๋กœ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ๋ณธ์ ์ธ Lisp ์ง€์‹์ด ํ•„์š”ํ•˜์ง€๋งŒ, ์›Œ๋‚™ ๋งŽ์€ ๊ฒƒ๋“ค์ด ์ด๋ฏธ ๋‚ด์žฅ ํ•จ์ˆ˜๋กœ ์ •์˜๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— Lisp์˜ ๊ธฐ๋ณธ์ ์ธ ๋ฌธ๋ฒ• ์ •๋„๋งŒ ์•„๋Š” ์ˆ˜์ค€์œผ๋กœ๋„ ์ƒ๋‹นํžˆ ์œ ์šฉํ•˜๊ฒŒ ๋œฏ์–ด๊ณ ์น  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํŒจํ‚ค์ง€ ์ €์žฅ์†Œ์—์„œ ๋‹ค์šด ๋ฐ›์€ ํŒจํ‚ค์ง€๋„ ์—ญ์‹œ ๋™์ผํ•˜๊ฒŒ ์ˆ˜์ •์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

๋•๋ถ„์— vi๊ฐ€ ๋‹จ์ˆœํžˆ ํ‚ค์Šคํ† ๋กœํฌ ์ˆ˜์ค€์˜ ์ค‘๋…์„ฑ์„ ๋ณด์ด๋Š” ๋ฐ˜๋ฉด, ์ด๋งฅ์Šค๋Š” Elisp์ด๋ผ๋Š” ๊ธˆ๋‹จ์˜ ์˜์—ญ์œผ๋กœ ๋ฐœ์„ ๋“ค์—ฌ ๋†“๊ฒŒ ๋˜๋ฉด ์‚ฌ์šฉํ•œ ์‹œ๊ฐ„์— ๋น„๋ก€ํ•˜์—ฌ ์šฉ๋„๋‚˜ ์›Œํฌํ”Œ๋กœ์šฐ ์ž์ฒด๊ฐ€ ์•„์˜ˆ ์ผ๋ฐ˜์ ์ธ ํŽธ์ง‘๊ธฐ์˜ ์„ธ๊ณ„์™€๋Š” ์ ์  ๋ฉ€์–ด์ง€๋Š” ๊ฒฝํ–ฅ์ด ์ƒ๊ธด๋‹ค. ์ด ๋•Œ๋ฌธ์— ๊ณจ์ˆ˜ ์ด๋งฅ์Šค ์œ ์ €๋“ค์—๊ฒŒ๋Š” OS๋‚˜ ํ”Œ๋žซํผ์€ ๊ทธ๋ƒฅ ํ•˜๋“œ์›จ์–ด์—์„œ ์ด๋งฅ์Šค๋ฅผ ์ž‘๋™์‹œ์ผœ ์ฃผ๋Š” ๋ฌด์—‡ ์ •๋„๋กœ ์ „๋ฝํ•˜๊ณ  ๋ชจ๋“  ๊ฒƒ์„ ์ด๋งฅ์Šค๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒฝํ–ฅ์ด ์žˆ๋‹ค.Q: ์œˆ๋„์šฐ ์“ธ๋ž˜, macOS ์“ธ๋ž˜, ๋ฆฌ๋ˆ…์Šค ์“ธ๋ž˜? A: ์ด๋งฅ์Šค๋งŒ ๋Œ์•„๊ฐ€๋ฉด ์•„๋ฌด๋ž˜๋„ ์ข‹์•„...

12. ์‚ฌ์šฉ๋ฒ•[ํŽธ์ง‘]

12.1. ๋ช…๋ น[ํŽธ์ง‘]

์ผ๋‹จ ์ด๋งฅ์Šค๋ฅผ ์‹คํ–‰์‹œํ‚ค๋ฉด ๋ฉ”๋ชจ์žฅ๊ณผ ๋น„์Šทํ•œ ๋А๋‚Œ์œผ๋กœ ํŽธ์ง‘์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค. ์žํŒ์œผ๋กœ ๋ฌธ์ž ์ž…๋ ฅ, ๋ฐฉํ–ฅํ‚ค๋กœ ์ปค์„œ ์›€์ง์ด๊ธฐ, ๋ฐฑ์ŠคํŽ˜์ด์Šค๋กœ ์ง€์šฐ๊ธฐ ๋“ฑ ์ „๋ถ€ ๋™์ผํ•˜๋ฉฐ ํ‚ค๋ณด๋“œ๋กœ ํŠน์ˆ˜ ๋ช…๋ น์„ ์ž…๋ ฅํ•˜๋ ค๋ฉด ์ฃผ๋กœ ์ปจํŠธ๋กค ํ‚ค์™€ ๋ฉ”ํƒ€ ํ‚ค ์กฐํ•ฉ์„ ์ด์šฉํ•œ๋‹ค. ๊ณผ๊ฑฐ ํ‚ค๋ณด๋“œ์—์„œ Meta ํ‚ค๋ผ๋Š” ๊ฒŒ ์žˆ์—ˆ์œผ๋‚˜, ์˜ค๋Š˜๋‚ ์—” ๋‹น์—ฐํžˆ ์—†๊ณ  Alt์™€ ESC๊ฐ€ Meta๋กœ ๋งคํ•‘์ด ๋˜์–ด ์žˆ๋‹ค. ์ด ๋ช…๋ น์„ ์ž…๋ ฅํ•˜๋Š” ๋ฐฉ์‹์ด ์•ฝ๊ฐ„ ์žฌ๋ฏธ์žˆ๋Š”๋ฐ, ์˜ˆ๋ฅผ ๋“ค์–ด ์ €์žฅ์„ ํ•˜๋ ค๊ณ  ํ•˜๋ฉด Ctrl+x๋ฅผ ๋ˆ„๋ฅธ ๋’ค, Ctrl+s๋ฅผ ๋ˆ„๋ฅด๋ฉด ๋œ๋‹ค. ์ด ๊ฒฝ์šฐ Ctrl ํ‚ค๋ฅผ ๊ทธ๋Œ€๋กœ ๋ˆ„๋ฅด๊ณ  ์žˆ์–ด๋„ ์ƒ๊ด€ ์—†๋‹ค. ๊ธฐ๋Šฅ์ด ์›Œ๋‚™ ๋งŽ์•„์ง€๋‹ค ๋ณด๋‚˜ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜๊ธฐ ์œ„ํ•ด ๋งˆ์น˜ ๋Œ€์ „ ๊ฒฉํˆฌ ๊ฒŒ์ž„ ์Šคํ‚ฌ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์‹œํ€€์…œ(?)ํ•œ ์กฐํ•ฉ์„ ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ์‚ฌ์šฉํ•˜๋‹ค ๋ณด๋ฉด ๊ฒŒ์ž„ํ•˜๋Š” ๊ธฐ๋ถ„? ์‚ฌ์‹ค ์ด ๋ถ€๋ถ„์ด vi์™€์˜ ๊ฐ€์žฅ ํฐ ์ฐจ์ด์ธ๋ฐ, vi์˜ ํŽธ์ง‘ ๋ชจ๋“œ์—์„œ ๋‹จํƒ€ ํ˜น์€ ์Œํƒ€๋กœ ๊ฐ€๋Šฅํ•œ ๋ช…๋ น์ด ์ด๋งฅ์Šค์—์„œ๋Š” ํƒ€์ˆ˜๊ฐ€ 2๋ฐฐ ๊ฐ€๊น๊ฒŒ ๋Š˜์–ด๋‚˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์€๋ฐ๋‹ค๊ฐ€ ๊ทธ ๊ฐ๊ฐ์— Ctrl/Meta ๊ฐ™์€ modifier ํ‚ค๊นŒ์ง€ ์กฐํ•ฉ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์•„์„œ ์ปค๋งจ๋“œ ์ž…๋ ฅ ๋ฐฉ์‹์ด ๋ถˆํŽธํ•ด ๋ณด์ผ ์ˆ˜๋„ ์žˆ๋‹ค.

12.2. ๋ฒ„ํผ[ํŽธ์ง‘]

Buffer(๋ฒ„ํผ)๋ผ๋Š” ๊ฐœ๋…์ด ์žˆ๋Š”๋ฐ, ํƒญ ๊ธฐ๋Šฅ์„ ๊ฐ€์ง„ ํŽธ์ง‘๊ธฐ๋ฅผ ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด ๊ฐœ๋…์ด ์•ฝ๊ฐ„ ๋” ์œ ๋™์ ์ด๋ผ, ํ˜„์žฌ ๋ฌธ์„œ์˜ ์ƒํƒœ ๋ฐ ์ปค์„œ์˜ ์œ„์น˜, ๋ช…๋ น์–ด ์กฐํ•ฉ ๋“ฑ์„ ๋‚˜ํƒ€๋‚ด ์ฃผ๋Š” '๋ฏธ๋‹ˆ๋ฒ„ํผ'๋ผ๋Š” ๋ถ€๋ถ„์ด ๋”ฐ๋กœ ์กด์žฌํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ ๋ฌธ์„œ ์ž‘์—… ์™ธ์— ์ปดํŒŒ์ผ์ด๋‚˜ ํƒ€์ž…์„ธํŒ… ๋ช…๋ น์„ ๋‚ด๋ฆฌ๋˜๊ฐ€, ๊ฒ€์ƒ‰ ํ‚ค์›Œ๋“œ๋ฅผ ์ž…๋ ฅํ•˜๋Š” ๋“ฑ ์ž… ์ถœ๋ ฅ ์ž‘์—…์„ ํ•˜๊ฒŒ ๋œ๋‹ค. ๋” ์žฌ๋ฏธ์žˆ๋Š” ๊ฒƒ์€ Bash ์…ธ์ฒ˜๋Ÿผ ๋ช…๋ นํ–‰ ์ž๋™ ์™„์„ฑ ๊ธฐ๋Šฅ๊นŒ์ง€ ์žˆ๋‹ค. ์ด๋ฅผ ๋ณผ ๋•Œ ์–ผ๋งˆ๋‚˜ ๋ณต์žกํ•œ ๋ช…๋ น์–ด๋“ค์ด ๋งŽ์ด ๋“ค์–ด์žˆ๋Š” ์ง€ ์‹ค๊ฐํ•  ์ˆ˜ ์žˆ์„ ์ •๋„์ด๋‹ค.

์ด๋งฅ์Šค๋Š” ํ”„๋ ˆ์ž„(์šฐ๋ฆฌ๊ฐ€ ํ”ํžˆ ๋งํ•˜๋Š” ์œˆ๋„์šฐ/์ฐฝ๊ณผ ๋™์ผ)๊ณผ ๊ทธ ์•ˆ์˜ ์œˆ๋„์šฐ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์–ด์„œ, ํ•œ ํ”„๋ ˆ์ž„์„ ์—ฌ๋Ÿฌ ์œˆ๋„์šฐ๋กœ ๋ถ„ํ• ํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ๋ฒ„ํผ๋Š” ์ด๋Ÿฌํ•œ ์œˆ๋„์šฐ์— ํ‘œ์‹œํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ์ตœ๊ทผ ํŽธ์ง‘๊ธฐ์™€ ๋น„๊ตํ•˜๋ฉด ํƒญ ๊ธฐ๋Šฅ๊ณผ ์œ ์‚ฌํ•˜๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค๋งŒ, ํ”„๋ ˆ์ž„์„ ๋‚˜๋ˆ ์„œ ์‚ฌ์‹ค์ƒ ๋‘ ๋ฌธ์„œ๋ฅผ ๋™์‹œ์— ํŽธ์ง‘ํ•˜๊ฑฐ๋‚˜, ํ•œ ๋ฌธ์„œ๋ฅผ ๋ถ€๋ถ„ ๋ถ€๋ถ„ ๋‚˜๋ˆ„์–ด ํŽธ์ง‘ํ•˜๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค. ์‹ฌ์ง€์–ด ํ•œ ๋ฒ„ํผ๋Š” ๋ฌธ์„œ๋ฅผ ํŽด ๋‘๊ณ , ๋‚˜๋จธ์ง€๋Š” ์„ค์ • ๋ฉ”๋‰ด๋ฅผ ์—ด๊ณ , ๋งˆ์ง€๋ง‰ ๋ฒ„ํผ๋Š” ํ˜„์žฌ ๋Œ๋ฆฌ๊ณ  ์žˆ๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ๊ฒฐ๊ณผ๋ฌผ์„ ์ถœ๋ ฅํ•˜๋Š” ๋“ฑ ๋‹ค์ค‘ ์ž‘์—…์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์š”์ฆ˜์—๋Š” ์ผ๋ฐ˜์ ์ธ ์ผ์ด์ง€๋งŒ ์•ž์— ์–ธ๊ธ‰ํ–ˆ๋˜ ๊ฒƒ๊ณผ ๊ฐ™์ด 1MB๊ฐ€ ์ดˆ ๊ณ ์‚ฌ์–‘์ด์—ˆ์„ ์‹œ๊ธฐ์—๋Š” ๊ทธ์•ผ๋ง๋กœ ์ถฉ๊ฒฉ๊ณผ ๊ณตํฌ์˜ ๊ธฐ๋Šฅ์ด์—ˆ๋‹ค ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฌผ๋ก  ์ง€๊ธˆ์€ vim๋„ ์ง€์›ํ•œ๋‹ค.

13. ๋น„ํŒ[ํŽธ์ง‘]

13.1. RSI[ํŽธ์ง‘]

RSI(Repetitive Stress Injury)๋Š” ๋ฐ˜๋ณต ์‚ฌ์šฉ ๊ธด์žฅ์„ฑ ์†์ƒ ์ฆํ›„๊ตฐ์ด๋ผ๋Š” ํ ์ข€๋ฌดํ•œ ์ด๋ฆ„์„ ๊ฐ€์ง„ ์งˆ๋ณ‘์œผ๋กœ, ์ Š์—ˆ์„ ๋•Œ ํƒ€์ดํ•‘ ์ž‘์—…์„ ๋งŽ์ด ํ•œ ์‚ฌ๋žŒ์˜ ์†๊ฐ€๋ฝ์—, ํŠนํžˆ ์—„์ง€์†๊ฐ€๋ฝ ๋“ฑ์˜ ๊ฐ•ํ•œ ์†๊ฐ€๋ฝ๋ณด๋‹ค๋Š” ์ƒˆ๋ผ์†๊ฐ€๋ฝ ๋“ฑ ์•ฝํ•œ ์†๊ฐ€๋ฝ์— ์ž์ฃผ ๋ฐœ์ƒํ•œ๋‹ค. Esc-meta-alt-ctrl-shift ๋ผ๋Š” ์ด๋ช…์„ ๊ฐ€์ง„ ์ด๋งฅ์Šค๊ฐ€ ์ด ์›์ธ์ด ๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ๋น„ํŒ์ด ๋งŽ๋‹ค. ์œ„ ํ‚ค๋“ค ๋Œ€๋ถ€๋ถ„์€ ์ƒˆ๋ผ์†๊ฐ€๋ฝ์œผ๋กœ ๋ˆ„๋ฅด๊ธฐ ์‰ฌ์šด ์œ„์น˜์— ์žˆ๊ณ , ์‹ค์ œ๋กœ ์ด๋งฅ์Šค์˜ ๋Œ€๋ถ€์ธ ์Šคํ†จ๋จผ๋„ ์ด ์งˆ๋ณ‘์œผ๋กœ ๊ณ ์ƒ ์ค‘์ด๋‹ค(์ด๊ฒŒ ๊ฐ€์žฅ ํƒ€๊ฒฉ์ด ์ปธ๋‹ค). ์ด๋งฅ์Šค๊ฐ€ ์ฒ˜์Œ ๊ฐœ๋ฐœ๋  ๋‹น์‹œ ํ‚ค๋ณด๋“œ๋Š” Ctrl ํ‚ค๊ฐ€ ์ŠคํŽ˜์ด์Šค ๋ฐ” ๋ฐ”๋กœ ์˜†์— ์œ„์น˜ํ•˜์—ฌ ์žˆ์—ˆ๋‹ค. ์ด๋งฅ์Šค์˜ ๋ช…๋ น๋“ค์ด ๋Œ€๋ถ€๋ถ„ Ctrl ํ‚ค๋ฅผ ๋™๋ฐ˜ํ•˜๋Š” ๊ฒƒ์ด ์ด๊ฒƒ ๋•Œ๋ฌธ์ธ๋ฐ, ๋ฌธ์ œ๋Š” ํ˜„์žฌ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” IBM PC ํ‚ค๋ณด๋“œ์˜ ๊ฒฝ์šฐ Ctrl ํ‚ค๊ฐ€ ๋Œ€๋ถ€๋ถ„ ๋์ชฝ์— ์œ„์น˜ํ•ด ์†๊ฐ€๋ฝ์„ ์ซ™ ํŽด์•ผ ํ•˜๋Š” ๋‹จ์ ์ด ์กด์žฌํ•œ๋‹ค. ๋•๋ถ„์— ์ƒˆ๋ผ์†๊ฐ€๋ฝ์ด ๋งŽ์ด ๊ณ ์ƒํ•˜๋Š”๋ฐ[5], ์ด ๋•Œ๋ฌธ์— Caps lock ํ‚ค๋ฅผ Ctrl ํ‚ค๋กœ ๋งคํ•‘ํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์กด์žฌํ•œ๋‹ค. ๋‹ค๋งŒ, MacOS ๋ฒ„์ „์˜ ๊ฒฝ์šฐ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๋ช…๋ น์„ ๋งฅ ํ‚ค๋ณด๋“œ ์ŠคํŽ˜์ด์Šค ๋ฐ” ๋ฐ”๋กœ ์˜†์— ์žˆ๋Š” Command ํ‚ค์— ๋งคํ•‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Ÿฐ ๋ฌธ์ œ๊ฐ€ ์ ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ™•์žฅ ๋ช…๋ น์˜ ๊ฒฝ์šฐ ์–„์งค ์—†์ด Ctrl ํ‚ค ์กฐํ•ฉ์„ ์จ์•ผ ํ•˜๋‹ˆ ๊ทธ๊ฒŒ ๊ทธ๊ฑฐ...

ํ•˜์ง€๋งŒ, ์‚ฌ์‹ค ์ด๋Š” ์ด๋งฅ์Šค๋งŒ์˜ ๋ฌธ์ œ๋Š” ์•„๋‹ˆ๊ณ  ํ˜„์žฌ IBM ํ‚ค๋ณด๋“œ ๋ฐฐ์—ด ์ž์ฒด๊ฐ€ ๊ตณ์ด ์ด๋งฅ์Šค๊ฐ€ ์•„๋‹ˆ๋”๋ผ๋„ ์ž์ฃผ ์“ฐ๋Š” ํ‚ค๋“ค์„ ์ƒˆ๋ผ์†๊ฐ€๋ฝ์œผ๋กœ ๋ˆ„๋ฅด๊ธฐ ์ข‹์€ ์œ„์น˜์— ๋ฐฐ์—ดํ•˜์—ฌ ์ธ์ฒด๊ณตํ•™์ ์œผ๋กœ ๋งค์šฐ ์ข‹์ง€ ๋ชปํ•œ ๋ฐฐ์—ด์„ ๊ฐ–๊ณ  ์žˆ๋Š” ๊ฒƒ์ด ์ง„์ •ํ•œ ์›์ธ์ด๋‹ค. ์ด๋งฅ์Šค๋Š” ์ด๊ฒƒ์„ ๊ฐ€์†ํ™”ํ•˜๋Š” ์ •๋„๋ผ๊ณ  ๋ณด๋Š” ๊ฒƒ์ด ์˜ณ๋‹ค. ์š”์ฆ˜์€ ์ €๋Ÿฐ ์ž์ฃผ ์“ฐ์ด๋Š” ํ‚ค๋“ค์„ ์ค‘์•™์œผ๋กœ ๋ชฐ์•„ ์—„์ง€์†๊ฐ€๋ฝ ์œ„์น˜์— ๋ฐฐ์—ดํ•œ ์ธ์ฒด๊ณตํ•™ ํ‚ค๋ณด๋“œ๋“ค๋„ ์žˆ์œผ๋ฉฐ๋‹ค๋งŒ ๊ฐ€๊ฒฉ์ด ํ ์ข€๋ฌด, ๋ช‡๋ช‡ ์ด๋งฅ์Šค ์œ ์ €๋“ค์€ ์˜ค๋ฅธ๋ฐœ ์™ผ๋ฐœ ์œ„์น˜์— ํŽ˜๋‹ฌ์„ ๋ฐฐ์น˜ํ•˜์—ฌ Alt, Ctrl์— ๋งคํ•‘ํ•˜์—ฌ ์“ฐ๊ธฐ๋„ ํ•œ๋‹ค.๋“œ๋Ÿผ์„ ๋ฐฐ์šฐ์ž. ํ…์ŠคํŠธ๋ฅผ ํŽธํ•˜๊ฒŒ ํŽธ์ง‘ํ•˜๊ณ  ์‹ถ์œผ๋ฉด ์ฃผ๋ณ€๊ธฐ๊ธฐ๋ฅผ ์‚ฌ๋ผ๊ณ ! ๊ฒฐ๊ตญ ๋พฐ์กฑํ•œ ํ•ด๊ฒฐ์ฑ…์ด ์žˆ๋‹ค๊ธฐ๋ณด๋‹ค๋Š” ์ •๊ธฐ์ ์ธ ์ŠคํŠธ๋ ˆ์นญ, ์ƒํ™œ ์Šต๊ด€, ๊ทธ๋ฆ๊ณ  ๊ฐœ์ธ์ ์ธ ๊ผผ์ˆ˜์˜ ์˜์—ญ์— ๋งก๊ธธ ์ˆ˜ ๋ฐ–์— ์—†๋Š” ๋ถˆ๊ฐ€ํ”ผํ•œ ๋ฌธ์ œ.

์œ ๋… Ctrl, Alt, Shift ๋“ฑ์„ ๋งŽ์ด ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋งฅ์Šค๋ฅผ ์ฃผ๋ ฅ ํŽธ์ง‘๊ธฐ๋กœ ์“ธ ์ƒ๊ฐ์ด ์žˆ์„ ๊ฒฝ์šฐ, ์›ฌ๋งŒํ•˜๋ฉด ์ € ํ‚ค๋“ค์„ ์—„์ง€ ์œ„์น˜๋กœ ๋บ€ ์ธ์ฒด๊ณตํ•™ ํ‚ค๋ณด๋“œ๋ฅผ ์žฅ๋งŒํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. ํ‚ค๋„ค์‹œ์Šค, ๋งํŠธ๋ก  ๋“ฑ๊ณผ ๊ฐ™์ด ์ „ํ†ต์ ์ธ ๊ณ ๊ฐ€์˜ ๋ชจ๋ธ๋„ ์žˆ๊ณ , ์ตœ๊ทผ Truly Ergonomic ๊ฐ™์€ ๊ฒฝ์šฐ๋Š” Ctrl, Alt, Shift๊ฐ€ ๋ฐ”๊นฅ์ชฝ์— ์žˆ๊ธด ํ•˜์ง€๋งŒ ํ‚ค๋งต์œผ๋กœ ๊ฐ„๋‹จํžˆ ๊ฐ€์šด๋ฐ ๋‚˜์—ด๋œ ํ‚ค์™€ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋‹ค. ์ผ๋ฐ˜์ ์ธ ํ‚ค๋ณด๋“œ์˜ ๊ฒฝ์šฐ ํŽ˜๋‹ฌ์„ ์žฅ๋งŒํ•˜๋Š” ๊ฒƒ๋„ ๊ฒฐ์ฝ” ๋‚˜์˜์ง€ ์•Š์€ ์„ ํƒ์ด๋‹ค. ํŽ˜๋‹ฌ์€ ์™ ์ง€ ๋ชจ๋ฅด๊ฒŒ ๊ฑฐ๋ถ€๊ฐ์ด ๋“ค๊ธด ํ•˜์ง€๋งŒ, ์‚ฌ์‹ค ๊ณ ๊ฐ€์˜ ์ธ์ฒด๊ณตํ•™ ํ‚ค๋ณด๋“œ๋ณด๋‹ค ํ‚ค๊ฐ ์ข‹์€ ์ผ๋ฐ˜๋ฐฐ์—ด ํ‚ค๋ณด๋“œ์— ํŽ˜๋‹ฌ์ด ๋” ๋‚˜์€ ์„ ํƒ์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด C-u C-x C-e ๊ฐ™์€ ๋ช…๋ น์„ ๋‚ด๋ฆด ๋•Œ ์•„๋ฌด๋ฆฌ ํ‚ค๋ฐฐ์น˜๊ฐ€ ์ข‹๋‹ค๊ณ  ํ•ด๋„ ์†๊ฐ€๋ฝ ํ•˜๋‚˜๊ฐ€ Ctrl์„ ๋ˆ„๋ฅด๊ณ  ์žˆ๋‹ค ๋ณด๋ฉด ๋ถˆํŽธํ•ด์ง€๋Š”๋ฐ, ํŽ˜๋‹ฌ์— Ctrl ์„ ์ง€์ •ํ–ˆ๋‹ค๋ฉด ๊ทธ๋ƒฅ ๋ฐŸ์€ ์ƒํƒœ์—์„œ u x e๋งŒ ๋ˆŒ๋Ÿฌ์ฃผ๋ฉด ๋œ๋‹ค. ๋‹จ์ถ•ํ‚ค ํŽธ์˜์„ฑ์ด ๊ฑฐ์˜ vi์— ๊ทผ์ ‘ํ•˜๋Š” ์ˆ˜์ค€์œผ๋กœ ํ–ฅ์ƒ๋˜๊ณ  ํ•œ ์†์œผ๋กœ๋„ ๋ณต์žกํ•œ ๋ช…๋ น์„ ๊ฐ„๋‹จํžˆ ์น  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

13.2. ๋ชจ๋‹ฌ ํŽธ์ง‘๊ธฐ[ํŽธ์ง‘]

์ด๋งฅ์Šค ์œ ์ €๋“ค์€ vi๋ฅผ ๋ถˆํŽธํ•˜๊ฒŒ ๋ชจ๋“œ๋“ค์ด ์กด์žฌํ•˜๋Š” ๋ชจ๋‹ฌํŽธ์ง‘๊ธฐ๋ผ๋ฉฐ ๋น„ํŒํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์•˜๋‹ค. ํ•˜์ง€๋งŒ ์‹ค์ƒ์„ ๋ณด๋ฉด ์ด๋งฅ์Šค๋„ ์—ฌ๊ธฐ์„œ ๊ทธ๋‹ค์ง€ ์ž์œ ๋กญ์ง€ ๋ชปํ•˜๋‹ค. ์ด๋งฅ์Šค์˜ ๊ฒฝ์šฐ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ๋ช‡๋ช‡ ๋ช…๋ น์–ด๋“ค์„ ์ œ์™ธํ•˜๋ฉด C-x, C-u, C-c, M-x ๋“ฑ์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ๋“ค์ด ๋งŽ๋‹ค. ์ด๋Š” ์‚ฌ์‹ค ์–ด์ฉ” ์ˆ˜ ์—†๋Š” ๊ฒƒ์ด, ์ด๋งฅ์Šค๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๋ช…๋ น์–ด๋Š” ์ˆ˜์ฒœ ๊ฐœ ๋‹จ์œ„์ธ๋ฐ, ์ผ๋ฐ˜์ ์œผ๋กœ ํ‚ค๋ณด๋“œ์—์„œ ๋ˆ„๋ฅผ ์ˆ˜ ์žˆ๋Š” ํ‚ค๋Š” 100์—ฌ ๊ฐœ ์ •๋„๊ฐ€ ์ „๋ถ€์ด๊ณ , ๊ทธ๊ฒƒ๋„ ๋ช…๋ น์–ด๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํ‚ค๋งŒ ๋”ฐ์ ธ๋ณด๋ฉด ๋ช‡ ๊ฐœ ๋˜์ง€๋„ ์•Š๋Š”๋‹ค. ๊ทธ๋Ÿฌ๋‹ˆ ์ €๋Ÿฐ ์‹์˜ ์กฐํ•ฉ์ด ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•ด์ง„๋‹ค. ๋ฌธ์ œ๋Š” ๊ทธ๋Ÿฐ ์‹์œผ๋กœ ๋ณด๋ฉด ๋‹ค๋ฅธ ๋ช…๋ น์–ด๋ฅผ ์œ„ํ•ด ๋ˆŒ๋Ÿฌ์ค˜์•ผ ํ•˜๋Š” C-x ๊ฐ™์€ ํ‚ค๋Š” ์‚ฌ์‹ค์ƒ vi์—์„œ์˜ normal mode๋กœ ์ง„์ž…ํ•˜๊ฒŒ ํ•ด ์ฃผ๊ณ , ๋ช…๋ น์–ด ์ž…๋ ฅ ํ›„ insert mode๋กœ ์ž๋™์œผ๋กœ ๋น ์ ธ๋‚˜๊ฐ€๊ฒŒ ํ•ด์ฃผ๋Š” ํ‚ค๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค. ๊ฒฐ๊ตญ, ์ด๋Ÿฐ ๊ด€์ ์—์„œ๋Š” vi๋Š” normal mode๊ฐ€ ๊ธฐ๋ณธ๊ฐ’์ธ ๋ชจ๋‹ฌ ํŽธ์ง‘๊ธฐ, ์ด๋งฅ์Šค๋Š” insert mode๊ฐ€ ๊ธฐ๋ณธ๊ฐ’์ธ ๋ชจ๋‹ฌ ํŽธ์ง‘๊ธฐ๋ผ ํ•ด๋„ ํ•  ๋ง ์—†๋‹ค.

13.3. ์ปค์„œ์ด๋™[ํŽธ์ง‘]

vi์˜ ์„ฑ๊ณต์‹ ํ™”์˜ ์ค‘์‹ฌ์—๋Š” hjkl ๋กœ ์ปค์„œ๋ฅผ ์ด๋™ํ•˜๋Š” ๊ฒƒ์ด ์žˆ์—ˆ๋‹ค. ์ฆ‰, ์ปค์„œ๋ฅผ ์ด๋™ํ•˜๊ณ  ๋‹ค์‹œ ํƒ€์ž๋ฅผ ์น˜๊ณ  ํ•  ๋•Œ ์˜ค๋ฅธ์†์ด ๋ฐ”์˜๊ฒŒ ํ‚ค๋ณด๋“œ ๊ฐ€์žฅ์ž๋ฆฌ์˜ ์ปค์„œ ํ‚ค์™€ ์ค‘์‹ฌ์œผ๋กœ ์™”๋‹ค๊ฐ”๋‹ค ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์ด ํฐ ์žฅ์ ์œผ๋กœ ์—ฌ๊ฒจ์กŒ๋‹ค. ์ด๋งฅ์Šค๋„ ํ‚ค๋ณด๋“œ ์ค‘์‹ฌ์—์„œ ์ปค์„œ ํ‚ค๋ฅผ ์ด๋™ํ•˜๋Š” ๋ฐฉ์‹์„ ์ œ๊ณตํ•˜๋Š”๋ฐ... C-n, C-p, C-f, C-b๊ฐ€ ๊ทธ๊ฒƒ์ด๋‹ค. ๋ณด๋ฉด ์•Œ๊ฒ ์ง€๋งŒ, ์†๊ฐ€๋ฝ ๋ฐฐ์—ด์„ ์ „ํ˜€ ์ƒ๊ฐํ•˜์ง€ ์•Š๊ณ  '์˜๋ฏธ' ์œ„์ฃผ๋กœ ๋งŒ๋“ค์–ด์ง„ ๋ฐฐ์น˜์ด๋‹ค.(next, previous, forward, backward) ์ด๋งฅ์Šค ํŠœํ† ๋ฆฌ์–ผ์€ ์ด๊ฒƒ์ด ๋” ํŽธ๋ฆฌํ•˜๋‹ค๊ณ  ๊ฐ•์กฐ๋ฅผ ํ•˜์ง€๋งŒ, ์‹ค์ œ๋กœ๋Š” Ctrl๊ณผ ์กฐํ•ฉ์„ ํ•ด์•ผ ํ•œ๋‹ค๋Š” ์ , ๊ทธ๋ฆฌ๊ณ  ํ‚ค๋ฐฐ์น˜๊ฐ€ ์—‰๋šฑํ•˜๋‹ค๋Š” ์  ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์ด ์˜คํžˆ๋ ค ๋ถˆํŽธํ•˜๋‹ค๋ฉฐ ์ปค์„œ ํ‚ค๋ฅผ ์ด์šฉํ•˜๋Š” ์‚ฌ๋žŒ์ด ๋งŽ๋‹ค.

13.4. ์ด๋งฅ์Šค๋Š” OS[ํŽธ์ง‘]

์ด๋งฅ์Šค๋Š” ์–ด์ฐŒ ๋ณด๋ฉด ๋‹จ์ˆœํ•œ ํŽธ์ง‘๊ธฐ๋ผ๊ธฐ๋ณด๋‹ค ํŽธ์ง‘๊ธฐ์˜ ํƒˆ์„ ์“ด ๊ฐ€์ƒ LISP Machine์ด๋ผ ๋ณด๋Š” ๊ฒŒ ํƒ€๋‹นํ•  ์ •๋„๋กœ ์—„์ฒญ๋‚œ ํ™•์žฅ์„ฑ์„ ๊ฐ€์กŒ๋‹ค. ์—ฌ๊ธฐ์— ๋ฒ„ํผ๋ฅผ ์ด์šฉํ•˜๋ฉด ์ด๋งฅ์Šค ๋‚ด์—์„œ ๊ฑฐ์˜ ๋ชจ๋“  ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉฐ ํ•˜๋‚˜์˜ OS ๋ผ๊ณ  ์ฐฌ์–‘์„ ๋ฐ›๋˜ ์‹œ์ ˆ์ด ์žˆ์—ˆ๊ณ [6], vi ์œ ์ €๋“ค๋„ ์ด๋งฅ์Šค๋Š” '์ข‹์€ ํŽธ์ง‘๊ธฐ๋งŒ ์กด์žฌํ–ˆ๋‹ค๋ฉด ์™„๋ฒฝํ•œ OS' ๋ผ๋ฉฐ ๊ณต๊ฐ์„ ํ•˜์˜€๋‹ค. ์‹ค์ œ๋กœ, ํŽธ์ง‘๊ธฐ ๊ธฐ๋Šฅ์— ๋”ํ•˜์—ฌ ์›น ๋ธŒ๋ผ์šฐ์ง•, ๋ฉ”์ผ ํด๋ผ์ด์–ธํŠธ, ๊ฐ„๋‹จํ•œ ๊ฒŒ์ž„, PIM ๋“ฑ ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€๋ถ€๋ถ„์ด ์ œ๊ณต๋œ๋‹ค. ํ•˜์ง€๋งŒ, ์ด๋Š” ์ „์ ์œผ๋กœ CLI ์‹œ์ ˆ์—๋‚˜ ํ•ด๋‹น๋˜๋Š” ๊ฒƒ์ด๋‹ค. ์˜ค๋Š˜๋‚ ์˜ OS๋Š” ๋Œ€๋ถ€๋ถ„ GUI์™€ ๋ฉ€ํ‹ฐํƒœ์Šคํ‚น์ด ์ง€์›๋˜๋Š” ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•˜์—ฌ, ํŽธ์ง‘๊ธฐ๋ฅผ ์—ด๊ณ , ์˜†์— ์ด๋งฅ์Šค๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค '๋” ์ข‹์€' ์›น๋ธŒ๋ผ์šฐ์ €๋ฅผ ์—ด๊ณ , ์ด๋งฅ์Šค๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค '๋” ์ข‹์€' ๋ฉ”์ผ ํด๋ผ์ด์–ธํŠธ๋ฅผ ์—ด๊ณ  ๊ฐ„๋‹จํ•œ ๋งˆ์šฐ์Šค ํด๋ฆญ์œผ๋กœ ํ˜น์€ ์œˆ๋„์šฐ ๋งค๋‹ˆ์ €๊ฐ€ ์ง€์›ํ•  ๊ฒฝ์šฐ ๋‹จ์ถ•ํ‚ค๋กœ ๊ฐ„๋‹จํžˆ ์ด๋™ํ•˜๋ฉด์„œ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ๋•๋ถ„์— ์ด๋Ÿฐ ์žฅ์ ์€ ๋น›์ด ๋ฐ”๋žฌ๊ณ  ๊ธฐํ˜ธ์˜ ์˜์—ญ์œผ๋กœ ์ „ํ™˜๋˜์—ˆ๋‹ค.

๋˜ํ•œ, ์ปค๋งจ๋“œ๋ผ์ธ ์œ„์ฃผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ์˜ฌ๋“œ์Šค์ฟจ ์œ ๋‹‰์Šค ์œ ์ €๋“ค์—๊ฒŒ ์žˆ์–ด์„œ๋„ ์ด๊ฒŒ ๊ทธ๋ฆฌ ์ข‹์€ ํ‰๊ฐ€๋Š” ๋ชป ๋ฐ›์•˜๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์œ ๋‹‰์Šค์—์„œ ์ œ๊ณตํ•˜๋Š” ๋‹ค์ˆ˜์˜ ์…ธ ๋ช…๋ น๋“ค์„ ๊นก๋ฌด์‹œํ•˜๋ฉด์„œ ์ž์ฒด์ ์œผ๋กœ ๊ทธ์™€ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ํ•˜๋Š” ๋ช…๋ น๋“ค์„ ์ƒˆ๋กœ์ด ํƒ‘์žฌํ•˜๊ณ  ๋…์ž์ ์ธ ํ™˜๊ฒฝ์„ ์กฐ์„ฑํ•˜๋Š” ์œก์ค‘ํ•œ ํ•˜๋‚˜์˜ ์†Œํ”„ํŠธ์›จ์–ด๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์œ ๋‹‰์Šค์˜ ๊ธฐ๋ณธ์ ์ธ ์ฒ ํ•™์— ํฌ๊ฒŒ ์œ„๋ฐฐ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์‹ค์ œ๋กœ ์œ ๋‹‰์Šค๋ฅผ ๋งŒ๋“ค์—ˆ๋˜ ๋ฒจ ์—ฐ๊ตฌ์†Œ์˜ ๊ฐœ์ฒ™์ž๋“ค์ธ ๋ฐ๋‹ˆ์Šค ๋ฆฌ์น˜, ์ผ„ ํ†ฐ์Šจ, ์ŠคํŠธ๋กœ์ŠคํŠธ๋Ÿฝ, ๋กญ ํŒŒ์ดํฌ ๋“ฑ์€ ํŽธ์ง‘์ด๋ผ๋Š” ๋ชฉ์ ์—๋งŒ ์ถฉ์‹คํ•˜๊ณ  ๋‚˜๋จธ์ง€๋Š” ๋‹ค๋ฅธ ์œ ๋‹‰์Šค ๋„๊ตฌ์— ์˜์กดํ•˜๋Š” ๋‹จ์ˆœํ•œ ํŽธ์ง‘๊ธฐ์ธ ed, acme, sam ๋“ฑ์„ ๋๊นŒ์ง€ ์„ ํ˜ธํ•˜์˜€๋‹ค. ์ด์— ๋Œ€ํ•ด ์…ธ๊ณผ ํ•จ๊ป˜ ๋”ธ๋ ค์˜ค๋Š” ์ˆ˜๋งŽ์€ ์œ ๋‹‰์Šค ํˆด ์—ญ์‹œ ๋ฉ์น˜๊ฐ€ ํฐ ๊ฑด ์ด๋งฅ์Šค์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๊ณ  ์„ ํƒ์˜ ๋ฌธ์ œ๋ผ๊ณ  ๋ณด๋Š” ์ฃผ์žฅ๋„ ์žˆ๊ธด ํ•˜๋‹ค.์ง„์งœ OS ์™€ ๊ฒฝ์Ÿ์„ ํ•˜๊ณ  ์•‰์•˜๋‹ค.

13.5. ๋‚œํ•ดํ•จ[ํŽธ์ง‘]

Emacs๋Š” ํ•™์Šต ๊ณก์„ ์˜ ์ดˆ๋ฐ˜ ๊ทธ๋ž˜ํ”„ ๊ธฐ์šธ๊ธฐ๊ฐ€ ์™„๋งŒํ•˜๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. ์˜ค๋Š˜๋‚  ์ด๋งฅ์Šค๊ฐ€ ๋’ค์ณ์ง€๊ฒŒ ๋œ ๊ฐ€์žฅ ํฐ ์ด์œ  ์ค‘ ํ•˜๋‚˜์ด๋‹ค. ๊ตณ์ด ์ ‘๊ทผ์„ฑ์ด ๋†’์€ ๋‹ค๋ฅธ ์œ„์ง€์œ„๊ทธ ํŽธ์ง‘๊ธฐ์™€ ๋น„๊ตํ•  ๊ฒƒ๋„ ์—†์ด, vi/vim๊ณผ ๋น„๊ตํ•ด ๋ด๋„ Emacs๋ณด๋‹ค๋Š” vi/vim ์œ ์ €๊ฐ€ ํ›จ์”ฌ ๋งŽ๋‹ค. ๊ทธ ๊ฐ€์žฅ ํฐ ์ด์œ ๋Š”, ์ด๋งฅ์Šค๋Š” ์ œ๋Œ€๋กœ ๋‹ค๋ฃจ๊ธฐ๊ฐ€ ๋งค์šฐ ํž˜๋“  ํŽธ์ง‘๊ธฐ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋ฐ˜๋ฉด์— ํ•ด์ปค๋“ค์—๊ฒ ๊ฐ€์žฅ ์ธ๊ธฐ ์žˆ๋Š” ํŽธ์ง‘๊ธฐ์ด๊ธฐ๋„ ํ•œ๋ฐ, ๊ฐ•๋ ฅํ•จ์ด ์ด์œ ๋ผ๊ธฐ๋ณด๋‹ค๋Š” ๋‹จ์ง€ ํ•ด์ปค ํŠน์œ ์˜ ์ž…๋ง›์— ๋งž๊ฒŒ ๋œฏ์–ด๊ณ ์น˜๊ธฐ๊ฐ€ ๋˜๋‹ค ๋ณด๋‹ˆ ์ธ๊ธฐ๊ฐ€ ์ข‹์€ ๊ฒƒ. ๋ฆฌ๋ˆ…์Šค ์—ญ์‹œ ๊ฐ™์€ ์ด์œ ๋กœ ์ธ๊ธฐ๊ฐ€ ๋†’๋‹ค. vi/vim๋„ ๋‚œํ•ดํ•˜๋‹ค๋Š” ํ‰๊ฐ€๋ฅผ ์ฃผ๋กœ ๋“ฃ์ง€๋งŒ, ์ž์ฃผ ์“ฐ๋Š” ๋ช‡์‹ญ๊ฐœ ์ •๋„์˜ ํ‚ค ์ŠคํŠธ๋กœํฌ๋งŒ ์ต์ˆ™ํ•ด์ ธ๋„ ์›ฌ๋งŒํ•œ ํƒ€ ํŽธ์ง‘๊ธฐ์˜ ์ƒ์‚ฐ์„ฑ์„ ํฌ๊ฒŒ ์•ž์„œ๊ฐˆ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ๊ณต๋“ค์ธ ๋Œ€๊ฐ€๊ฐ€ ์ƒ๋‹นํžˆ ๋น ๋ฅด๊ฒŒ ์ฐพ์•„์˜ค๋Š” ํŽธ์ด๋‹ค. ํ•˜์ง€๋งŒ ์ด๋งฅ์Šค์˜ ๊ฒฝ์šฐ Elisp์ด๋ผ๋Š” ํ•˜๋‚˜์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์— ์–ด๋А ์ •๋„ ์ต์ˆ™ํ•ด์ ธ ์ž์‹ ์—๊ฒŒ ์ ํ•ฉํ•œ ์„ธํŒ…/๊ธฐ๋Šฅ์„ ๋งŒ๋“ค์–ด ์ ์šฉํ•˜๋Š” ๊ฒŒ ๊ฐ€๋Šฅํ•ด์ง€๊ธฐ ์ „๊นŒ์ง€๋Š” vi/vim๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์—ฌํƒ€ ํŽธ์ง‘๊ธฐ์— ๋น„ํ•ด์„œ๋„ ๋’ค์ง„๋‹ค. Elisp์€ ๋‹จ์ˆœํžˆ ์ด๋งฅ์Šค ์ปค์Šคํ„ฐ๋งˆ์ด์ง•์— ์‚ฌ์šฉ๋˜๋Š” ๋ฌธ๋ฒ• ์ •๋„๊ฐ€ ์•„๋‹ˆ๋ผ ์ง„์งœ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ด๋‹ค. ๊ทธ๊ฒƒ๋„ ๋‚œํ•ดํ•˜๋‹ค๊ณ  ์œ ๋ช…ํ•œ Lisp family. ๊ฒŒ๋‹ค๊ฐ€ ์œ ์—ฐ์„ฑ์€ Elisp๋ณด๋‹ค ๋–จ์–ด์ง€์ง€๋งŒ, vi/vim์—์„œ ์ œ๊ณตํ•˜๋Š” ๋นŒํŠธ์ธ ํ•จ์ˆ˜๋งŒ์œผ๋กœ๋„ ํŽธ์ง‘์œผ๋กœ๋งŒ ์ œํ•œํ•˜๋ฉด ์ƒ๋‹นํžˆ ๋งŽ์€ ๊ฒƒ๋“ค์ด ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๊ตณ์ด ์ผ๋ฐ˜ ํ”„๋กœ๊ทธ๋ž˜๋จธ๋“ค์ด ์ƒ์†Œํ•œ Elisp์œผ๋กœ ๋ฐ”๋‹ฅ๋ถ€ํ„ฐ ์งœ์•ผ ํ•  ์ด์œ ๊ฐ€ ๋ณ„๋กœ ์—†๋‹ค.

์•ฝ๊ฐ„ ๊ณผ์žฅํ•ด์„œ vim script๊ฐ€ bash๋ผ๋ฉด, Elisp์€ C ์–ธ์–ด ์ •๋„์— ํ•ด๋‹น๋œ๋‹ค. C ์–ธ์–ด๋Š” ๋ฌผ๋ก  bash๋กœ ํ•˜์ง€ ๋ชปํ•˜๋Š” ๋งŽ์€ ๊ฒƒ๋“ค์ด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ์ผ๋ฐ˜์ ์ธ ์…ธ ์ž‘์—…์€ bash๋กœ ๋ชปํ•  ๊ฒƒ์ด ์—†์œผ๋ฉฐ, bash ๋ช‡ ์ค„๋กœ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅํ•œ ์ž‘์—…์ด C ์–ธ์–ด๋กœ๋Š” ๋ฆฌ์–ผ ํ”„๋กœ์ ํŠธ๊ฐ€ ๋ผ๋ฒ„๋ฆฐ๋‹ค. ๋ฌผ๋ก , ๋น„๊ต๋ฅผ ์œ„ํ•ด C ์–ธ์–ด๋ฅผ ์ด์•ผ๊ธฐํ•œ ๊ฒƒ์ผ ๋ฟ Elisp ์ž์ฒด๋„ ์ƒ๋‹นํ•œ ํ•˜์ด๋ ˆ๋ฒจ ์–ธ์–ด๊ณ  vi๋ณด๋‹ค ํ›จ์”ฌ ๋งŽ์€ ๋‚ด์žฅ ํ•จ์ˆ˜๋ฅผ ์ œ๊ณตํ•˜๊ธฐ๋•Œ๋ฌธ์— ์ƒ์‚ฐ์„ฑ์€ C๋ณด๋‹ค ํ›จ์”ฌ ๋†’๋‹ค. Elisp์œผ๋กœ๋Š” vim script๋กœ ๊ตฌํ˜„ํ•˜๊ธฐ ํž˜๋“ค๊ฑฐ๋‚˜ ๋ถˆ๊ฐ€๋Šฅํ•œ ํ„ฐ๋ฏธ๋„ ์—๋ฎฌ๋ ˆ์ดํ„ฐ๋ผ๋“ ๊ฐ€, ๋ฉ€ํ‹ฐ๋ฏธ๋””์–ด, ๊ฒŒ์ž„, ๋ฉ”์ผ ํด๋ผ์ด์–ธํŠธ ๊ธฐํƒ€ ๋“ฑ๋“ฑ์ด ๋‹ค ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ์ •์ž‘ ์ˆœ์ˆ˜ ํŽธ์ง‘๊ธฐ ๊ธฐ๋Šฅ์œผ๋กœ ๋ณด๋ฉด vi/vim๊ณผ ์ด๋งฅ์Šค๊ฐ€ ํฐ ์ฐจ์ด๊ฐ€ ์—†๋‹ค. ๋˜ํ•œ ์ด๋งฅ์Šค์—์„œ ๋ณต์žกํ•œ ๊ธฐ๋Šฅ๋“ค์„ ๊ตฌํ˜„ํ•œ๋‹ค๊ณ  ํ•ด ๋ดค์ž, ์ž˜ํ•ด์•ผ ๊ธฐ์กด IDE ์™€ ๋น„์Šทํ•œ ์ •๋„. ์ฆ‰, ๋‹จ์ˆœํ•œ ํŽธ์ง‘๊ธฐ ๊ธฐ๋Šฅ์—๋Š” vi/vim๊ณผ ๋น„์Šทํ•˜๊ฑฐ๋‚˜ ์กฐ์ž‘์„ฑ ๋ฌธ์ œ๋กœ ๋น„ํšจ์œจ์ ์ด๊ณ , ๋ฆฌํŒฉํ† ๋ง ๋“ฑ์˜ ๋ณต์žกํ•œ ๊ธฐ๋Šฅ์„ ๋น„๊ตํ•˜๋ฉด IDE์— ๋น„ํ•ด ๋ฉ”๋ฆฌํŠธ๊ฐ€ ์ ์–ด ๋‚œํ•ดํ•˜๊ธฐ๋งŒ ํ•ด์„œ ์ค‘๊ฐ„์— ๋ผ์ธ ์ƒํ™ฉ์ด๋‹ค.

์–ด์จŒ๋“  ์ด๋Ÿฌํ•œ ๋‚œํ•ดํ•จ ๋•Œ๋ฌธ์— ๋„์ „ํ–ˆ๋‹ค๊ฐ€ ํฌ๊ธฐํ•˜๋Š” ์œ ์ €๊ฐ€ ๋Œ€๋ถ€๋ถ„์ด๋ฉฐ ๋„์ „ํ•  ์—„๋‘์กฐ์ฐจ ๋‚ด์ง€ ๋ชปํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์€ ํ• ์•„๋ฒ„์ง€ ํ”„๋กœ๊ทธ๋ž˜๋จธ๋“ค์ด๋‚˜ ์• ์šฉํ•œ๋‹ค๋ฉฐ ๋น„๋‚œํ•œ๋‹ค. ๊ณผ๊ฑฐ ์œ ๋‹‰์Šค๋กœ ์ด๋งฅ์Šค๋ฅผ ๊ฐ€์žฅ ๋จผ์ € ํฌํŒ…ํ–ˆ๋˜ ์ œ์ž„์Šค ๊ณ ์Šฌ๋ง์กฐ์ฐจ๋„ ์‹œ๋Œ€์— ๋’ค์ณ์กŒ๋‹ค๋ฉฐ ์ด๋งฅ์Šค๋ฅผ ๊น ๋‹ค. ์ž์‚ฌ IDE์ธ ๋„ท๋นˆ์ฆˆ ์“ฐ๋ผ๋Š” ์ด์•ผ๊ธฐ์ด๊ธด ํ–ˆ์ง€๋งŒ.

์ด๋Ÿฌํ•œ ๋‚œํ•ดํ•จ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”๋ฆฌํŠธ๋ฅผ ๋„์ง‘์–ด๋‚ด์–ด ๋ณธ๋‹ค๋ฉด, Gnuplot์ด๋‚˜ LaTeX, Octave์šฉ ํŒจํ‚ค์ง€๊ฐ€ ์ž˜ ์ง€์›๋˜๊ณ  ํŠนํžˆ LISP ๊ณ„์—ด ์–ธ์–ด๋ฅผ ๊ฐœ๋ฐœํ•˜๋Š” ๋ฐ ๋ง‰๊ฐ•ํ•œ ํŽธ๋ฆฌ์„ฑ์„ ์ œ๊ณตํ•œ๋‹ค๋Š” ์ ์ด๋‹ค. nREPL์„ ํ†ตํ•ด ๋ณ„๋„๋กœ ์‹คํ–‰๋˜๋Š” Lisp ํ”„๋กœ์„ธ์Šค์™€ ํ†ต์‹ ํ•˜๋ฉฐ ์ฆ‰์„์—์„œ ์ฝ”๋“œ๋ฅผ ์ฃผ์ž…ํ•˜์—ฌ ์‹คํ–‰ํ•ด ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ฉด์„œ ์ฝ”๋”ฉํ•˜๊ณ  ๋””๋ฒ„๊ทธ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฌผ๋ก  ๋‹ค๋ฅธ ํŽธ์ง‘๊ธฐ๋‚˜ ๊ฐœ๋ฐœํ™˜๊ฒฝ์—์„œ๋„ ์ด๋Ÿฌํ•œ ๊ฒƒ์„ ์ง€์›ํ•ด ์ฃผ๊ธฐ๋Š” ํ•˜์ง€๋งŒ Emacs๋งŒํผ ํŽธ๋ฆฌํ•˜๊ณ  ์ง๊ด€์ ์ธ ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•˜๋Š” ํˆด์€ ์•„์ง๊นŒ์ง€ ์ฐพ๊ธฐ ํž˜๋“ค๋‹ค.

14. Elisp[ํŽธ์ง‘]

Common lisp๊ณผ ๋น„์Šทํ•˜์ง€๋งŒ, ์•„๋ฌด๋ž˜๋„ ์ข€ ๊ตฌํ˜•์ด๋ผ Common lisp์— ๋น„ํ•ด ๊ธฐ๋Šฅ์€ ์ƒ๋‹นํžˆ ๋–จ์–ด์ง„๋‹ค. ๊ทธ๋ž˜์„œ, Elisp์„ ๋Œ€์ฒดํ•˜์ž๋Š” ์†Œ๋ฆฌ๋„ ๋งŽ์ด ๋‚˜์™”๊ณ  ์Šคํ†จ๋งŒ์€ Guile์ด๋ผ๋Š” ์–ธ์–ด๋กœ ๋Œ€์ฒดํ•  ์ƒ๊ฐ์ด ์žˆ๋‹ค๋Š” ์ด์•ผ๊ธฐ๋„ ํ–ˆ๋‹ค. Guile์€ Scheme family๋ผ ๊ฐ™์€ lisp์ด๊ธด ํ•˜์ง€๋งŒ, Common lisp ์ชฝ๊ณผ ๋” ์œ ์‚ฌํ•œ Elisp๊ณผ๋Š” ์ฐจ์ด๊ฐ€ ์ข€ ์žˆ๋‹ค. Common lisp์ด ์˜ค๋งŒ๊ฐ€์ง€ ๊ธฐ๋Šฅ์„ ๋‹ค ๋•Œ๋ ค ๋„ฃ์€ C++๋ผ๋ฉด, Scheme์€ ํ•ต์‹ฌ์ ์ธ ๋ถ€๋ถ„๋งŒ ์ปดํŒฉํŠธํ•˜๊ฒŒ ์œ ์ง€ํ•˜๋Š” C ์–ธ์–ด๋กœ ๋น„๊ตํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฌผ๋ก , ์˜ˆ์ „ ์ด์•ผ๊ธฐ์ด๊ณ  R6RS ๋ถ€ํ„ฐ๋Š” Scheme๋„ ์ƒ๋‹นํžˆ ์œก์ค‘ํ•ด์กŒ๋‹ค. ํ•˜์ง€๋งŒ ์ €๊ฒŒ ์ด๋ฏธ 10๋…„๋„ ๋” ์ „์— ๋‚˜์˜จ ์†Œ๋ฆฌ์ธ๋ฐ ์•„์ง ๊ตฌํ˜„์ด ์•ˆ๋๋‹ค. ๋ฌผ๋ก  Elisp ์ฝ”๋“œ๊ฐ€ ์ˆ˜์‹ญ๋งŒ์ค„ ์ด์ƒ์ด๋ผ ๊ฐ„๋‹จํžˆ ๊ฐ€๋Šฅํ•œ ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ ๋Œ€์ฒด๋ฅผ ์œ„ํ•œ ํ™œ๋™ ์ž์ฒด๊ฐ€ ๋ฏธ๋ฏธํ•˜๋‹ค. ๊ฒฐ๊ตญ ๋ฐ”๋‹ฅ๋ถ€ํ„ฐ ์ƒˆ๋กœ ๋งŒ๋“ค๊ธฐ๋ณด๋‹ค Elisp์„ Guile ๋‚ด์— ์ž„๋ฒ ๋”ฉํ•˜๋Š” ์‹์œผ๋กœ ์–ผ๋งˆ ์ „ GSoC์—์„œ ๋งˆ์ด๋„ˆ ์ด์Šˆ๋งŒ ์ข€ ์žˆ๊ณ  ๊ฑฐ์˜ ๋‹ค ๋๋‚œ๋“ฏํ•œ ๋‰˜์•™์Šค๋ฅผ ํ’๊ฒผ๋Š”๋ฐ GSoC ์ดํ›„๋กœ๋Š” ๋‹ค์‹œ ์นจ์ฒด์ธ ๋“ฏ.

15. ์ฐธ๊ณ [ํŽธ์ง‘]

์‚ฌ์šฉ๋ฒ•์„ ์•Œ๊ณ  ์‹ถ๋‹ค๋ฉด ์—ฌ๊ธฐ์ €๊ธฐ ๋ฐฉ๋ฌธํ•ด ๋ณด์ž.

์ด๋Ÿฐ ํŒจํ‚ค์ง€๋„ ์ฐธ๊ณ ํ•ด ๋ณด์ž. prelude

Vim์— ๋” ์ต์ˆ™ํ•˜์ง€๋งŒ ํŠน๋ณ„ํ•œ ์ด์œ  ๋•Œ๋ฌธ์— ์ด๋งฅ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ณ ์ž ํ•œ๋‹ค๋ฉด Vim ํ‚ค๋ฐ”์ธ๋”ฉ์ด ๊ธฐ๋ณธ์œผ๋กœ ์„ค์ •๋˜์–ด์žˆ๋Š” ์ŠคํŽ˜์ด์Šค๋งฅ์Šค๋„ ๋‚˜์˜์ง€ ์•Š์€ ์„ ํƒ์ด๋‹ค. spacemacs

15.1. ๋‹ค์šด ๋ฐ›๊ธฐ[ํŽธ์ง‘]

๋ณดํ†ต Unix ๊ธฐ๋ฐ˜์˜ ์šด์˜ ์ฒด์ œ๋“ค์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ํƒ‘์žฌํ•˜๊ณ  ์žˆ๊ฑฐ๋‚˜ ์†์‰ฝ๊ฒŒ ํŒจํ‚ค์ง€๋ฅผ ๋‹ค์šด๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.
  • ๋ฐ๋น„์•ˆ ๊ณ„์—ด์˜ ๊ฒฝ์šฐ sudo apt-get install emacs, ๋ ˆ๋“œํ–‡ ๊ณ„์—ด์€ sudo yumdnf install emacs๋ฅผ ํ„ฐ๋ฏธ๋„์— ์ž…๋ ฅํ•ด ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • macOS: Emacs For OS X ํ˜น์€ Aquamacs
  • Windows: MSYS2 ํˆด์ฒด์ธ์„ ์ด์šฉํ•ด์„œ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค. MSYS2 ํ„ฐ๋ฏธ๋„์— pacman -S mingw-w64-x86_64-emacs๋ฅผ ์ž…๋ ฅํ•˜๋ฉด mingw64/bin ํด๋” ๋‚ด์— ์„ค์น˜ ์™„๋ฃŒ. NT Emacs ๋“ฑ์˜ ๋‹ค๋ฅธ ๋ฒ„์ „๋„ ์žˆ๋‹ค.
[1] vim๋„ ๋ฒ„์ „ 8.0๋ถ€ํ„ฐ ํ„ฐ๋ฏธ๋„ ์—๋ฎฌ๋ ˆ์ดํŒ…์„ ์ง€์›ํ•œ๋‹ค.
[2] 2^20 ๋ฐ”์ดํŠธ๋กœ 1๋ฉ”๊ฐ€๋ฐ”์ดํŠธ์˜ ํฌ๊ธฐ. ์›๋ž˜ 1๋ฉ”๊ฐ€๋ผ๋Š” ๋‹จ์œ„๋Š” 10^6์„ ์˜๋ฏธํ•˜๋Š” ๊ฒƒ์ด๋ผ ์ปดํ“จํ„ฐ์˜ ๋‹จ์œ„์™€ ์•ฝ๊ฐ„ ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค. ์ด๋ฅผ ์ •ํ™•ํ•˜๊ฒŒ ์ง€์ ํ•˜๊ธฐ ์œ„ํ•ด Mi, ๋ฉ”๋น„๋ผ๋Š” ๋‹จ์œ„๋ฅผ ์ฐฝ์„คํ–ˆ์œผ๋‚˜... ์ผ๋ฐ˜์ ์œผ๋กœ ๋งŽ์ด ์“ฐ์ด์ง€๋Š” ์•Š๋Š” ๋“ฏ ํ•˜๋‹ค.
[3] ๋ณดํ†ต Dired๋ผ๋Š” ํŒŒ์ผ ๊ด€๋ฆฌ์ž ๋ชจ๋“œ์—์„œ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
[4] zone ์ด๋ผ๋Š” ๋ชจ๋“œ์ธ๋ฐ ์‚ฌ์šฉํ•˜๋ฉด ํ˜„์žฌ ๋ฒ„ํผ์˜ ๋ฌธ์ž๋ฅผ ์ด๋ฆฌ์ €๋ฆฌ ๋ฐ”๊พธ๊ณ  ์›€์ง์ด๋ฉด์„œ ํ˜ผ์ž ๋…ผ๋‹ค. ์ผ์ข…์˜ ์Šคํฌ๋ฆฐ์„ธ์ด๋ฒ„.
[5] ์ด ์—ญ์‹œ vi ํŒฌ๋“คํ•œํ…Œ ๊นŒ์ด๋Š” ์ ๋“ค ์ค‘ ํ•˜๋‚˜.
[6] ๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์Šค๊ฐ€ ์•ˆ๋˜๋˜ ์‹œ์ ˆ ์–˜๊ธฐ.. 1990๋…„๋Œ€ ์ด์ „์„ ์ƒ๊ฐํ•˜๋ฉด ๋  ๋“ฏ