2016-02-05

리눅스 vi, 한 페이지로 요약하는 간단 사용법

아주 먼 옛날(?) 리눅스를 처음 접했을 때 가장 먼저 vi에 대해서 알게 되었다. vi는 단순 텍스트 편집기일 뿐이지만 생각보다 깊이 있는 프로그램이며 지금까지도 뭇 프로그래머의 사랑을 받는 스테디 프로그램 중의 하나이다. 리눅스를 주 운영체제로 쓰고 있지는 않아서 내 손발처럼 다룰 수 있지는 않지만 맥북도 그렇고 웹서버 상에서 가끔 쓰일 일이 있다. 아무래도 사용 운영체제가 리눅스이기 때문에 단축키를 알아두면 사용하는 데 아주 유용하다.

본 내용은 과거에 기록해놓은 자료를 토대로 다시 정리하였다.

vim (vi)

vim는 윈도우즈의 메모장 같은 편집기이다. 일반적으로 vi라고도 하며 둘의 차이점은 vim (Vi Improved) 이 vi의 향상된 편집기 라는 점이다. vi의 기능을 거의 호환하면서 추가 기능을 제공하는 형태이다. 요즘 배포판에는 보통 vim이라는 vi의 클론을 포함하고 있다. 그러나 가끔 vim 명령어가 포함되지 않을 경우 원래 편집기인 vi를 사용하면 된다. vi 외에도 Emacs, ed 등등 여러 종류가 있다.
vi 상태는 총 3가지이며 내용과 관련된 명령을 내리는 명령 상태 (ESC키 누른 상태), 실제 편집기를 편집할 수 있는 입력 상태 (편집 가능한 상태), 편집기 파일에 관련된 명령을 내릴 수 있는 실행 상태 (: 콜론 입력한 상태)가 있다.
명령어 사용법은 vi 또는 vim 명령어 뒤에 생성할 파일명을 함께 입력해주면 해당 파일명으로 파일이 생성된다.

]$ vi {생성할 파일명}
]$ vim {생성할 파일명}

vi 명령 상태

명령 상태 => 입력 상태로 변경: i (insert) 또는 a (append)

명령 상태: 빈 화면에 하단에 text.txt 이름으로 파일을 생성한 상태
명령키를 누르는 것으로 명령을 내린다. 편집기 내용과 관련된 명령을 내릴 수 있는 상태이다. 키보드 입력을 통해서 직접 텍스트를 입력할 수 있는 입력 상태와는 다른 편집 상태이다. 입력 상태로 변경하고 싶으면 i 키를 눌러 하단에 -끼워 넣기- 또는 -INSERT-로 표시되는 것을 확인하면 입력 상태가 된다. 입력 상태에서 다시 명령상태로 돌아가려면 ESC 키를 누른다.

입력

다음의 키를 누르면 텍스트를 입력할 수 있는 상태가 된다. 해당 키를 입력하면 텍스트를 입력할 수 있다. A 명령어 같은 경우에는 Shift + A 키를 누른 형태이다.
  • i: 현재 커서 앞쪽에 텍스트 입력
  • a: 현재 커서 뒤쪽에 텍스트 입력
  • I: 현재 라인 처음에 입력 (라인이 공백으로 시작하면 실제 단어 앞에 입력)
  • A: 현재 라인 마지막에 입력
  • o: 현재 라인 아래줄에 입력
  • O: 현재 라인 윗줄에 입력

이동

가끔 이상한 키보드 보면 방향키가 일반적이지 않고 일직선상에 쭉 놓여져 있는 키보드가 있다. (예: ←↑↓→ 이런식의 배열) 그런 키보드는 아무래도 기획자가 리눅스 개발자였거나 리눅스 개발자용으로 만들었을 가능성이 크다. 
  • h: 왼쪽으로 이동
  • j: 아래로 이동
  • k: 위로 이동
  • l: 오른쪽으로 이동
  • 0: 행의 처음으로 이동
  • $: 행의 끝으로 이동
  • G: 파일의 맨 끝으로 이동
  • H: 파일의 맨 처음으로 이동

vi 입력 상태

입력 상태: 명령 상태에서 i키를 입력하여 입력 상태로 변경

삭제  x or delete

명령상태에서 키를 입력하여 (일반적으로 i) 입력상태로 전환하여 진행해야 한다. x키를 누르면 해당 커서에 있는 텍스트가 하나씩 삭제된다. 아래 명령어는 한 줄을 다 지우고 싶거나 단어를 지우고 싶거나 하는 특수한 상황에서 편리하게 지울 수 있는 키이다. 
  • dd: 한 줄 삭제
  • dw: 한 단어 삭제 (단어 첫번째 글자에 커서를 위치시켜야 함: 첫번째 글자에 커서를 위치시키고 작업 )
  • d$: 현재 커서부터 커서의 마지막 줄까지 삭제 ($: 마지막)
  • d0: 현재 커서부터 처음부분까지 삭제 (0: 처음)

교체 

  • r: 한글자 교체: r 누르고 새로운 문자 입력
  • w: 한 단어 교체: cw 누르고 새로운 단어 입력후 esc 누르기, 첫번째 글자에 커서를 위치시키고 작업
  • c: 한 줄 변경: cc 누르고 새로운 내용 입력후 esc 누르기

vi 실행 상태

실행 상태: 명령 상태에서 세미콜론(:)을 입력

리눅스 명령 상태로 돌아가기

실행 상태로 만들려면 반드시 명령 상태여야 한다. 명령 상태에서 세미콜론(:) 키를 누르면 실행 상태로 전환된다. 
  • :w: 저장
  • :q: 저장하지 않고 종료 (quit)
  • :wq: 저장 후 종료 (write + quit) 보통은 vi를 열 때 파일명을 지정한 채로 열지만 파일명을 지정하지 않고 작성했다면 리눅스 명령어 상태로 나올 때 다음과 같이 저장한 파일명을 입력해야한다.
    wq {저장할 파일명}
  • !: 저장하지 않고 강제 실행하는 문자이며 다른 옵션과 함께 사용한다. 
  • :q! : 강제 종료 (대소문자 구문) 읽기 전용 파일을 편집하고 저장하지 않고 파일을 빠져나오면 ! to override 메시지를 출력 하는데 저장하지 않고 빠져나오려면 !(force - 강제실행)을 이용하여 빠져나온다.
  • :wq!: 강제 저장 및 종료
  • :set n: 행번호 표시
  • :123: 123라인으로 이동
  • :s/변경할/변경될/g: 현재라인에 있는 모든 변경할 단어를 변경될 단어로 바꿈
  • :1,3 s/변경할/변경될/g: 1~3 라인에 있는 모든 단어를 바꿈
  • :1,$ s/변경할/변경될/g: 파일 전체에 있는 모든 단어를 바꿈

vi 설정

]$ vi .exrc
파일명 앞에 .이 붙으면 숨김파일이라는 뜻이다. 위와 같이 파일을 생성해주면 해당 파일 내용으로 vi 환경 설정을 할 수 있다. 이 파일은 리눅스 각 계정 디렉토리에 위치한다. 내용은 하단처럼 작성할 수 있다.
  • :set nu: 행의 숫자 보이게 함
  • :set ic: 대소문자를 구분하지 않음
  • :set ts=4: 탭을 눌렀을 때 간격은 4
  • :set ai: 자동 들여쓰기
  • :set nu, :set number, :se nu: 라인번호 출력
  • :set nonu, :set nonumber, :set nonu: 라인번호 해제 
내용 작성한 다음 다음과 같이 적용하면 설정한 환경 설정이 적용된다.
]$ source .exrc

연습하기

/root안에 vi를 이용하여 today.txt 파일을 아래 내용으로 생성하기

linux
unix
windows

]$ cd
]$ pwd
]$ (/root)
]$ vi today.txt
    linux
    unix
    windows

터미널에서 명령어를 이용하여 아래와 같이 설정하기

/desk/test1/test1.txt에는 /root/today.txt를 복사하고
/desk/test1/test2/test2.txt에는 /root/today.txt를 이동하기

desk(디렉토리)
    test1(디렉토리)
        text1.txt(파일)
        test2(디렉토리)
            test2.txt(파일)

]$ ls
    today.txt
]$ mkdir -p /desk/test1/test2
]$ cp today.txt /desk/test1/test1.txt
]$ mv today.txt /desk/test1/test2/test2.txt
]$ ls
]$ ls /
]$ ls -R /desk
]$ mkdir
]$ mkdir --help 


Share This:    Facebook Twitter

0 개의 댓글:

댓글 쓰기