vi 편집기는 Unix와 Linux 에서 가장 널리 쓰이는 편집기이다.
vi 편집기를 실행하면 command mode(명령행 모드) 상태로 시작하게 된다.
상태의 변환은 아래와 같이 특정 키를 눌르면 mode가 전환된다.
1. 새 문서 열기
# vi
# vi [새 파일 이름 ...]
새로운 문서를 생성하기 위해서는 두가지 방법이 있다.# vi [새 파일 이름 ...]
첫번째 방법은 그냥 vi 편집기를 실행시키고 저장하는 것이고 두번째는 새 파일이름을 입력하고 실행하면 입력한 파일이름으로 생성을 해준다.
첫번째 방식으로 실행을 하면 vi 의 정보가 표시된다.
만약 여러개의 문서를 한꺼번에 생성하고자 한다면 vi 뒤에 이름을 공백으로 구분하여 파일을 여러개 입력하면 된다. 생성한 파일을 이동하려면 Last Line Mode 에서 :n(다음) 또는 :N(이전)으로 이동할 수 있다.
2. 편집할 문서 열기
vi [파일명] : 편집할 문서 열기
vi [+n] 파일명 : 편집 할 문서의 n번째 라인에 프롬프트 이동 후 열기
vi [파일명, ...] : 다중파일 열기
vi [+n] 파일명 : 편집 할 문서의 n번째 라인에 프롬프트 이동 후 열기
- 파일명 필수, "+n" 사이에 공백이 없어야 한다.
vi [+/키워드] 파일명 : 편집 할 문서의 내용 중 키워드를 검색하여 맞는 단어로 프롬프트를 이동 후 열기
- 파일명 필수, +/와 키워드 사이에는 공백이 없어야 한다.
vi [-R] 파일명 : 읽기 전용으로 문서 열기
vi [+/키워드] 파일명 : 편집 할 문서의 내용 중 키워드를 검색하여 맞는 단어로 프롬프트를 이동 후 열기
- 파일명 필수, +/와 키워드 사이에는 공백이 없어야 한다.
vi [-R] 파일명 : 읽기 전용으로 문서 열기
vi [파일명, ...] : 다중파일 열기
예제
★주의★
만약 특정 파일을 열어서 수정해야 할 때 실수로 존재하지 않은 파일명을 입력하게 된다면 새 문서 열기가 되어 버린다. 맞는 파일인지 확인하는 습관을 가져야 한다.
만약 특정 파일을 열어서 수정해야 할 때 실수로 존재하지 않은 파일명을 입력하게 된다면 새 문서 열기가 되어 버린다. 맞는 파일인지 확인하는 습관을 가져야 한다.
열린 파일간 이동
:n : 다음 파일로 이동
:N : 이전 파일로 이동
:args : 현재 파일명 표시
파일의 생성 및 편집을 여러개의 파일을 한꺼번에 열고 서로간의 문서를 위의 명령어로 이동하며 편집이 가능하다.:N : 이전 파일로 이동
:args : 현재 파일명 표시
3. 문서복구
요즘은 윈도우에서 한글이나 워드를 사용할 때 예기치 못한 상황으로 저장하지 못하고 비정상 종료가 되어도 별 걱정이 없다. 다시 실행하면 작업중이던 문서를 보여주기 때문인데 vi 에디터도 이러한 기능이 있다.
작업중이던 내용은 swp 파일로 저장되어 있어 복구가 가능하다.
#vi -r 파일명
4. 문서저장과 vi 편집기 종료 (Last Line Mode)
:w[!] : 문서저장 [강제]
:q[!] : vi 종료 [강제]
:wq[!] : 저장후 vi 종료[강제]
:ZZ[!] : 저장후 vi 종료[강제]
:q[!] : vi 종료 [강제]
:wq[!] : 저장후 vi 종료[강제]
:ZZ[!] : 저장후 vi 종료[강제]
:q는 vi 종료인데 문서를 수정중에 이 명령을 실행하면 수정된 문서를 저장하지 않았으므로 종료가 되지 않는다.
종료를 하려면 문서를 저장하던지 뒤에 "!"를 붙여서 강제종료를 해야 한다. 편집한 내용은 저장되지 않는다.
5. 입력모드 (Command Mode)
i : 현재 프롬프트가 위치한 곳에서 입력모드가 전환.
I : 현재 프롬프트가 위치한 라인의 맨 처음으로 이동후 전환.
a : 현재 프롬프트가 한칸 오른쪽으로 이동한 후 입력모드 전환.
A : 현재 프롬프트가 위치한 라인의 맨 끝으로 이동후 전환.
o : 현재 프롬프트가 위치한 라인의 다음라인에 줄 삽입후 입력모드 전환
O : 현재 프롬프트가 위치한 라인의 이전 라인에 줄 삽입후 입력모드 전환
s : 현재 프롬프트의 한글자 삭제 후 입력모드 전환
S : 현재 프롬프트의 행 삭제후 입력모드 전환
R : 수정 모드로 입력모드 전환
I : 현재 프롬프트가 위치한 라인의 맨 처음으로 이동후 전환.
a : 현재 프롬프트가 한칸 오른쪽으로 이동한 후 입력모드 전환.
A : 현재 프롬프트가 위치한 라인의 맨 끝으로 이동후 전환.
o : 현재 프롬프트가 위치한 라인의 다음라인에 줄 삽입후 입력모드 전환
O : 현재 프롬프트가 위치한 라인의 이전 라인에 줄 삽입후 입력모드 전환
s : 현재 프롬프트의 한글자 삭제 후 입력모드 전환
S : 현재 프롬프트의 행 삭제후 입력모드 전환
R : 수정 모드로 입력모드 전환
6. 실행취소 Undo (Command Mode)
u : 작업했던 내용을 취소한다. 윈도우의 Control + z 와 유사한 기능.
7. 프롬프트의 이동 (Command Mode)
환경에 따라 키보드의 방향키가 입력이 안되는 경우가 있다. 그런 경우에 명령행 모드에서 아래의 조작으로 프롬프트를 이동할 수 있다.
h : ←
j : ↓
k : ↑
l : →
j : ↓
k : ↑
l : →
8. 단어 단위 이동 (Command Mode)
[n]w : 현재 프롬프트를 기준으로 오른쪽으로 [n개] 단어이동
[n]b : 현재 프롬프트를 기준으로 왼쪽으로 [n개] 단어 이동
[n]b : 현재 프롬프트를 기준으로 왼쪽으로 [n개] 단어 이동
명령행 모드에서 w, b를 누르면 단어단위 이동이 가능하다.
이때 옵션인 숫자(n)를 넣으면 해당 개수만큼 이동한다.
10. 행 이동(Command Mode)
nG : 명령행모드 (Command mode)
:n 마지막행 모드(Last Line mode)
:n 마지막행 모드(Last Line mode)
첫번째방법은 명령행 모드에서 그냥 숫자를 입력하고 대문자 G 를 입력하면 바로 해당 라인으로 이동한다.
하지만 입력하는 숫자가 보이지 않으므로 두번째 방법인 마지막행 모드에서 숫자를 입력후 엔터를 치는것을 추천한다.
11. 편집 키 (Command Mode)
c : 삭제 후 입력모드 전환
d : 삭제
y : 복사
p : 붙여넣기
12. 대소문자 변환(Command Mode)
[n]~
작성 후 소문자를 대문자로 또는 대문자를 소문자로 바꿔야 하는 경우가 종종 있다.~ 를 사용하면 현재 프롬프트의 문자가 대/소문자로 변환되고 옵션으로 숫자를 입력후 ~ 를 입력하면 해당 범위만큼의 문자가 변환된다.
13. 마지막 실행 명령 실행하기
.
"." 을 이용하면 마지막 실행했던 명령을 다시 실행시킬 수 있다. 이 방법을 이용하면 같은 명령어인 경우에 다시 입력시키지 않아도 자동으로 다시 입력되어 실행된다.
14. 문자열 검색
/검색어
n : 다음 일치 단어 찾기
N : 이전 일치 단어 찾기
문자열 검색은 여러 문서나 사이트를 보면 하이라이트로 표시가 된다고 한다.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 or exit : 쉘에서 vi 편집기로 전환
:! command : OS 명령 사용
:r !command : OS명령의 출력 값을 현재 vi 편집기로 읽어들인다.
테스트를 한 환경에서 ^D를 입력하면 전환이 안되고 exit 를 해야 전환이 되었음.
편집기 옵션
:set nu : Line Number 를 표시한다.
:set ts=n : tab키의 칸수를 설정한다. (기본값 8)
:set all : 모든 환경설정값 보여준다.
: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 |