다루두루

블로그 이미지

차케요

공부하면서 정리하는 노트같은 블로그입니다.

리눅스 vi 명령어 모음

리눅스 노트정리 2018. 5. 22. 13:15

리눅스 명령어 모음 vi

 

리눅스에서는 gedit라는 메모장 비슷한 에디터를 제공해주고 있지만 유닉스와 리눅스 시스템에 기본적으로 포함되어 있는 vi는 반드시 다룰 줄 알아야 한다기에 간단한 vi 기본 사용법부터 알아보고 명령어를 정리해보려고 한다.

 

1. vi 실행

vi를 실행하기 위해서는 터미널을 열고 다음과 같이 vi 명령어를 실행하면 된다.

vi

윈도우나 메모장에 익숙해져 있는 나 같은 사람들이 적응하는데 시간이 좀 걸리겠지만 리눅스를 다루기 위해서는 이 녀석도 반드시 익혀둘 필요가 있다고 한다.

 

빔

▲ 이처럼 vi의 정확한 명칭은 vim이며.... 실행을 하니 간단한 명령어 몇 개가 보인다. 먼저 이 녀석을 종료하는 명령어부터 살펴볼 텐데 [esc] > [:q]이다. 프로그램이 실행된 상태에서 esc를 누른 후 :q를 입력하고 엔터키를 누르면 종료가 된다. vi를 실행하고 아무 작업도 하지 않은 상태에서는 esc를 누르지 않고 바로 :q를 입력해도 되지만 편집을 하다가 :q를 입력하기 위해서는 반드시 esc를 눌러야 한다.

 

 

2. vi로 파일 만들고 내용 입력하기

vi를 실행하면서 새로운 파일을 바로 만들 수 있는데 vi 뒤에 파일 이름을 입력하면 된다.

vi 파일 만들기

▲ test.txt라는 파일을 만들고 vi를 실행했다.

 

새파일

▲ 이렇게 test.txt [새 파일]이 만들어지는데 여기에 내용을 입력하기 위해서는 i 또는 a를 누르면 된다.

 

끼워넣기

▲ i를 누르자 [끼워넣기] 상태가 된다. 이제 여기에 내가 원하는 내용을 입력할 수 있는데 간단하게 몇 줄을 입력해본다.

 

문서 작성

▲ 입력한 내용을 저장하기 위해서는 역시 [ESC]를 먼저 누르고 :wq를 입력하면 된다. w는 Write를 의미하고 q는 Quit를 의미하기 때문에 저장하고 종료하라는 의미가 된다.

 

저장하고 나가기

만약 새로 작성하거나 변경한 내용을 저장하지 않고 종료를 하려면 :q!를 입력하면 된다.

 

3. vi 비정상 종료 때 나타나는 문제 해결

다음은 나 같은 초보들이 많이 겪는 문제 중의 하나인데 vi를 사용하다가 :q, :wq, :q! 등 정상적인 종료를 하지 않고 vi 창의 위쪽에 있는 닫기[x] 버튼을 눌러서 종료했을 때 발생하는 문제에 대해서 알아보고 그 해결 방법을 살펴보고자 한다.

 

 

앞에서 작성한 파일을 다시 열어서 내용을 적당히 편집하다가 정상 종료가 아닌 닫기[x]를 눌러서 종료를 해보자. (기존의 파일을 열 때도 역시 'vi 파일 이름'을 입력하면 되는데 나의 경우 vi test.txt를 입력해서 열었으며 내용을 다음과 같이 살짝 변경을 해봤다.)

비정상 종료

▲ :q, :wq, q!를 통하지 않고 닫아버리면 어떤 문제가 발생할까? 변경된 내용이 저장이 될까? [x]를 눌러서 닫았다가 다시 이 파일을 열어본다.

 

스왑파일

▲ 이처럼 스왑 파일이 존재하기 때문에 정상적으로 파일이 열리지 않는다는 메시지가 어지럽게 출력이 된다. 이 스왑파일이 존재한다는 건 기존의 작업이 정상적으로 종료되지 않았다는 의미인데 이 파일을 제거해줘야 정상적으로 파일을 편집할 수가 있다.

 

먼저 실제로 스왑파일이 존재하는지 확인해보자.

숨김파일

▲ vi의 비정상 종료로 인해서 생성된 스와파일은 숨김 파일(이름앞에 . 찍힌 것들은 숨김 파일)이다. 그리고 이 숨김파일을 보기 위해서는 ls -a 명령어를 사용해야 하며 위 그림처럼 실제로 .test.txt.swp가 존재하는 걸 확인할 수 있다.

 

해당 파일을 다음과 같은 명령어로 제거를 해보자.

스왑파일 제거

▲ 제거는 rm -f .파일이름.swp로 할 수 있으며 명령어 실행 후에는 실제로 해당 파일이 제거된 걸 확인할 수 있다.

 

저장 안됨

