[linux master][리눅스 마스터][국가기술자격] [vi 명령어] vi 명령어 정리

 

 

1. vi 편집기 명령어로 들어가기 전에 전체적인 구조 살펴보기

 

: linux, unix 에서 사용하는 vi 편집기는 명령모드, 입력모드, 마지막 행 모드로 총 3가지 모드로 구성되어있습니다.

 

: 흔히 사람들이 말하는 vi 명령어는 이 세가지 모드를 자유자재로 왔다갔다 하면서 코드나 글을 작성하는 것을 말합니다.

 

 

 

i) 명령 모드(command mode) - 처음 vi 명령어로 vi를 시작하게 되면 들어가게 됩니다. 여기서는 방향키를 이용하여 커서를 이동할 수 있으며,  "dd" 나 "yy" 로 한 줄 삭제 및 한 줄 붙여넣기, 또는 "x" 명령어로 글자 하나를 삭제할 수 있습니다. (더 많은 명령어는 아래에)

 

 

 

ii) 입력 모드(insert mode) - 명령모드에서 "i" 나 "a" 명령을 통해서 입력 모드로 넘어 갈 수있습니다. 입력모드로 가게되면, 자유롭게 코드나 글을 작성을 하시면 됩니다. 명령 모드로 다시 돌아오려면 "ESC"를 누르면 됩니다.  
("i" 명령은 커서가 현재 위치한 부분에서 부터, "a"는 커서 바로 다음 부분부터)

 

 

 

iii) 마지막 행 모드(Last line mode) - 마지막행 모드는 명령모드에서 ":" (콜론) 을 입력하면 화면 맨 밑단에 :______ 하며 입력을 할수 있는 공간이 나옵니다. 여기서 현재까지 내가 작성한 이 내용을 저장하고 vi를 종료(wq)할지, 그냥 종료(q, q!)할지 등을 입력할 수 있습니다.

 

 

  • 제가 손으로 직접 그려본 vi 구성입니다. (제 손가락이 참 이쁘군요.)

 

2. vi 명령어 정리

**색감이 있는 것들이 자주 사용하게될 명령어들 입니다.

 

i) 명령 모드(command mode)에서의 명령어들

- esc 눌렀을때 또는 vi 바로 들어가자마자 상태 입니다! (아시쥬?)

- 엔터를 치지 않아도 명령이 들어갑니다.

vi 명령어

동작 

i

- 현재 커서 위치삽입 (입력모드로 넘어감) 

a

- 현재 커서 바로 다음위치삽입 (입력모드로 넘어감) 

o

- 현재 줄 다음 위치에 삽입 (입력모드로 넘어감)
- 영문 오(o) 입니다.

x

- 커서가 위치한 곳의 글자 1개 삭제. (5x : 문자 5개 삭제) 

 dw

- 커서가 위치한 곳에서 부터 단어 삭제 (커서가 위치한 곳 부터 띄어쓰기 까지)

 dd

- 커서가 위치한 곳의 한 줄 삭제 (삭제이지만, p로 복구가능)

 u

- 방금 한 명령 취소 (ctrl + z 라고 생각하면 됩니다)

 yy

- 현재 줄을 버퍼로 복사 (한 줄을 ctrl + c 한다고 생각하면 됩니다.)

- 5줄 복사 : 5yy 

 p

- 현재 커서가 있는 줄 바로 아래에 버퍼 내용 붙여넣기 (이전에 복사한 줄을 현재 커서 아래부터 ctrl + v 한다고 생각하면 됩니다.)

- 5dd를 이용해서 다섯줄을 지운 것도 p 한번으로 붙여넣기 가능합니다.

- 그렇다면 : 잘라내기 dd -> 붙여넣기 p

 (N)dd

- N 행 삭제 (삭제가 되는 것 처럼 보이지만 실제로는 버퍼에 들어가 있습니다. 버퍼에 들어가 있기 때문에 p를 이용해서 붙여넣기 가능)

- 잘라내기 라고 생각하면 됩니다. (ctrl + x)

