2025-09-12 15:32:13
๋ฐ˜์‘ํ˜•

๐Ÿ“ ๋ฆฌ๋ˆ…์Šค ๋ฌธ์„œ ํŽธ์ง‘๊ธฐ — vi

1. vi ๋ชจ๋“œ ๊ตฌ์กฐ

```mermaid
graph TD
    A[๋ช…๋ น ๋ชจ๋“œ (Command mode)] --> B[์ž…๋ ฅ ๋ชจ๋“œ (Insert mode)]
    A --> C[๋งˆ์ง€๋ง‰ ํ–‰ ๋ชจ๋“œ (Last line mode)]
    B --> A
    C --> A
```
 
 
  • ๋ช…๋ น ๋ชจ๋“œ: vi ์‹คํ–‰ ์‹œ ๊ธฐ๋ณธ ๋ชจ๋“œ (๋ณต์‚ฌ, ์‚ญ์ œ, ์ด๋™ ๋“ฑ ๋ช…๋ น์–ด ์‹คํ–‰)
  • ์ž…๋ ฅ ๋ชจ๋“œ: ๊ธ€์ž๋ฅผ ์ž…๋ ฅํ•˜๋Š” ๋ชจ๋“œ (i, a, o ๋กœ ์ง„์ž…)
  • ๋งˆ์ง€๋ง‰ ํ–‰ ๋ชจ๋“œ: ์ €์žฅ·์ข…๋ฃŒ·๊ฒ€์ƒ‰ ๊ฐ™์€ ๋ช…๋ น ์ž…๋ ฅ (:wq, :q!)

2. ์ž์ฃผ ์“ฐ๋Š” ๊ธฐ๋ณธ ๋ช…๋ น์–ด

๋™์ž‘๋ช…๋ น
์ž…๋ ฅ ์‹œ์ž‘ i (์ปค์„œ ์•ž), a (์ปค์„œ ๋’ค), o (์ƒˆ ์ค„)
์ €์žฅ & ์ข…๋ฃŒ :wq
๊ฐ•์ œ ์ข…๋ฃŒ (์ €์žฅ ์•ˆ ํ•จ) :q!
์ด๋™ h(์™ผ์ชฝ), l(์˜ค๋ฅธ์ชฝ), j(์•„๋ž˜), k(์œ„), :10(10๋ฒˆ ์ค„ ์ด๋™), G(ํŒŒ์ผ ๋)
์‚ญ์ œ dd (ํ•œ ์ค„ ์ž˜๋ผ๋‚ด๊ธฐ)
๋ณต์‚ฌ & ๋ถ™์—ฌ๋„ฃ๊ธฐ yy (๋ณต์‚ฌ), p (๋ถ™์—ฌ๋„ฃ๊ธฐ)
๊ฒ€์ƒ‰ /๋ฌธ์ž์—ด

3. ๋ฌธ์„œ ํŽธ์ง‘๊ธฐ ์‹ค์Šต

โ‘  ์—ฐ์Šต์šฉ ํŒŒ์ผ ์ƒ์„ฑ

 
cd$HOME/proc # ์‹ค์Šต ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ด๋™ vi test.txt # vi ํŽธ์ง‘๊ธฐ ์‹คํ–‰

์ž…๋ ฅ ์˜ˆ์‹œ (์ž…๋ ฅ ๋ชจ๋“œ์—์„œ ๋ถ™์—ฌ๋„ฃ๊ธฐ):

 
Welcome to vi editor practice This is a sample text file You can edit this file using vi Let's learn some basic commands The /etc/hosts file is important Try searching for the word hosts Delete this line and paste it below End of the practice file

โ‘ก ํŒŒ์ผ ๋‚ด์šฉ ํ™•์ธ

 
cat test.txt # ํŒŒ์ผ ์ „์ฒด ๋‚ด์šฉ ์ถœ๋ ฅ

๐Ÿ‘‰ cat์€ ํŒŒ์ผ ๋‚ด์šฉ์„ ํ•œ ๋ฒˆ์— ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.


