VI ํธ์ง๊ธฐ ๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ๊ณผ ํ์ฉ ํ
VI ํธ์ง๊ธฐ๋?
vi๋ UNIX์ Linux์์ ๋๋ฆฌ ์ฌ์ฉ๋๋ ํ ์คํธ ํธ์ง๊ธฐ๋ก, ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ฌ ๊ฐ๋ฐ์์ ์์คํ ๊ด๋ฆฌ์์๊ฒ ์ธ๊ธฐ๊ฐ ๋ง๋ค.
์ด๋ณด์์๊ฒ๋ ๋ค์ ๋ถํธํ ์ ์์ง๋ง, ํซํค๋ฅผ ์ตํ๋ฉด ๋น ๋ฅด๊ณ ํจ์จ์ ์ธ ํ ์คํธ ํธ์ง์ด ๊ฐ๋ฅํ๋ค.
์์ง vi ํธ์ง๊ธฐ๊ฐ ์ต์ํ์ง ์์์ ํ์ฌ๋ nano๋ก ์ฐ๊ณ ์๋๋ฐ vi๋ ์ต์ํด์ง๋ฉด ๋์ค์ ๋ ํธํ๊ฒ ์ธ ์ ์์ ๊ฒ ๊ฐ์์ ์ฐ์ตํด๋ณด๋ ค๊ณ ํ๋ค.
1. ๊ธฐ๋ณธ ๊ฐ๋ ์ตํ๊ธฐ
vi๋ฅผ ์ฒ์ ์ฌ์ฉํ๋ค๋ฉด, ๊ธฐ๋ณธ์ ์ธ ํ ์คํธ ์ ๋ ฅ๊ณผ ์ปค์ ์ด๋์ ์ตํ๋ ๊ฒ์ด ์ค์ํ๋ค.
์ด๋ฅผ ํตํด vi์ ๊ธฐ๋ณธ์ ์ธ ์์ ํ๋ฆ์ ์ต์ํด์ง ์ ์๋ค.
This is a simple text file for practicing vi editor.
You can edit and modify this text using vi commands.
Try moving the cursor and editing the text.
- vi practice.txt ๋ช ๋ น์ด๋ก vi๋ฅผ ์ด๊ณ ํ ์คํธ๋ฅผ ์ ๋ ฅํ๋ค.
- ํ ์คํธ๋ฅผ ์ ๋ ฅํ ํ, Esc ํค๋ฅผ ๋๋ฌ ๋ช ๋ น์ด ๋ชจ๋๋ก ๋์๊ฐ๋ค
Escํค๋ฅผ ๋๋ฅด๋ฉด ์ผ์ชฝ ํ๋จ์ ์ปค์๊ฐ ์ด๋ํ๋ค.
- ์ ์ฅ ํ ์ข ๋ฃํ๋ ค๋ฉด :wq๋ฅผ ์ ๋ ฅํฉ๋๋ค.
- w: write์ ์ฝ์๋ก, ํ์ผ์ ์ ์ฅ(์ฐ๊ธฐ)ํ๋ค
- q: quit์ ์ฝ์๋ก, vim์ ์ข ๋ฃ(๋ซ๊ธฐ)ํ๋ค
2. ํ ์คํธ ํธ์ง ๊ธฐ๋ณธ ๋ช ๋ น์ด
vi์์ ํ ์คํธ๋ฅผ ์์ ํ๋ ๊ธฐ๋ณธ์ ์ธ ๋ฐฉ๋ฒ์ ์ตํ๋ ๊ฒ๋ ์ค์ํ๋ค.
์ปค์ ์ด๋๊ณผ ํ ์คํธ ์์ ์ vi์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ ๊ธฐ๋ฅ์ด๋ค.
(์ด ์ปค์ ์ด๋์ INSERT๋ชจ๋๊ฐ ์ํ์์ ํ๋ ๊ฒ์ด ์๋๋ค)
- ์ปค์ ์ด๋:
- h, j, k, l๋ก ์ผ์ชฝ, ์๋, ์, ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋ํ๋ค.
- w๋ก ๋จ์ด ๋จ์๋ก ์ด๋ํ๊ณ , b๋ก ์ด์ ๋จ์ด๋ก ์ด๋ํ๋ค.
- 0๊ณผ $๋ก ๊ฐ๊ฐ ํ์ฌ ์ค์ ์ฒ์๊ณผ ๋์ผ๋ก ์ด๋ํ๋ค.
- ํ
์คํธ ์์ :
- x๋ก ์ปค์ ์์น์ ๋ฌธ์๋ฅผ ์ญ์ ํ๋ค.
- dd๋ก ํ์ฌ ์ค์ ์ญ์ ํ๊ณ , yy๋ก ์ค์ ๋ณต์ฌํ ํ p๋ก ๋ถ์ฌ๋ฃ๋๋ค.
3. ๊ณ ๊ธ ํธ์ง ๋ช ๋ น์ด
vi์ ๊ณ ๊ธ ๊ธฐ๋ฅ์ ์ตํ๋ฉด, ๋ ๋น ๋ฅด๊ณ ์ ํํ ํธ์ง์ด ๊ฐ๋ฅํ๋ค.
ํนํ ๊ฒ์๊ณผ ์นํ, ๋น ๋ฅธ ์ด๋ ๋ช ๋ น์ด๋ฅผ ์์๋๋ฉด ๋งค์ฐ ์ ์ฉํ๋ค.
- ๊ฒ์:
- /text๋ฅผ ์ ๋ ฅํ์ฌ text๋ฅผ ์ฐพ๊ณ , n์ผ๋ก ๋ค์ ๊ฒ์ ๊ฒฐ๊ณผ๋ก ์ด๋ํ๋ค.
- ?text๋ก ๋ฐ๋๋ก ๊ฒ์ํ ์๋ ์๋ค.
/text๋ฅผ ์ ๋ ฅ ํ Enter๋ฅผ ์ณ์ผ n๋์์ด ์ ๋๋ก ๋๋ค!
Enter ์ ์น๊ณ n๋ฃ์ผ๋ฉด /textn์ด ๋๋ค...
- ์นํ:
- :s/simple/test/g๋ก "simple"์ "test"๋ก ์นํํ๋ค.
- :%s/vi/Vim/g๋ก ํ์ผ ์ ์ฒด์์ "vi"๋ฅผ "Vim"์ผ๋ก ์นํํ๋ค..
์นํ ์
์นํ ํ!
- ๋น ๋ฅธ ์ด๋:
- fV๋ก ํ์ฌ ์ค์์ "V"๋ก ์ด๋ํ๋ค. (f๋ฅผ ๋๋ฅธ์ฑ๋ก V๋ฅผ ์ ๋ ฅํด์ผ ํ๋ค.)
- tV๋ก "V" ์๊น์ง ์ด๋ํ๋ค. (t๋ฅผ ๋๋ฅธ์ฑ๋ก V๋ฅผ ์ ๋ ฅํด์ผ ํ๋ค.)
4. ํ์ผ ๊ด๋ฆฌ ๋ฐ ๋ค์ค ํ์ผ ์์
vi์์ ์ฌ๋ฌ ํ์ผ์ ๋์์ ์์ ํ๋ ๊ฒ๋ ๊ฐ๋ฅํ๋ค.
ํ์ผ์ ๋ถํ ํ๊ฑฐ๋ ๋ค๋ฅธ ํ์ผ๋ก ์ด๋ํ๋ฉด์ ์์ ์ ํจ์จ์ ์ผ๋ก ์งํํ ์ ์๋ค.
- ๋ค์ค ํ์ผ ์ด๊ธฐ:
- :e anotherfile.txt๋ก ๋ค๋ฅธ ํ์ผ์ ์ฐ๋ค.
- :bn๊ณผ :bp๋ก ํ์ผ ๊ฐ์ ์ด๋ํ ์ ์๋ค.
๊ทผ๋ฐ e anotherfile.txt ๋ช ๋ น์ ์ ๋ ฅ ํ๋๋ฐ ์ด์ ๊ฐ์ด ๋จ๊ธฐ๋ ํ๋ค.
ํ์ผ์ด ๋ณ๊ฒฝ๋์๋๋ฐ ๋ค๋ฅธ ํ์ผ๋ก ์ด๋ํ๊ฑฐ๋ ์ข ๋ฃํ ๋ ๋ฐ์ํ๋ ์ค๋ฅ์ด๋ค.
๋ณ๊ฒฝ ์ฌํญ ์ ์ฅ ํ ๋ค๋ฅธ ํ์ผ ์ด๊ธฐ
- ํ์ฌ ํ์ผ์ ์ ์ฅํ๊ณ ๋ค๋ฅธ ํ์ผ์ ์ด๊ณ ์ถ๋ค๋ฉด, :w ๋ช ๋ น์ด๋ก ํ์ฌ ํ์ผ์ ์ ์ฅํ ํ ๋ค๋ฅธ ํ์ผ์ ์ด ์ ์๋ค.
:w
:e anotherfile.txt
๋ณ๊ฒฝ ์ฌํญ ๋ฒ๋ฆฌ๊ณ ๋ค๋ฅธ ํ์ผ ์ด๊ธฐ
- ํ์ฌ ํ์ผ์ ๋ณ๊ฒฝ ์ฌํญ์ ์ ์ฅํ์ง ์๊ณ ๋ค๋ฅธ ํ์ผ์ ์ด๋ ค๋ฉด !๋ฅผ ์ฌ์ฉํด ๊ฐ์ ๋ก ๋ณ๊ฒฝ ์ฌํญ์ ๋ฌด์ํ๊ณ ์ด ์ ์๋ค.
:e! anotherfile.txt
๊ฐ์ ๋ก ์ ์ฅํ๊ณ ํ์ผ ์ด๊ธฐ
- ํ์ฌ ํ์ผ์ ์ ์ฅํ์ง ์๊ณ ๊ฐ์ ๋ก ๋ค๋ฅธ ํ์ผ์ ์ด๋ ค๋ฉด :e!๋ฅผ ์ฌ์ฉํด ๋ณ๊ฒฝ ์ฌํญ์ ๋ฌด์ํ๊ณ ์ด ์ ์๋ค.
:e! anotherfile.txt
์ด ๋ช ๋ น์ด๋ค์ ์ฌ์ฉํด E37 ์ค๋ฅ๋ฅผ ํด๊ฒฐํ๊ณ ๋ค๋ฅธ ํ์ผ์ ์ด ์ ์๋ค!
- ํ์ผ ๋ถํ :
- :vsplit practice.txt๋ก ํ์ผ์ ์ํ์ผ๋ก ๋ถํ ํ์ฌ ๋ ์ฐฝ์ผ๋ก ๋ณผ ์ ์๋ค..
- ํ์ผ ๋ถํ ์ฐฝ ์ทจ์:
- ์ํ ๋ถํ ์ฐฝ์ ๋ซ์ผ๋ ค๋ฉด :q๋ฅผ ์ฌ์ฉํ๊ณ , ์์ง ๋ถํ ์ฐฝ๋ ๋ง์ฐฌ๊ฐ์ง๋ก :q๋ฅผ ์ฌ์ฉํ์ฌ ๋ซ์ ์ ์๋ค.
๋ง์ฐ์ค๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ํค๋ณด๋๋ง์ผ๋ก ํ ์คํธ๋ฅผ ๋น ๋ฅด๊ฒ ์์ ํ ์ ์์ด ์์ ์๋์ ์์ฐ์ฑ์ด ํฌ๊ฒ ํฅ์๋๋ค.
์์ง ์ต์ํ์ง ์์ง๋ง, ๊ณ์ํด์ ๋ฐฐ์ฐ๋ฉฐ ๋ ๋น ๋ฅด๊ณ ํธ๋ฆฌํ๊ฒ ์์
ํ ์ ์๋๋ก ๋
ธ๋ ฅํด์ผ๊ฒ ๋น!