- vi에서 여러줄을 삭제하고 싶다면 (N)dd 를 사용하면 됩니다. (N에는 숫자가 들어갑니다)

k

- 위로! (커서가 한 줄 위로 올라감.)

j

- 아래로! (커서가 한 줄 아래로 내려감)

l

- 오른쪽으로! (커서가 한칸 우측으로감)

- 엘 입니다

h

- 왼쪽으로! (커서가 한칸 좌측으로감)

0

- 커서가 있는 줄의 맨 앞으로 감 (home 키라고 생각하면 됩니다)
- 숫자 0(영) 입니다.

$

- 커서가 있는 줄의 맨 뒤로 감 (end 키라고 생각하면 됩니다)

(

- 현재 문장의 처음

)

- 현재 문장의 끝

{

- 현재 문단의 처음

}

- 현재 문단의 끝

숫자-

- 숫자 만큼 윗 줄로 이동

숫자+

- 숫자 만큼 아래 줄로 이동

G

- 파일의 끝으로 이동.

- 대문자로 사용해야합니다. (Shift + g)

r

- 한 문자 변경 

cc

- 커서가 있는 그 줄의 내용 변경


 

ii) 마지막 행 모드(last line mode)에서의 명령어들

 

- esc 누르고, 콜론( : )을 누르면 나오는 상태입니다. 이것도 아시쥬? 1번에서 보고 오셨쥬?

- 아래 명령어 하고 엔터를 쳐야지 명령이 들어갑니다.

 vi 명령어

동작 

w

- 현재 파일명으로 파일 저장. (저장만 함 꺼지지는 않음) 

w [파일명]

- 입력한 파일명으로 파일 저장. (저장만 함 꺼지지는 않음)

q

- vi 종료 (저장되지 않음)

q! 

- vi 강제 종료 ( ! 가 붙으면 강제로 수행)

wq

- 저장 후 종료 

wq!

- 강제 저장 후 종료 ( ! 가 붙으면 강제로 수행) 

f [파일명]

- 파일이름을 [파일명]으로 변경

- 예시 : f abc.txt

숫자 

- 해당 라인으로 커서 이동

$

- 파일의 맨 끝 줄로 이동 

e!

- 마지막 저장 이후 모든 편집 취소 

/문자열

- 현재 커서 위치에서 부터파일 앞쪽으로 문자열 탐색

?문자열

- 현재 커서 위치에서 부터 파일 뒤쪽으로 문자열 탐색 

set nu

- vi 라인 번호 출력

set nonu

- vi 라인 번호 출력 취소 
 

3. 제가 진짜 사용하는 vi 명령어들 알짜 모음

 

 

> 명령모드 (esc 눌렀을때, vi 처음 들어갔을때)

 

1. 파일의 끝으로 이동할때는 - G

2. 한줄 잘라내기 - dd

3. 세줄 잘라내기 - 3dd

4. 붙여넣기 - p

5. 한글자 삭제 - x

6. 단어 삭제 - dw

7. 실행취소! - u

8. 줄의 맨 앞 - o

9. 줄의 맨 뒤 - $

(G, $ 이거 개꿀)

 

> 마지막행 모드 (esc -> : 눌렀을때)

(명령어 뒤에 !를 붙이면 강제로 수행하니까, vi가 궁시렁 궁시렁 거리면 " ! "붙여서 실행 하면 됩니다.)

1. 저장만 : w

2. 종료만 : q

3. 저장 후 종료 : wq

4. 라인 번호좀 보자 : set nu

5. 커서 위치 뒤로 문자열좀 찾자 : ?문자열

6. 커서 위치 앞으로 문자열좀 찾자 : /문자열

(set nu, wq! 개꿀)

 

> 그럼 진짜 흐름이 어떤식인가요?

- vi abc.txt 명령으로 창열고.

- 방향키랑 i , a , 이용해서 편집모드로 들어가서 편집 마구마구 하고.

- 이러다가 잘라낼때는 그 위치에서 esc -> dd 눌러서 한줄 잘라내고.