▲ 그리고 다시 vi test.txt를 실행하니 정상 편집할 수 있는 상태가 되기는 했는데 앞에서 저장하지 않고 종료했을 때 편집했던 내용은 없어진 상태가 된다. 이처럼 swp 파일이 생성됐을 때는 간단하게 그것의 제거만으로 문제를 해결할 수는 있지만 편집한 내용이 삭제되며 이 과정을 반복하는 것 또한 번거로우니 vi를 종료할 때는 항상 정상 종료 되도록 주의를 기울이자.

 

이렇게 해서 vi의 기본 사용법을 대충 살펴봤는데 이제 편집 과정에서 사용되는 vi의 대표적인 명령어들을 몇 개 정리해보고 마무리하자.(커서를 기준으로)

 

 

4. vi 편집 명령어

 i

커서의 위치부터 입력 

I(대문자 i) 

커서가 있는 줄의 맨 앞부터 입력 

 a

커서의 다음 위치부터 입력 

A 

커서가 있는 줄의 마지막부터 입력 

 o

다음 줄부터 입력 

O

이전 줄부터 입력 

 s

한글자 띄우고 입력 

S 

한 줄을 지우고 입력 

 h

왼쪽으로 한 칸 이동

j 

아래쪽으로 이동 

k 

위로 이동 

l(소문자L) 

오른쪽으로 이동 

Ctrl + F 

다음 화면으로 이동(Page Down) 

Ctrl + B 

이전 화면으로 이동 (Page Up) 

^ 

현재 줄의 처음으로 이동 (Home) 

$ 

현재 줄의 마지막으로 이동 (End)

gg 

맨 처음 줄로 이동 

G 

제일 끝 줄로 이동 

숫자G 

입력한 숫자 행으로 이동 

:숫자 + 엔터 

해당 숫자의 행으로 이동 

x 

커서가 위치한 글자 삭제 

X 

바로 앞 글자 삭제 

dd 

커서가 있는 줄 삭제

숫자dd 

커서에서 숫자만큼의 줄 삭제 

yy

현재 행 복사 

숫자yy 

숫자만큼의 행 복사 

p(소문자) 

복사한 내용을 다음 줄에 붙여넣기 

 P(대문자)

복사한 걸 이전 줄에 붙여넣기 

 /문자열 + 엔터

 커서 이후로 해당 문자열 찾기

n 

찾고 있는 문자 중 다음으로 이동 


쭉 입력해보니 어느 정도는 머릿속에 들어오는데... 익숙해지기 위해서는 자주 사용을 해봐야 할거 같다.

저작자표시 비영리 변경금지 (새창열림)
Posted by 차케요

    최근...

  • 포스트
  • 댓글
  • 트랙백
  • 더 보기

카테고리

NEW (900)
아이폰 개발 기초 (7)
취미 (16)
아두이노 (16)
[안드로이드] 어플만들기 (77)
안드로이드 기초 다지기 (61)
슈팅게임 만들기 (4)
[JAVA]자바 공부하기 (48)
C언어 알고리즘 (61)
[Unity3D]유니티3D 강좌 (7)
컴퓨터 (325)
포토샵CS2 강좌 (6)
유용한 프로그램 (244)
리눅스 노트정리 (22)
임베디드 리눅스 (11)
New블로그 (9)
음식의 효능 (4)
일반상식 (56)
HTML 공부 (40)
포토샵 공부 (36)
엑셀 (6)
파워포인트 공부 (19)
노트정리 (38)
일상 (33)
TV영화 (85)
방명록 : 관리자 : 글쓰기
차케요's Blog is powered by daumkakao
Skin info material T Mark3 by 뭐하라
favicon

다루두루

공부하면서 정리하는 노트같은 블로그입니다.

  • 태그
  • 링크 추가
  • 방명록

관리자 메뉴

  • 관리자 모드
  • 글쓰기
  • NEW (900)
    • 아이폰 개발 기초 (7)
    • 취미 (16)
      • 아두이노 (16)
    • [안드로이드] 어플만들기 (77)
      • 안드로이드 기초 다지기 (61)
      • 슈팅게임 만들기 (4)
    • [JAVA]자바 공부하기 (48)
    • C언어 알고리즘 (61)
    • [Unity3D]유니티3D 강좌 (7)
    • 컴퓨터 (325)
      • 포토샵CS2 강좌 (6)
      • 유용한 프로그램 (244)
    • 리눅스 노트정리 (22)
      • 임베디드 리눅스 (11)
    • New블로그 (9)
    • 음식의 효능 (4)
    • 일반상식 (56)
    • HTML 공부 (40)
    • 포토샵 공부 (36)
    • 엑셀 (6)
    • 파워포인트 공부 (19)
    • 노트정리 (38)
    • 일상 (33)
    • TV영화 (85)

카테고리

PC화면 보기 티스토리 Daum

티스토리툴바