본문 바로가기
Computer Science/Linux 다뤄보는 문과생

Linux 다뤄보는 문과생 (5) - vi, 리눅스로 문서 편집

by 싸코 2017. 11. 21.

 

 

 

사실 리눅스를 사용하면서 제일 불편했던 것이 vi 편집기였다. 외부에서 원격으로 접속했을 때 문서편집을 해야 했을 때는 vi나 vim으로 들어가 문서를 편집하였는데 내가 무슨 실수를 했는지 알 수도 없었고 잘 안되면 그냥 :wq나 ctrl+c :q 등을 누르면서 빠져나가기만을 간절히 바라고 포기하고 했던 기억이 난다.

vi 사용법을 살펴보면서 명령어가 상당히 많은 것을 볼 수 있었다. 저 모든 걸 피아노 치듯이 연습해야 편하게 사용할텐데... 그렇게 사용할 일이 있을지도 의문이고 내가 그걸 견딜지도 의문이지만 간단한 수정이나 작업 등에는 바로 vim으로 문서 편집 하는 것이 가장 나으므로 익숙해지는 것이 필요해 보인다

 

입력모드, 명령어모드, 검색모드는 필수이고, 거기서 상하좌우 이동, 삭제, 복사 붙여넣기 정도는 사용하지 않을까 싶다. 적어 놓고 보니까 아래에서 다 적어놓은 내용으로 전체 내용이었다....;;;;

 

Linux 다뤄보는 문과생 (5)

vi, 리눅스로 문서 편집

 

1) 편집기 시작

2) 편집기 종료

3) 명령어 모드

4) 이동 명령어

5) 입력모드
   문자 및 라인 삭제

6) 변경 명령어

7) 자르기, 복사하기, 붙여넣기 명령어

8) 찾기, 바꾸기 명령어

9) 파일 제어 명령어

 

1. vi 개요

vi는 다른 편집기에 비해 어떤 환경에서도 사용이 가능하여 사용해야 함

GUI가 환경이 제공되지 않을 떄에도 사용할 수 있고 vi 이외에 다른 편집기가 설치되지 않은 경우에도 사용할 수 있어 vi에 익숙지면 어떤 환경에서 사용이 가능해진다는 의미임

 

vi는 ex를 visual하게 만들었다고 vi라고 부름

 

기본 사용 명령어들이 ex와 동일함

명령어의 이름도 ex 명령어임

 

리눅스에서는 오리지날 버전의 vi보다는 보다 개선된 vim을 사용함

vi가 지원하는 모든 기능을 지원하고 한글 처리 및 기타 사용자 인터페이스가 vi보다 향상되어 vi 대용으로 이용할 수 있음

 

 

2. vi 기본 사용법

vi 편집기는 vi 실행시 최초의 모드인 명령어 모드(Command Mode)에서 모드를 변경하면서 문서에 내용을 입력하거나 명령어를 실행할 수 있으며 이러한 작업이 한 화면에서 이루어지는 편리함이 있음

 

1) vi 편집기 시작

vi 파일명

파일명을 주지 않고 시작할 수도 있음

 

명령어 모드에서 모드전환을 통해 입력모드로 돌아갈 수도 있고 입력을 끝내고 명령어 모드로도 돌아갈 수 있음

MS Word는 모드 전환 없이 이것이 한 모드 안에서 이루어지기 때문에 낯설 수 있음

 

2) vi 편집기 종료

<ESC> ZZ 저장 후 끝내기

<ESC> :wq 저장 후 끝내기

<ESC> :q! 저장하기 않고 끝내기

 

* 콜론(:)으로 시작하면 확장모드 명령임

 

 

3) 명령어 모드

명령어 모드는 [ESC] 키를 입력하면 전환된다

명령어 모드에는 선택적으로 사용되며 알파벳, 특수 기호 등 단 한 글자의 키를 입력하며 대소문자 구분이 엄격함

  ex. 10dw 횟수 10개, 삭제("d"), 단어("w")    현재 커서 위치로부터 10개의 단어를 삭제하라

  ex. 43G 횟수 43, 가기("Go")    43번째 라인으로 가기

  ex. x  삭제(x). 현재 커서 위치의 문자를 삭제(x)

 

 

4) vi 이동 명령어

  • 상하좌우 이동명령어
      - 상 : k
      - 하 : j
      - 좌 : h
      - 우 : l
  • 단어 이동 명령어
      - b : 한번 누르면 단어의 시작으로 이동. 두 번 누르면 앞 단어의 시작으로 이동
      - e : 단어의 끝으로 이동
      - w : 다음 단어의 첫 문자로 이동
  • 라인 이동 명령어
      - 0 : 라인의 시작으로 이동 (숫자0)
      - $ : 라인의 끝으로 이동
      - nG : n번째 라인으로 이동
      - G : 마지막 라인으로 이동
  • 페이지 이동 명령어
      - <Ctrl> + f : 다음 페이지로 이동
      - <Ctrl> + b : 이전 페이지로 이동
      - <Ctrl> + d : 다음 반 페이지로 이동
      - <Ctrl> + u : 이전 반 페이지로 이동
      - <Ctrl> + l : 현재 페이지 다시 표시(Refresh)

 