- 붙여 넣을 위치의 윗줄에서 p 눌러서 붙여 넣고

- 또다시 i, a 이용해서 편집모드 들어갔다가 오타가 나오거나 하면 esc -> x 눌러서 글자 없애고 다시 i, a 이용해서 편집모드로 편집

- 이러다가 다 작성하면 esc -> 콜론 (:) 누르고 -> wq 입력후 엔터 치면 저장후 종료까지 깔-끔.

 

 

4. vi 명령어를 통해 파일을 만들고 저장하기 까지의 과정

(실제로 저는 이렇게 사용합니다.)

: unix, linux 를 보통 GUI가 아닌 CLI 로 사용할때, putty 나 telnet를 통해서 접속해서 사용하는데, 저는 맥 사용자이므로 terminal 기준으로 설명 하겠습니다.

: 터미널을 키면 쉘 창이 나옵니다. ($_____)

: $            <-- 우리는 여기에 입력을 합니다. 이 곳을 **쉘 이라고 합니다

 

**쉘 : 사용자의 명령을 입력 받아서 처리하고 결과를 출력해준다. 즉, 커널과 사용자 사이의 인터페이스.

 
1. "dmask.txt" 라는 이름으로 vi 편집기를 엽니다.
$vi dmask.txt

 

 

2. $vi dmask.txt에서 엔터를 치면 vi 편집기 내부로 들어옵니다. 이때는 명령모드 상태 입니다.

 

3. 여기서 "i", "a" 등의 명령어를 입력하여 입력모드로 갑니다. 아래의 INSERT 가 보이시나요?

 

4. 자유롭게 작성을 합니다. 

예시) "BlockDMask 블로그 짱짱"

 

5. 편집이 끝난 뒤 "ESC"를 입력하여 다시 명령모드로 되돌아옵니다. 아래 INSERT 문이 사라졌습니다.

 

6. " : " 을 입력했을 때 마지막 행 모드로 들어간 모습입니다. (아래에 " :___" 이 보이시나요?)

 

7. " :_____ " 부분에 "wq" 를 입력하여 저장 후 종료를 합니다.

 

8. 쉘에서 "ls" 명령을 통해 파일이 생성된것을 확인할 수 있습니다.

 

출처: https://blockdmask.tistory.com/25 [개발자 지망생:티스토리]

 

 

 

[linux master][리눅스 마스터][국가기술자격] [vi 명령어] vi 명령어 정리

 

 

1. vi 편집기 명령어로 들어가기 전에 전체적인 구조 살펴보기

 

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

: linux, unix 에서 사용하는 vi 편집기는 명령모드, 입력모드, 마지막 행 모드로 총 3가지 모드로 구성되어있습니다.

 

: 흔히 사람들이 말하는 vi 명령어는 이 세가지 모드를 자유자재로 왔다갔다 하면서 코드나 글을 작성하는 것을 말합니다.

 

 

 

i) 명령 모드(command mode) - 처음 vi 명령어로 vi를 시작하게 되면 들어가게 됩니다. 여기서는 방향키를 이용하여 커서를 이동할 수 있으며,  "dd" 나 "yy" 로 한 줄 삭제 및 한 줄 붙여넣기, 또는 "x" 명령어로 글자 하나를 삭제할 수 있습니다. (더 많은 명령어는 아래에)

 

 

 

ii) 입력 모드(insert mode) - 명령모드에서 "i" 나 "a" 명령을 통해서 입력 모드로 넘어 갈 수있습니다. 입력모드로 가게되면, 자유롭게 코드나 글을 작성을 하시면 됩니다. 명령 모드로 다시 돌아오려면 "ESC"를 누르면 됩니다.  
("i" 명령은 커서가 현재 위치한 부분에서 부터, "a"는 커서 바로 다음 부분부터)

 

 

 

