์ด ๋ฌธ์„œ์˜ ์›๋ณธ์€ ์™ธ๋ถ€ ์œ„ํ‚ค์—์„œ ๊ฐ€์ ธ์™”์Šต๋‹ˆ๋‹ค.
vi improved
๊ฐœ๋ฐœ์ž
Bram Moolenaar
์ตœ์ดˆ ๋ฆด๋ฆฌ์ฆˆ
๊ฐœ๋ฐœ ์–ธ์–ด
C
์šด์˜ ์ฒด์ œ
๋ฉ€ํ‹ฐ ํ”Œ๋žซํผ[1]
์–ธ์–ด
๋‹ค๊ตญ์–ด ์ง€์› (์˜์–ด ๊ธฐ๋ณธ)
๋ผ์ด์„ ์Šค
์ฑ„๋ฆฌํ‹ฐ์›จ์–ด
GPL
์›น ์‚ฌ์ดํŠธ
TUI ํ™˜๊ฒฝ์˜ vim
์ด ์Šคํฌ๋ฆฐ์ƒท์€ vim์˜ ๊ทธ๋ž˜ํ”ฝ ๋ฒ„์ „์ธ GVim์ด๋‹ค. ์›๋ž˜ vi๋‚˜ vim์€ TUI์ด๋‹ค. ํ•˜์ง€๋งŒ CUI์™€ ์ž์ฃผ ํ˜ผ๋™๋œ๋‹ค. CUI๋Š” ์˜๋ฏธ๋ฅผ ๊ฐ€์ง€๋Š” ๋ฌธ์ž์—ด์˜ ๋‚˜์—ด๋กœ ์ด๋ฃจ์–ด์ง€๋Š” ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค์ด๊ณ , TUI๋Š” ํ‘œํ˜„์— ๋‹จ์ˆœํžˆ ๋ฌธ์ž ๋˜๋Š” ํ…์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•œ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค, ์ฆ‰ ํ…์ŠคํŠธ GUI์ด๋‹ค.

1. ๊ฐœ์š”2. ์ƒ์„ธ3. ์—ญ์‚ฌ์™€ ํ˜„ํ™ฉ
3.1. ๊ด€๋ จ ๋ฌธ์„œ

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

vim์€ Bram Moolenaar๊ฐ€ 1991๋…„์— ๋งŒ๋“ , vi์™€ ํ˜ธํ™˜๋˜๋Š” ๋ฌธ์„œ ํŽธ์ง‘๊ธฐ์ด๋‹ค.

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

์š”์ฆ˜ ๋Œ€๋ถ€๋ถ„์˜ ์œ ๋‹‰์Šค์™€ ๋ฆฌ๋ˆ…์Šค ๋ฐฐํฌํŒ์—์„œ ํ„ฐ๋ฏธ๋„์— vi๋ฅผ ์น˜๋ฉด vim์ด ๋œจ๋„๋ก ํ•˜์—ฌ[2] ์š”์ฆ˜์— ๋ฆฌ๋ˆ…์Šค๋‚˜ ์œ ๋‹‰์Šค๋ฅผ ๋ฐฐ์šด ์‚ฌ๋žŒ๋“ค์€ vim์ด vi์ธ ์ค„ ์•„๋Š” ๊ฒฝ์šฐ๋„ ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ vi์™€๋Š” ์™„์ „ํžˆ ๋‹ค๋ฅธ ๋ฌผ๊ฑด์ด์ง€๋งŒ, ์ž˜ ๊ตฌ๋ณ„ํ•˜์ง€ ๋ชป ํ•˜๋Š” ์‚ฌ๋žŒ์ด ๋งŽ๋‹ค.

์ข…๋ฃŒํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ESCํ‚ค๋ฅผ ๋ˆ„๋ฅธ ํ›„ :q! ๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ์ž…๋ ฅํ•˜๊ณ  ์—”ํ„ฐํ‚ค๋ฅผ ๋ˆ„๋ฅด๋ฉด ๋œ๋‹ค. ์ €์žฅ ํ›„ ์ข…๋ฃŒ๋Š” :wq ์ด๋‹ค.
Emacs์™€๋Š” ์•„์ฃผ ์‹ฌํ•œ ๋ผ์ด๋ฒŒ ๊ด€๊ณ„๋‹ค.

3. ์—ญ์‚ฌ์™€ ํ˜„ํ™ฉ[ํŽธ์ง‘]

๋งŽ์€ ์ˆ˜์˜ ๋ฆฌ๋ˆ…์Šค๋‚˜ ์œ ๋‹‰์Šค์—์„œ๋Š” vim์„ vi๋กœ alias(๋ฐ”๋กœ๊ฐ€๊ธฐ, ๋งํฌ, ์—ฐ๊ฒฐ)์‹œ์ผœ ๋†“์•˜๊ธฐ ๋•Œ๋ฌธ์— vi๋ฅผ ์ณ๋„ vim์œผ๋กœ ์—ฐ๊ฒฐ๋œ๋‹ค. ๋‹จ, minimal ๋ฒ„์ „์ด๋‹ค. ๋”ฐ๋ผ์„œ ์š”์ฆ˜ ๋งํ•˜๋Š” vi๋Š” ๋Œ€๋ถ€๋ถ„ ๋ณ€์ข…ํŒ์ธ vim(vi improved)์„ ์ง€์นญํ•˜๋ฉฐ, nVi(Not Vi), elVis ๋“ฑ์˜ ๋‹ค๋ฅธ ๋ณ€์ข…๋„ ์กด์žฌํ•œ๋‹ค. ํŠนํžˆ vim์€ ๋ชจ๋“  ๋ฆฌ๋ˆ…์Šค ๋ฐฐํฌํŒ๊ณผ OS X์— ๊ธฐ๋ณธ์œผ๋กœ ํƒ‘์žฌ๋˜๋ฉด์„œ ๊ฑฐ์˜ ๋Œ€๋ถ€๋ถ„์˜ vi ์ด์šฉ์ž๊ฐ€ ์ด ๋ฒ„์ „์œผ๋กœ ์ž…๋ฌธํ•ด์„œ ์ด ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์„ ์ •๋„. ๊ฒŒ๋‹ค๊ฐ€ vim์„ GUI ํ™˜๊ฒฝ์—์„œ ์“ธ ์ˆ˜ ์žˆ๊ฒŒ GVim์œผ๋กœ๋„ ๋ณ€์ข…๋˜์—ˆ๋‹ค. ๋‹น์žฅ ์ด ๋ฌธ์„œ ์ƒ๋‹จ ์Šคํฌ๋ฆฐ์ƒท๋„ GVim์˜ ์Šคํฌ๋ฆฐ์ƒท์ด๋‹ค.

