VI Editor 7.0.237

vi 편집기는 Unix와 Linux 에서 가장 널리 쓰이는 편집기이다.

vi 편집기를 실행하면  command mode(명령행 모드) 상태로 시작하게 된다.
상태의 변환은 아래와 같이 특정 키를 눌르면 mode가 전환된다.



1. 새 문서 열기

 # vi
 # vi [새 파일 이름 ...]
새로운 문서를 생성하기 위해서는 두가지 방법이 있다.

첫번째 방법은 그냥 vi 편집기를 실행시키고 저장하는 것이고 두번째는 새 파일이름을 입력하고 실행하면 입력한 파일이름으로 생성을 해준다.
첫번째 방식으로 실행을 하면 vi 의 정보가 표시된다.

만약 여러개의 문서를 한꺼번에 생성하고자 한다면 vi 뒤에 이름을 공백으로 구분하여 파일을 여러개 입력하면 된다. 생성한 파일을 이동하려면 Last Line Mode 에서 :n(다음) 또는 :N(이전)으로 이동할 수 있다.




2. 편집할 문서 열기
vi [파일명] : 편집할 문서 열기

vi [+n] 파일명 : 편집 할 문서의 n번째 라인에 프롬프트 이동 후 열기
- 파일명 필수, "+n" 사이에 공백이 없어야 한다.

vi [+/키워드] 파일명 : 편집 할 문서의 내용 중 키워드를 검색하여 맞는 단어로 프롬프트이동 후 열기
- 파일명 필수, +/와 키워드 사이에는 공백이 없어야 한다.

vi [-R] 파일명 : 읽기 전용으로 문서 열기

vi [파일명, ...] : 다중파일 열기

예제

★주의★  
만약 특정 파일을 열어서 수정해야 할 때 실수로 존재하지 않은 파일명을 입력하게 된다면 새 문서 열기가 되어 버린다. 맞는 파일인지 확인하는 습관을 가져야 한다.

열린 파일간 이동
:n : 다음 파일로 이동
:N : 이전 파일로 이동
:args : 현재 파일명 표시
파일의 생성 및 편집을 여러개의 파일을 한꺼번에 열고 서로간의 문서를 위의 명령어로 이동하며 편집이 가능하다.



3. 문서복구
요즘은 윈도우에서 한글이나 워드를 사용할 때 예기치 못한 상황으로 저장하지 못하고 비정상 종료가 되어도 별 걱정이 없다. 다시 실행하면 작업중이던 문서를 보여주기 때문인데 vi 에디터도 이러한 기능이 있다.
작업중이던 내용은 swp 파일로 저장되어 있어 복구가 가능하다.

#vi -r 파일명


4. 문서저장과 vi 편집기 종료 (Last Line Mode)
:w[!] : 문서저장 [강제]
:q[!] : vi 종료 [강제]
:wq[!] : 저장후 vi 종료[강제]
:ZZ[!] : 저장후 vi 종료[강제]

:q는 vi 종료인데 문서를 수정중에 이 명령을 실행하면 수정된 문서를 저장하지 않았으므로 종료가 되지 않는다.
종료를 하려면 문서를 저장하던지 뒤에 "!"를 붙여서 강제종료를 해야 한다. 편집한 내용은 저장되지 않는다.

5. 입력모드 (Command Mode)
i : 현재 프롬프트가 위치한 곳에서 입력모드가 전환.
I : 현재 프롬프트가 위치한 라인의 맨 처음으로 이동후 전환.
a : 현재 프롬프트가 한칸 오른쪽으로 이동한 후 입력모드 전환.
A : 현재 프롬프트가 위치한 라인의 맨 끝으로 이동후 전환.
o : 현재 프롬프트가 위치한 라인의 다음라인에 줄 삽입후 입력모드 전환
O :  현재 프롬프트가 위치한 라인의 이전 라인에 줄 삽입후 입력모드 전환
s : 현재 프롬프트의 한글자 삭제 후 입력모드 전환
S : 현재 프롬프트의 행 삭제후 입력모드 전환
R : 수정 모드로 입력모드 전환