iii) 마지막 행 모드(Last line mode) - 마지막행 모드는 명령모드에서 ":" (콜론) 을 입력하면 화면 맨 밑단에 :______ 하며 입력을 할수 있는 공간이 나옵니다. 여기서 현재까지 내가 작성한 이 내용을 저장하고 vi를 종료(wq)할지, 그냥 종료(q, q!)할지 등을 입력할 수 있습니다.

 

 

  • 제가 손으로 직접 그려본 vi 구성입니다. (제 손가락이 참 이쁘군요.)

 

2. vi 명령어 정리

**색감이 있는 것들이 자주 사용하게될 명령어들 입니다.

 

i) 명령 모드(command mode)에서의 명령어들

- esc 눌렀을때 또는 vi 바로 들어가자마자 상태 입니다! (아시쥬?)

- 엔터를 치지 않아도 명령이 들어갑니다.

vi 명령어

동작 

i

- 현재 커서 위치에 삽입 (입력모드로 넘어감) 

a

- 현재 커서 바로 다음위치에 삽입 (입력모드로 넘어감) 

o

- 현재 줄 다음 위치에 삽입 (입력모드로 넘어감)
- 영문 오(o) 입니다.

x

- 커서가 위치한 곳의 글자 1개 삭제(5x : 문자 5개 삭제) 

 dw

- 커서가 위치한 곳에서 부터 단어 삭제 (커서가 위치한 곳 부터 띄어쓰기 까지)

 dd

- 커서가 위치한 곳의 한 줄 삭제 (삭제이지만, p로 복구가능)

 u

- 방금 한 명령 취소 (ctrl + z 라고 생각하면 됩니다)

 yy

- 현재 줄을 버퍼로 복사 (한 줄을 ctrl + c 한다고 생각하면 됩니다.)

- 5줄 복사 : 5yy 

 p

- 현재 커서가 있는 줄 바로 아래에 버퍼 내용 붙여넣기 (이전에 복사한 줄을 현재 커서 아래부터 ctrl + v 한다고 생각하면 됩니다.)

- 5dd를 이용해서 다섯줄을 지운 것도 p 한번으로 붙여넣기 가능합니다.

- 그렇다면 : 잘라내기 dd -> 붙여넣기 p

 (N)dd

- N 행 삭제 (삭제가 되는 것 처럼 보이지만 실제로는 버퍼에 들어가 있습니다. 버퍼에 들어가 있기 때문에 p를 이용해서 붙여넣기 가능)

잘라내기 라고 생각하면 됩니다. (ctrl + x)

- vi에서 여러줄을 삭제하고 싶다면 (N)dd 를 사용하면 됩니다. (N에는 숫자가 들어갑니다)

k

- 위로! (커서가 한 줄 위로 올라감.)

j

- 아래로! (커서가 한 줄 아래로 내려감)

l

- 오른쪽으로! (커서가 한칸 우측으로감)

- 엘 입니다

h

- 왼쪽으로! (커서가 한칸 좌측으로감)

0

- 커서가 있는 줄의 맨 앞으로 감 (home 키라고 생각하면 됩니다)
- 숫자 0(영) 입니다.

$

- 커서가 있는 줄의 맨 뒤로 감 (end 키라고 생각하면 됩니다)

(

- 현재 문장의 처음

)

- 현재 문장의 끝

{

- 현재 문단의 처음

}

- 현재 문단의 끝

숫자-

- 숫자 만큼 윗 줄로 이동

숫자+

- 숫자 만큼 아래 줄로 이동

G

파일의 끝으로 이동.

- 대문자로 사용해야합니다. (Shift + g)

r

- 한 문자 변경 

cc

- 커서가 있는 그 줄의 내용 변경


 

ii) 마지막 행 모드(last line mode)에서의 명령어들

 

- esc 누르고, 콜론( : )을 누르면 나오는 상태입니다. 이것도 아시쥬? 1번에서 보고 오셨쥬?

- 아래 명령어 하고 엔터를 쳐야지 명령이 들어갑니다.

 vi 명령어

동작 

w

- 현재 파일명으로 파일 저장. (저장만 함 꺼지지는 않음) 

w [파일명]

- 입력한 파일명으로 파일 저장. (저장만 함 꺼지지는 않음)

q

vi 종료 (저장되지 않음)