๋‹จ, ์œ ๋‹‰์Šค์— ๋”ฐ๋ผ์„  vim์ด ์•„๋‹Œ ์ง„์งœ vi ํ˜น์€ ๊ทธ๊ฒƒ์˜ ํด๋ก ์ด ๊ธฐ๋ณธ์ธ ๊ฒฝ์šฐ๊ฐ€ ์ ์ง€ ์•Š๊ณ , ์ด๋Ÿฐ ๋ฌผ๊ฑด์€ ์‹ฌ์ง€์–ด ๋ฒ„๊ทธ๊นŒ์ง€๋„ ๊ณผ๊ฑฐ BSD์˜ vi ๊ฒƒ์„ ๊ทธ๋Œ€๋กœ ๊ฐ€์ง„ ๊ฒฝ์šฐ๊ฐ€ ์žˆ์–ด์„œ, vim ์‚ฌ์šฉ์ž๊ฐ€ ๋ชจ๋ฅด๋Š” ํ•ด๊ดดํ•œ ๋ฒ„๊ทธ๊ฐ€ ์žˆ๋‹ค๊ฑฐ๋‚˜ vim์—์„  ์ž์ฃผ์“ฐ๋Š” ํ•ต์‹ฌ๊ธฐ๋Šฅ์ด ์—†๋Š” ๋“ฑ vim๊ณผ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ๋‹ค. ๋„ˆ๋น„๋ฅผ 80๋ฌธ์ž ์ด์ƒ ์ง€์›ํ•˜์งˆ ์•Š์•„ ๊นจ์ง„๋‹ค๊ฑฐ๋‚˜, ๋น„์ฃผ์–ผ ๋ชจ๋“œ๊ฐ€ ์—†๋‹ค๊ฑฐ๋‚˜ ๋“ฑ๋“ฑ...

2019๋…„, vim์™€ neovim์—์„œ ์‹ฌ๊ฐํ•œ ์…ธ ์‹คํ–‰ ์ทจ์•ฝ์ ์ด ๋ฐœ๊ฒฌ๋˜์—ˆ๋‹ค. # ํ•ด๋‹น ์ทจ์•ฝ์ ์€ CVE-2019-12735 ์ด๋ฉฐ Modelines ๊ธฐ๋Šฅ์—์„œ ๋ฐœ์ƒํ•œ ์ทจ์•ฝ์ ์œผ๋กœ ํŒŒ์ผ์„ ์—ฌ๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋„ ๊ทธ๋Œ€๋กœ ๊ฐ์—ผ๋œ๋‹ค. ์˜ํ–ฅ ๋ฐ›๋Š” ๋ฒ„์ „์€ vim๋Š” 8.1.1365, neovim๋Š” 0.3.6์ด๋ฉฐ ์ดํ›„ ๋ฒ„์ „์—์„œ ํŒจ์น˜๋˜์—ˆ๋‹ค.

์—ญ์‚ฌ์™€ ์ „ํ†ต๊ณผ ํ•จ๊ป˜ ์†Œ์Šค์ฝ”๋“œ๊ฐ€ ๋งค์šฐ ๋ณต์žกํ•ด์ ธ, NeoVim์ด๋ผ๋Š” ์ฝ”๋“œ๋ฅผ ๋‹ค์‹œ ์งœ๋Š” ํ”„๋กœ์ ํŠธ๊ฐ€ ์ง„ํ–‰์ค‘์ด๋‹ค. https://neovim.io/

์ง„์ž…์žฅ๋ฒฝ์ด ์žˆ์–ด์„œ์ธ์ง€ VimAdventure๋ผ๋Š” ํ•™์Šต์šฉ ๊ฒŒ์ž„๋„ ์žˆ์œผ๋‹ˆ ๋ฐฐ์šฐ๊ณ  ์‹ถ์€ ์‚ฌ๋žŒ์€ ์ฐธ๊ณ ํ•˜์ž. https://vim-adventures.com/

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

๋ฆฌ๋ˆ…์Šค์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ํ„ฐ๋ฏธ๋„์ฐฝ์— vimtutor๋ผ๊ณ  ์น˜๋ฉด ๊ธฐ๋ณธ์„œ๊ฐ€ ๋œฌ๋‹ค. vim์— ์ต์ˆ™ํ•˜๊ณ  ์‹ถ์€ ์œ ์ €๋Š” ์ฐธ๊ณ ํ•˜๋„๋ก ํ•˜์ž.

3.1. ๊ด€๋ จ ๋ฌธ์„œ[ํŽธ์ง‘]

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