5) 입력 모드

각각의 입력에 따라 현재 커서로부터 입력되는 부분이 달라짐

 

  • i  :  현재 커서 앞에 입력
  • a  : 현재 커서 뒤에 입력
  • I  : 현재 라인의 첫 문자 앞에 입력
  • A  : 현재 라인의 마지막 문자 뒤에 입력
  • o  : 현재 라인 다음에 새로운 라인을 만듦
  • O  : 현재 라인 이전에 새로운 라인을 만듦

입력 모드에서는 <ESC> 키를 누르기 전까지 입력한 글자는 <Backspace> 키로 지울 수 있으나

입력모로 들어오기 전에 입력한 글자는 <Backspace> 키로 지울 수 없음

아래의 문자 및 라인의 삭제를 사용해야 함

 

문자 및 라인의 삭제

  • x : 현재 커서가 위치한 한 문자 삭제
  • X: 현재 커서가 위치한 앞 문자 삭제
  • dd : 현재 커서 라인 전체를 지움
  • dw : 현재 커서로부터 다음 단어 처음까지 지움
  • d3l : 현재 커서로부터 다음 세 글자를 지움
  • d0 : 현재 커서로부터 라인의 시작까지 지움
  • d1G : 현재 커서로부터 파일의 시작까지 지움
  • d$ : 현재 커서로부터 라인의 마지막까지 지움
  • D : 현재 커서로부터 라인의 마지막까지 지움

 

6) 변경 명령어

글자 대 글자의 변경

 

  • r  : 한 글자만 변경 (replace, 덮어쓰기)
  • R  : <ESC>가 눌리기 전까지의 모든 글자를 변경

일정한 범위를 지정하여 변경할 수 있는 명령

  • cc : 현재 커서가 위치한 라인 전체를 변경
  • cw : 현재 커서가 위치한 다음 단어를 변경
  • c3l : 현재 커서가 위치한 다음 3 단어를 변경
  • c0 : 현재 커서로부터 라인의 시작까지 변경
  • c1G : 현재 커서로부터 파일의 시작까지 변경
  • cG : 현재 커서로부터 파일의 마지막까지 변경
  • c$ : 현재 커서로부터 라인의 마지막까지 변경
  • C : 현재 커서로부터 라인의 마지막까지 변경

 

 

7) 자르기, 복사, 붙여넣기 명령어

 

자르기

모든 삭제 명령어와 같은 명령어를 사용하며 vi의 클립보드는 단 하나이기 때문에 한 번 자르고 또 자르면 이전 자른 것은 사라진다

 

 

복사하기

  • yy : 현재 커서가 위치한 라인 전체 복사
  • yw : 현재 커서가 위치한 다음 단어를 복사
  • y0 : 현재 커서로부터 라인의 시작까지 복사
  • yG : 현재 커서로부터 파일의 마지막까지 복사

 

붙여넣기

  • p : 현재 커서 위치의 다음 문자나 다음 라인에 붙여넣기
  • P : 현재 커서 위치에 끼워 넣어지거나 앞쪽 라인으로 삽입됨

 

 

8) 찾기, 바꾸기 명령어

찾기

명령어 모드에서 검색모드로 전환

현재 커서 위치에서 다음 방향으로 찾기 수행( / )을

현재 커서 위치에서 이전 방향으로 찾기를 수행( ? ) 한다

<Enter> 키를 눌러 명령어 모드로 돌아옴

  • n : 이전과 같은 방향으로 찾기 반복
  • N : 이전과 반대 방향으로 찾기 반복

 

바꾸기

명령어 모드에서 확장 모드로 바꿀 때는 콜론( : )을 사용한다

 

ex.  : 1,$s/old/new/g   : 첫 번째 라인부터 마지막 라인까지, 즉 파일 전체에서 old라는 글자를 new 라는 글자로 대체함

 

 

9) 파일 제어 명령어

:r file   현재 라인 당므으로 파일을 읽어 들임 (Read file and place contents after current line(merge))

:w       현재의 내용을 파일로 저장함

:w!      사용 권한을 무시하고 현재 내용을 파일로 저장함

:w file  다른 이름으로 저장함

:wq     저장한 후 종료함

:x        저장한 후 종료함

:q        저장하지 않고 종료함(변경사항이 있을 경우 종료되지 않음)

:q!       저장하지 않고 종료함(변경사항이 있어도 종료됨)

:!cmd   쉘 명령 수행

:r!cmd  쉘 명령 수행결과를 현재 커서 이후로 읽어드림

 

 

파일 저장과 관련된 명령의 예시

:! 명령

 - 쉘 명령어를 사용
 - vi 편집기를 이용하여 프로그램의 소스 코드를 작성할 때 저장, 컴파일, 편집 등을 반복해야 하는 경우 즐겨사용하는 명령임.
 - ex) !cc <파일명> 명령을 수행하면 수정된 소스코드를 컴파일 할 수 있음.

 

 

:help

마법의 주문

댓글