q! 

- vi 강제 종료 ( ! 가 붙으면 강제로 수행)

wq

저장 후 종료 

wq!

- 강제 저장 후 종료 ( ! 가 붙으면 강제로 수행) 

f [파일명]

- 파일이름을 [파일명]으로 변경

- 예시 : f abc.txt

숫자 

- 해당 라인으로 커서 이동

$

- 파일의 맨 끝 줄로 이동 

e!

- 마지막 저장 이후 모든 편집 취소 

/문자열

- 현재 커서 위치에서 부터파일 앞쪽으로 문자열 탐색

?문자열

- 현재 커서 위치에서 부터 파일 뒤쪽으로 문자열 탐색 

set nu

- vi 라인 번호 출력

set nonu

- vi 라인 번호 출력 취소 
 

3. 제가 진짜 사용하는 vi 명령어들 알짜 모음

 

 

> 명령모드 (esc 눌렀을때, vi 처음 들어갔을때)

 

1. 파일의 끝으로 이동할때는 - G

2. 한줄 잘라내기 - dd

3. 세줄 잘라내기 - 3dd

4. 붙여넣기 - p

5. 한글자 삭제 - x

6. 단어 삭제 - dw

7. 실행취소! - u

8. 줄의 맨 앞 - o

9. 줄의 맨 뒤 - $

(G, $ 이거 개꿀)

 

> 마지막행 모드 (esc -> : 눌렀을때)

(명령어 뒤에 !를 붙이면 강제로 수행하니까, vi가 궁시렁 궁시렁 거리면 " ! "붙여서 실행 하면 됩니다.)

1. 저장만 : w

2. 종료만 : q

3. 저장 후 종료 : wq

4. 라인 번호좀 보자 : set nu

5. 커서 위치 뒤로 문자열좀 찾자 : ?문자열

6. 커서 위치 앞으로 문자열좀 찾자 : /문자열

(set nu, wq! 개꿀)

 

> 그럼 진짜 흐름이 어떤식인가요?

- vi abc.txt 명령으로 창열고.

- 방향키랑 i , a , 이용해서 편집모드로 들어가서 편집 마구마구 하고.

- 이러다가 잘라낼때는 그 위치에서 esc -> dd 눌러서 한줄 잘라내고.

- 붙여 넣을 위치의 윗줄에서 p 눌러서 붙여 넣고

- 또다시 i, a 이용해서 편집모드 들어갔다가 오타가 나오거나 하면 esc -> x 눌러서 글자 없애고 다시 i, a 이용해서 편집모드로 편집

- 이러다가 다 작성하면 esc -> 콜론 (:) 누르고 -> wq 입력후 엔터 치면 저장후 종료까지 깔-끔.

 

 

4. vi 명령어를 통해 파일을 만들고 저장하기 까지의 과정

(실제로 저는 이렇게 사용합니다.)

: unix, linux 를 보통 GUI가 아닌 CLI 로 사용할때, putty 나 telnet를 통해서 접속해서 사용하는데, 저는 맥 사용자이므로 terminal 기준으로 설명 하겠습니다.

터미널을 키면 쉘 창이 나옵니다. ($_____)

: $            <-- 우리는 여기에 입력을 합니다. 이 곳을 **쉘 이라고 합니다

 

**쉘 : 사용자의 명령을 입력 받아서 처리하고 결과를 출력해준다. 즉, 커널과 사용자 사이의 인터페이스.

 
1. "dmask.txt" 라는 이름으로 vi 편집기를 엽니다.
$vi dmask.txt

 

 

2. $vi dmask.txt에서 엔터를 치면 vi 편집기 내부로 들어옵니다. 이때는 명령모드 상태 입니다.

 

3. 여기서 "i", "a" 등의 명령어를 입력하여 입력모드로 갑니다. 아래의 INSERT 가 보이시나요?

 

4. 자유롭게 작성을 합니다. 

예시) "BlockDMask 블로그 짱짱"

 