โ‘ข ์ค„ ๋ฒˆํ˜ธ ํ‘œ์‹œ & ํŠน์ • ์ค„๋กœ ์ด๋™

 
:5 # vi์—์„œ 5๋ฒˆ์งธ ์ค„๋กœ ์ด๋™

๐Ÿ‘‰ .exrc ์„ค์ •์—์„œ set nu๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ํ•ญ์ƒ ์ค„ ๋ฒˆํ˜ธ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.


โ‘ฃ ์‚ญ์ œ & ๋ถ™์—ฌ๋„ฃ๊ธฐ

 
dd # ํ˜„์žฌ ์ค„ ์‚ญ์ œ (์ž˜๋ผ๋‚ด๊ธฐ) p # ๋ฐ”๋กœ ์•„๋ž˜ ์ค„์— ๋ถ™์—ฌ๋„ฃ๊ธฐ

โ‘ค ๋ฌธ์ž์—ด ๊ฒ€์ƒ‰

 
/file # "file" ์ด๋ผ๋Š” ๋‹จ์–ด ๊ฒ€์ƒ‰

๐Ÿ‘‰ / ์ž…๋ ฅ ํ›„ ๊ฒ€์ƒ‰์–ด ์ž…๋ ฅ → ํ•ด๋‹น ๋‹จ์–ด๋กœ ์ปค์„œ ์ด๋™


โ‘ฅ ์ €์žฅ & ์ข…๋ฃŒ

 
:wq # ์ €์žฅ ํ›„ ์ข…๋ฃŒ :q! # ์ €์žฅํ•˜์ง€ ์•Š๊ณ  ๊ฐ•์ œ ์ข…๋ฃŒ

โ‘ฆ .exrc ์„ค์ • ํŒŒ์ผ ๋‹ค๋ฃจ๊ธฐ

 
ls -a | grep exrc # .exrc ํŒŒ์ผ ์กด์žฌ ์—ฌ๋ถ€ ํ™•์ธmv .exrc .exrc.bak 2>/dev/null # ์žˆ์œผ๋ฉด ๋ฐฑ์—… vi .exrc # ์ƒˆ ์„ค์ • ํŒŒ์ผ ์ƒ์„ฑ

์ž…๋ ฅํ•  ๋‚ด์šฉ (vi ์„ค์ •):

 
set nu " ์ค„ ๋ฒˆํ˜ธ ํ‘œ์‹œ set ignorecase " ๊ฒ€์ƒ‰ ์‹œ ๋Œ€์†Œ๋ฌธ์ž ๋ฌด์‹œ set autoindent " ์ž๋™ ๋“ค์—ฌ์“ฐ๊ธฐ set showmode " ํ˜„์žฌ ๋ชจ๋“œ ํ‘œ์‹œ (--INSERT-- ๋“ฑ)

๐Ÿ‘‰ ์ €์žฅ ํ›„ ์ข…๋ฃŒ (:wq)


โ‘ง ์„ค์ • ์ ์šฉ & ํ™•์ธ

 
vi ~/prac/test.txt
  • ์ค„ ๋ฒˆํ˜ธ ํ™•์ธ (set nu)
  • /hosts ๊ฒ€์ƒ‰ ์‹œ ๋Œ€์†Œ๋ฌธ์ž ๋ฌด์‹œ๋˜๋Š”์ง€ ํ™•์ธ (set ignorecase)
  • ์ƒˆ ์ค„ ์ž…๋ ฅ ์‹œ ์ž๋™ ๋“ค์—ฌ์“ฐ๊ธฐ ๋˜๋Š”์ง€ ํ™•์ธ (set autoindent)
  • ๋ชจ๋“œ ํ‘œ์‹œ ํ™•์ธ (--INSERT-- ๋œจ๋Š”์ง€ ํ™•์ธ, set showmode)

4. ํ•œ ์ค„ ํ•œ ์ค„ ์ฃผ์„ ์„ค๋ช…

 
cat test.txt # ํŒŒ์ผ ๋‚ด์šฉ์„ ํ„ฐ๋ฏธ๋„์— ์ถœ๋ ฅ :5 # vi ์•ˆ์—์„œ 5๋ฒˆ์งธ ์ค„๋กœ ์ด๋™ dd # ํ˜„์žฌ ์ค„ ์ž˜๋ผ๋‚ด๊ธฐ p # ์ž˜๋ผ๋‚ธ ์ค„์„ ํ˜„์žฌ ์ปค์„œ ์•„๋ž˜์— ๋ถ™์—ฌ๋„ฃ๊ธฐ /file # "file" ๋ฌธ์ž์—ด ๊ฒ€์ƒ‰ :wq # ์ €์žฅ ํ›„ ์ข…๋ฃŒ

5. ํ˜„์—…์—์„œ ์ž์ฃผ ์“ฐ๋Š” vi ํ™œ์šฉ โœจ

  • ์„œ๋ฒ„ ์„ค์ • ํŒŒ์ผ ํŽธ์ง‘: /etc/nginx/nginx.conf, /etc/hosts ๊ฐ™์€ ์‹œ์Šคํ…œ ์„ค์ •
  • ๋กœ๊ทธ ํŒŒ์ผ ๋น ๋ฅธ ์ˆ˜์ •: ๊ธด ๋กœ๊ทธ ํŒŒ์ผ์—์„œ ํŠน์ • ํ‚ค์›Œ๋“œ ๊ฒ€์ƒ‰ (/error)
  • ๋น ๋ฅธ ์ค„ ์ด๋™: ์—๋Ÿฌ ๋กœ๊ทธ์—์„œ ํŠน์ • ์ค„ ๋ฒˆํ˜ธ ํ™•์ธ ํ›„ :์ˆซ์ž๋กœ ์ด๋™
  • ๋ณต์‚ฌ/๋ถ™์—ฌ๋„ฃ๊ธฐ: ์„ค์ • ๋ธ”๋ก์„ ์ž˜๋ผ๋‚ด์–ด ๋‹ค๋ฅธ ์œ„์น˜์— ๋ถ™์—ฌ๋„ฃ์„ ๋•Œ yy, p ์ž์ฃผ ์‚ฌ์šฉ
  • .exrc ์ž๋™ ์„ค์ •: ํ•ญ์ƒ ์ค„ ๋ฒˆํ˜ธ ํ‘œ์‹œ, ๊ฒ€์ƒ‰ ์‹œ ๋Œ€์†Œ๋ฌธ์ž ๋ฌด์‹œ, ์ž๋™ ๋“ค์—ฌ์“ฐ๊ธฐ → ํ˜„์—… ์—”์ง€๋‹ˆ์–ด๋“ค์ด ๊ผญ ์ผœ๋‘๋Š” ์˜ต์…˜

 

.exrc ์ž๋™ ์„ค์ • ๋ฐฉ๋ฒ•

vi ~/.exrc

set nu " ์ค„ ๋ฒˆํ˜ธ ํ‘œ์‹œ
set ignorecase " ๊ฒ€์ƒ‰ ์‹œ ๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ถ„ ์•ˆ ํ•จ
set autoindent " ์ž๋™ ๋“ค์—ฌ์“ฐ๊ธฐ
set showmode " ํ˜„์žฌ ๋ชจ๋“œ ํ‘œ์‹œ (--INSERT-- ๊ฐ™์€ ์ƒํƒœ ํ‘œ์‹œ)
ECS Key ๋ˆŒ๋Ÿฌ์„œ ํŽธ์ง‘๋ชจ๋“œ ์ข…๋ฃŒ
:wq! ๋กœ ์ €์žฅ ํ›„ ์ข…๋ฃŒ

๋ฐ˜์‘ํ˜•

'Cloud Engineering Bootcamp > 5. Linux' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

03. Linux ๋ช…๋ น์–ด ์ •๋ฆฌ  (0) 2025.09.12
02. Linux ๊ธฐ์ดˆ  (0) 2025.09.12
01. ๊ฐ€์ƒ ์„œ๋ฒ„ ๊ตฌ์ถ•  (0) 2025.09.11