6. 실행취소 Undo (Command Mode)

u : 작업했던 내용을 취소한다. 윈도우의 Control + z 와 유사한 기능.

7. 프롬프트의 이동 (Command Mode)
환경에 따라 키보드의 방향키가 입력이 안되는 경우가 있다. 그런 경우에 명령행 모드에서 아래의 조작으로 프롬프트를 이동할 수 있다.
h : ←
j : ↓
k : ↑
l : →

8. 단어 단위 이동 (Command Mode)
[n]w : 현재 프롬프트를 기준으로 오른쪽으로 [n개] 단어이동
[n]b : 현재 프롬프트를 기준으로 왼쪽으로 [n개] 단어 이동

명령행 모드에서 w, b를 누르면 단어단위 이동이 가능하다.
이때 옵션인 숫자(n)를 넣으면 해당 개수만큼 이동한다.

10. 행 이동(Command Mode)
nG : 명령행모드 (Command mode) 
:n 마지막행 모드(Last Line mode)

첫번째방법은 명령행 모드에서 그냥 숫자를 입력하고 대문자 G 를 입력하면 바로 해당 라인으로 이동한다.
하지만 입력하는 숫자가 보이지 않으므로 두번째 방법인 마지막행 모드에서 숫자를 입력후 엔터를 치는것을 추천한다.

11. 편집 키 (Command Mode)
c : 삭제 후 입력모드 전환
d : 삭제
y : 복사
p : 붙여넣기


12. 대소문자 변환(Command Mode)
[n]~
작성 후 소문자를 대문자로 또는 대문자를 소문자로 바꿔야 하는 경우가 종종 있다.
~ 를 사용하면 현재 프롬프트의 문자가 대/소문자로 변환되고 옵션으로 숫자를 입력후 ~ 를 입력하면 해당 범위만큼의 문자가 변환된다.


13. 마지막 실행 명령 실행하기
.
"." 을 이용하면 마지막 실행했던 명령을 다시 실행시킬 수 있다.
이 방법을 이용하면 같은 명령어인 경우에 다시 입력시키지 않아도 자동으로 다시 입력되어 실행된다.

14. 문자열 검색
/검색어
n : 다음 일치 단어 찾기
N : 이전 일치 단어 찾기
문자열 검색은 여러 문서나 사이트를 보면 하이라이트로 표시가 된다고 한다.
하지만 하이라이트로 표시가 되지 않는것 같았다.
테스트 환경은 CentOS5의 vi 편집기 7.0.237 이며 GUI 환경과 CUI 환경 그리고 RHEL4에서 테스트를 해보았다.

OS 접근 (Last Line mode)
:sh : vi편집기에서 쉘로 전환
:^D or exit : 쉘에서 vi 편집기로 전환
:! command : OS 명령 사용
:r !command : OS명령의 출력 값을 현재 vi 편집기로 읽어들인다.
vi 편집기를 사용하다가 OS 명령을 사용해야 할 때가 있다. 첫번째 방법은 sh 으로 전환하는것으로 쉘작업을 마치고 쉘에서 ^D 또는 exit 를 입력하면 vi 로 돌아온다.
테스트를 한 환경에서 ^D를 입력하면 전환이 안되고 exit 를 해야 전환이 되었음.



편집기 옵션
:set nu : Line Number 를 표시한다.
:set ts=n : tab키의 칸수를 설정한다. (기본값 8)
:set all : 모든 환경설정값 보여준다.





'Linux & Unix' 카테고리의 다른 글

디스크 추가. 파티션, 포멧, 마운트, 언마운트  (0) 2011.11.30
파일 묶기와 압축  (0) 2011.11.30
파일 및 디렉터리 관리  (0) 2011.09.06
그룹 관리  (0) 2011.09.06
계정 관리  (0) 2011.09.05