5. 편집이 끝난 뒤 "ESC"를 입력하여 다시 명령모드로 되돌아옵니다. 아래 INSERT 문이 사라졌습니다.

 

6. " : " 을 입력했을 때 마지막 행 모드로 들어간 모습입니다. (아래에 " :___" 이 보이시나요?)

 

7. " :_____ " 부분에 "wq" 를 입력하여 저장 후 종료를 합니다.

 

8. 쉘에서 "ls" 명령을 통해 파일이 생성된것을 확인할 수 있습니다.

 

출처: https://blockdmask.tistory.com/25 [개발자 지망생:티스토리]

 

 

 

 

 

 

 

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
294 [linux master][리눅스 마스터][국가기술자격] 리눅스 기초 명령어 : 도움말 보기 -man, info, help file 졸리운_곰 2025.02.18 215
293 [linux master][리눅스 마스터][국가기술자격] 우분투에서 NTFS 를 Read/Write로 마운트 (듀얼 부팅 화일 공유) file 졸리운_곰 2024.12.22 277
292 [linux master] 커맨드 라인에서 display 문제로 gui 프로그램이 열리지 않을 때, 졸리운_곰 2024.12.22 338
291 [linux master][리눅스 마스터][국가기술자격] VirtualBox ubuntu ↔ 윈도우 공유 폴더 설정 file 졸리운_곰 2024.12.20 293
290 [WSL2] 외부에서 WSL2 접속하기 (feat. 포트포워딩) file 졸리운_곰 2024.12.01 306
289 [linux master][리눅스 마스터][국가기술자격] How to fix sudo after "chmod -R 777 /usr/bin"? /usr/bin/sudo must be owned by uid 0 and have the setuid bit set 졸리운_곰 2024.09.23 754
288 [docker] [Docker] 도커 이미지와 컨테이너 삭제 방법 졸리운_곰 2024.08.20 350
287 [linux master][리눅스 마스터][국가기술자격] [리눅스/find] 파일찾기 - 허가 거부 제외하고 결과물 출력하기 file 졸리운_곰 2024.07.21 326
286 [C/C++ 일반] XOR 연산을 이용한 암호화, 복호화 졸리운_곰 2024.03.11 409
285 [linux master][리눅스 마스터][국가기술자격] [리눅스] socat 명령어(proxy) file 졸리운_곰 2024.02.28 343
284 [linux master][리눅스 마스터][국가기술자격] [리눅스] Linux nc 명령어는 무엇이고 어떻게 쓰는 가? 졸리운_곰 2024.02.28 345
283 [linux master][리눅스 마스터][국가기술자격] [리눅스] AWK 명령어 사용법과 여러가지 실용적인 예제 모음 file 졸리운_곰 2024.02.02 300
» [linux master][리눅스 마스터][국가기술자격] [vi 명령어] vi 명령어 정리 file 졸리운_곰 2024.02.02 283
281 [linux telnet(ssh) 창에서 MSDOS emulation 에뮬레이션 Install dosemu2 dos emulator in Ubuntu and Ubuntu based distributions file 졸리운_곰 2024.01.05 289
280 [C/C++] Window 비주얼 스튜디오 포코(POCO) 라이브러리 적용 졸리운_곰 2023.12.05 263
279 [C/C++] C++ 프로그래밍에 요긴한 라이브러리 7종 file 졸리운_곰 2023.12.04 340
278 [C/C++ 인공지능] Artificial Neural Network C++ Class : 인공신경망 C++ 클래스 file 졸리운_곰 2023.11.25 308
277 [linux master][리눅스 마스터][국가기술자격] [Azure] Linux(ubuntu) 우분투 서버 GUI 환경으로 원격 접속하기 - feat. Ubuntu-desktop file 졸리운_곰 2023.11.22 334
276 [linux master][리눅스 마스터][국가기술자격] [Linux] vim(vi) editor 한글 입력시 깨짐 해결방법 file 졸리운_곰 2023.11.22 337
275 [C/C++ 인공지능] Visual Studio 2019에서 LibTorch 사용하기 file 졸리운_곰 2023.11.20 392
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED