๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
6. CS ๊ธฐ์ดˆ ๐Ÿ“š/Linux & Unix ๐Ÿง

[Linux/Unix] vi ํŽธ์ง‘๊ธฐ ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•

by lxvxxu 2025. 10. 17.

 

 

 Contents 

1. ์ž…๋ ฅํ•˜๊ธฐ

2. 

3. ์ค„์„ ํ•˜๋‚˜ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ•

4. ์ค„ ์ œ๊ฑฐํ•˜๋Š” ๋ฐฉ๋ฒ•

5. ์ค„ ๋ณต์‚ฌ/๋ถ™์—ฌ๋„ฃ๊ธฐ


 

 

 

์ค„์„ ํ•˜๋‚˜ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ•

vi (๋˜๋Š” vim) ์—์„œ ์ค„(line)์„ ์ถ”๊ฐ€ํ•˜๋Š” ๋ช…๋ น์–ด๋Š” ํ˜„์žฌ ์ปค์„œ ์œ„์น˜ ๊ธฐ์ค€์œผ๋กœ ๋‹ค๋ฅด๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
์•„๋ž˜ ์ •๋ฆฌ ๋ณด์‹œ๋ฉด ๊ธˆ๋ฐฉ ์ตํ˜€์š” ๐Ÿ‘‡


๐ŸŸฉ 1. o (์†Œ๋ฌธ์ž o)

ํ˜„์žฌ ์ค„์˜ ์•„๋ž˜์— ์ƒˆ ์ค„์„ ์ถ”๊ฐ€ํ•˜๊ณ  **์ž…๋ ฅ ๋ชจ๋“œ(insert mode)**๋กœ ์ „ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

 
o
  • ์˜ˆ: ์ปค์„œ๊ฐ€ 3๋ฒˆ์งธ ์ค„์— ์žˆ์œผ๋ฉด → 4๋ฒˆ์งธ ์ค„์ด ์ƒˆ๋กœ ์ƒ๊ธฐ๊ณ  ๊ฑฐ๊ธฐ์— ์ž…๋ ฅ ๊ฐ€๋Šฅ
  • ์ฆ‰, “open new line below current line”

๐ŸŸฆ 2. O (๋Œ€๋ฌธ์ž O)

ํ˜„์žฌ ์ค„์˜ ์œ„์— ์ƒˆ ์ค„์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์ž…๋ ฅ ๋ชจ๋“œ๋กœ ์ „ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

 
O
  • ์˜ˆ: ์ปค์„œ๊ฐ€ 3๋ฒˆ์งธ ์ค„์— ์žˆ์œผ๋ฉด → 2๋ฒˆ์งธ ์ค„๊ณผ 3๋ฒˆ์งธ ์ค„ ์‚ฌ์ด์— ์ƒˆ ์ค„์ด ์ƒ๊น€
  • ์ฆ‰, “open new line above current line”

โš™๏ธ ์š”์•ฝํ‘œ

๋ช…๋ น์–ด๋™์ž‘์„ค๋ช…
o ์•„๋ž˜ ์ค„ ์ถ”๊ฐ€ ์ปค์„œ ์žˆ๋Š” ์ค„์˜ ์•„๋ž˜ ์ƒˆ ์ค„ ์—ด๊ณ  ์ž…๋ ฅ ๋ชจ๋“œ ์ง„์ž…
O ์œ„ ์ค„ ์ถ”๊ฐ€ ์ปค์„œ ์žˆ๋Š” ์ค„์˜ ์œ„ ์ƒˆ ์ค„ ์—ด๊ณ  ์ž…๋ ฅ ๋ชจ๋“œ ์ง„์ž…

๐Ÿ’ก ํŒ:
์ž…๋ ฅ ํ›„ ์ž…๋ ฅ ๋ชจ๋“œ์—์„œ ๋‚˜๊ฐ€๋ ค๋ฉด Esc ํ‚ค๋ฅผ ๋ˆ„๋ฅด๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 


 

์ค„ ์ œ๊ฑฐํ•˜๋Š” ๋ฐฉ๋ฒ•


vi(๋˜๋Š” vim)์—์„œ ํ˜„์žฌ ์ค„ ํ•œ ์ค„์„ ์‚ญ์ œํ•˜๋Š” ๋ช…๋ น์–ด๋Š” ์•„์ฃผ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค ๐Ÿ‘‡


๐ŸŸฅ dd

ํ˜„์žฌ ์ปค์„œ๊ฐ€ ์žˆ๋Š” ์ค„์„ ํ†ต์งธ๋กœ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

 
dd
  • ์ปค์„œ๊ฐ€ ์–ด๋А ์œ„์น˜์— ์žˆ๋“ , ๊ทธ ์ค„ ์ „์ฒด๊ฐ€ ์‚ญ์ œ๋จ
  • ์‚ญ์ œ๋œ ์ค„์€ ๋ฒ„ํผ์— ์ €์žฅ๋˜๋ฏ€๋กœ, p ๋ช…๋ น์œผ๋กœ ๋‹ค์‹œ ๋ถ™์—ฌ๋„ฃ์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

โš™๏ธ ๊ด€๋ จ ๋ช…๋ น์–ด

๋ช…๋ น์–ด์„ค๋ช…
dd ํ˜„์žฌ ์ค„ 1์ค„ ์‚ญ์ œ
2dd ํ˜„์žฌ ์ค„ ํฌํ•จ 2์ค„ ์‚ญ์ œ
ndd ํ˜„์žฌ ์ค„๋ถ€ํ„ฐ n์ค„ ์‚ญ์ œ
dG ํ˜„์žฌ ์ค„๋ถ€ํ„ฐ ํŒŒ์ผ ๋๊นŒ์ง€ ์‚ญ์ œ
dgg ํ˜„์žฌ ์ค„๋ถ€ํ„ฐ ํŒŒ์ผ ์ฒ˜์Œ๊นŒ์ง€ ์‚ญ์ œ

๐Ÿ’ก ์˜ˆ์‹œ

 
# ํ˜„์žฌ ์ปค์„œ๊ฐ€ 10๋ฒˆ์งธ ์ค„์— ์žˆ์„ ๋•Œ dd → 10๋ฒˆ์งธ ์ค„๋งŒ ์‚ญ์ œ 3dd → 10, 11, 12๋ฒˆ์งธ ์ค„ ์‚ญ์ œ

๐ŸŸฉ 1๏ธโƒฃ ๋ณต์‚ฌ (yank) — y ๋ช…๋ น์–ด

๋ช…๋ น์–ด์„ค๋ช…
yy ํ˜„์žฌ ์ค„ ํ•œ ์ค„ ๋ณต์‚ฌ
2yy ํ˜„์žฌ ์ค„ ํฌํ•จ 2์ค„ ๋ณต์‚ฌ
nyy ํ˜„์žฌ ์ค„๋ถ€ํ„ฐ n์ค„ ๋ณต์‚ฌ
yG ํ˜„์žฌ ์ค„๋ถ€ํ„ฐ ํŒŒ์ผ ๋๊นŒ์ง€ ๋ณต์‚ฌ
ygg ํ˜„์žฌ ์ค„๋ถ€ํ„ฐ ํŒŒ์ผ ์ฒ˜์Œ๊นŒ์ง€ ๋ณต์‚ฌ

๐Ÿ’ก ์˜ˆ์‹œ:

 
yy # ํ˜„์žฌ ์ค„ ๋ณต์‚ฌ 3yy # ํ˜„์žฌ ์ค„ ํฌํ•จ 3์ค„ ๋ณต์‚ฌ

๐ŸŸฆ 2๏ธโƒฃ ๋ถ™์—ฌ๋„ฃ๊ธฐ (paste) — p ๋ช…๋ น์–ด

๋ช…๋ น์–ด์„ค๋ช…
p ํ˜„์žฌ ์ค„ ์•„๋ž˜์— ๋ถ™์—ฌ๋„ฃ๊ธฐ
P ํ˜„์žฌ ์ค„ ์œ„์— ๋ถ™์—ฌ๋„ฃ๊ธฐ

๐Ÿ’ก ์˜ˆ์‹œ:

 
yy # ํ˜„์žฌ ์ค„ ๋ณต์‚ฌ p # ๋ณต์‚ฌํ•œ ์ค„์„ ํ˜„์žฌ ์ค„ ์•„๋ž˜์— ๋ถ™์—ฌ๋„ฃ์Œ P # ๋ณต์‚ฌํ•œ ์ค„์„ ํ˜„์žฌ ์ค„ ์œ„์— ๋ถ™์—ฌ๋„ฃ์Œ

๐ŸŸง 3๏ธโƒฃ ๋˜๋Œ๋ฆฌ๊ธฐ (undo) — u ๋ช…๋ น์–ด

๋ช…๋ น์–ด์„ค๋ช…
u ๊ฐ€์žฅ ์ตœ๊ทผ์˜ ๋ณ€๊ฒฝ 1๊ฐœ ์ทจ์†Œ
U ํ˜„์žฌ ์ค„์—์„œ ์ˆ˜ํ–‰๋œ ๋ชจ๋“  ๋ณ€๊ฒฝ ์ทจ์†Œ
Ctrl + r undo๋ฅผ ๋‹ค์‹œ ๋˜๋Œ๋ฆฌ๊ธฐ (redo)

๐Ÿ’ก ์˜ˆ์‹œ:

 
dd # ์ค„ ์‚ญ์ œ u # ์‚ญ์ œ ์ทจ์†Œ (๋˜๋Œ๋ฆฌ๊ธฐ) Ctrl + r # ๋‹ค์‹œ ์‚ญ์ œ (redo)

โš™๏ธ ์š”์•ฝํ‘œ

๋™์ž‘๋ช…๋ น์–ด์„ค๋ช…
ํ•œ ์ค„ ๋ณต์‚ฌ yy ํ˜„์žฌ ์ค„ ๋ณต์‚ฌ
์—ฌ๋Ÿฌ ์ค„ ๋ณต์‚ฌ nyy n์ค„ ๋ณต์‚ฌ
๋ถ™์—ฌ๋„ฃ๊ธฐ (์•„๋ž˜) p ๋ณต์‚ฌํ•œ ๋‚ด์šฉ ํ˜„์žฌ ์ค„ ์•„๋ž˜ ์‚ฝ์ž…
๋ถ™์—ฌ๋„ฃ๊ธฐ (์œ„) P ๋ณต์‚ฌํ•œ ๋‚ด์šฉ ํ˜„์žฌ ์ค„ ์œ„ ์‚ฝ์ž…
ํ•œ ์ค„ ์‚ญ์ œ dd ํ˜„์žฌ ์ค„ ์‚ญ์ œ
๋˜๋Œ๋ฆฌ๊ธฐ u ๋งˆ์ง€๋ง‰ ๋ณ€๊ฒฝ ์ทจ์†Œ
๋‹ค์‹œ ์‹คํ–‰ Ctrl + r undo๋ฅผ ๋˜๋Œ๋ฆผ (redo)

๐Ÿ’ก ์ž‘์—… ์˜ˆ์‹œ

 
yy # ํ•œ ์ค„ ๋ณต์‚ฌ p # ๋ฐ”๋กœ ์•„๋ž˜์— ๋ถ™์—ฌ๋„ฃ๊ธฐ dd # ํ•œ ์ค„ ์‚ญ์ œ u # ์‚ญ์ œ ๋˜๋Œ๋ฆฌ๊ธฐ Ctrl + r # ๋‹ค์‹œ ์‚ญ์ œ (redo)