컴퓨터 VI Editor 사용법
2004.07.15 17:24
(^ : CTRL , 편집모드: 편집모드에서 해당 명령 실행)
Terminal Type 지정
터미널 형을 지정하는 방법은 각 셸마다 차이가 있다.
C Shell
setenv TERM vt100
Korn Shell, B Shell
TERM=vt100; export TERM
VI 사용 Tip
* macro : map [ctrl-v][up]j
* shift-zz :wq
* <<, >> : sub block indent :set shift width=5
:set indent :pre (자동보관) = vi -r "filename" or :res
* :re 최근 저장된 내용 로딩
* [[, ]] : 전함수 <- ->
* z z. z- : 블럭별..
*Block m[변수이름] :버퍼처음을 변수로 마크
"[변수이름] :버퍼지정
y'[변수이름] : 버퍼저장
y`[변수이름] : 현위치에서 변수이름까지 저장
p(문자뒤)
p(문자앞)
*치환,검색기능
:g/패턴/d 패턴이 있늠 모든 라인 삭제
:g/패턴/nu 패턴이 있는 모든 라인의 번호와 함께 보여줌
:g/^$/d 빈라인 모두 삭제
:%s/*//g 2개 이상의 빈칸으로 치환
:%s/.*/U&/g 모든 문자를 대문자 u 패턴의 글자
:%s/.*/L&/g 모든 문자를 소문자 l 패턴의 글자
:%s/^/this is/ 모든 라인의 처음에 'this is' 삽입
:%s/$/is last/ 모든 라인의 끝에 'is last' 삽입.
:10,50!sort 10->50라인단위 소트
:10!!sort 현라인 -> 10라인 " "
:!10!sort 위와 동일
:r!sort datafile 파일소트후에 현라인 다음에 삽입
:1,$s/패턴/치환패턴/g
:%s/패턴/치환패턴/g
:g/패턴/s//치환패턴/g
<"/" or ":"> g:모두 바꿈 c:묻기
a{2,3} aa나 aaa찾음
[ab]_type
* vi안에서 현재의 모드가 명령 모드인지 삽입 모드인지 화면에 표시하는 방법
vi안에서 :set showmode를 입력하든지(일시적임) 홈디렉토리의 .exrc에 set showmode를 삽입(영구적임)
* 찾기에서 대소문자 구별하지 않게 하는 방법
vi안에서 :set ic 를 입력
* 자주 사용하는 글자를 자동으로 치환되도록 하는 방법
명령 모드에서 ab를 사용하면 된다. vi안에서 :ab atmos atmos@yonsei.ac.kr를 입력하면 ab를 입력할때 마다 ab가 atmos@yonsei.ac.kr로 자동으로 바뀐다.
Terminal Type 지정
터미널 형을 지정하는 방법은 각 셸마다 차이가 있다.
C Shell
setenv TERM vt100
Korn Shell, B Shell
TERM=vt100; export TERM
1. 들어가기
| vi filename | 주어진 파일이름으로 편집을 시작한다.
파일이 존재하지 않으면 새로 만들게 된다. |
| vi +15 filename | 파일을 열때 15 번째 줄로 커서를 보낸다. |
| vi +/sample filename | 'sample' 단어가 있는 라인으로 커서를 보낸다. |
| vi -R filename
view filename |
파일을 읽기 전용으로 읽는다. |
| vi -r filename | 깨진 파일을 복구한다. |
2. 빠져 나가기
| :q
:q! :wq! :wq filename |
아직 변경되지 않은 file의 editing 종료
한번 변경이 가해진 filed을 저장하지 않고 종료 편집된 내용을 저장하고 종료 편집된 내용을 filename으로 저장하고 종료 |
3. 편집
| i
I Ni test ESC |
커서 위치에 입력
커서 위치한 라인의 처음부터 입력 test를 N번 반복 입력 |
| a
A |
커서 오른쪽에 삽입
커서 위치한 라인의 끝에서부터 입력 |
| o
O |
커서가 위치한 라인 아래 새 라인 삽입
커서가 위치한 라인 위에 새 라인 삽입 |
| x
X dw dd dG d1G :5,10 d Ndw 또는 Ndd D 또는 d$ 또는 c$ d) d} |
커서가 있는 문자를 삭제
커서의 앞 문자를 삭제 커서가 있는 단어를 삭제 커서가 있는 라인을 삭제 파일 마지막 부분까지 삭제 파일의 처음부터 커서 위치까지 삭제한다. 5-10번째 줄까지 삭제한다. 커서의 위치에서 N개의 단어/라인을 삭제 커서 위치 이후 그 라인 끝까지 모두 삭제 커서 이후 한 문장 삭제 커서 이후 한 문단 삭제 |
| r
r Enter R s S xp ~ |
커서위치에서 한 문자를 치환
줄을 분리 커서의 위치에서부터 원하는 만큼의 문자 치환 커서 앞쪽의 문자열을 대체 substitute lines 커서 위치의 문자와 오른쪽 문자의 위치를 바꾼다. 대소문자를 변경 |
| cw
cc c Ncw 또는 Ncc |
커서 오른쪽의 단어를 변경
커서 위치의 라인을 바꿈 커서 위치에서부터 그 라인의 끝까지 바꿈 커서위치에서 N개의 단어/라인 바꿈 |
| u
U :u . |
바로 전에 행한 한 번의 명령 취소
현재 행에서 이루어진 모든 명령 취소 이전 마지막줄 명령을 취소 repeat last change |
| Nyl
yw yy 또는 Y Nyw 또는 Nyy p P :1,2 co 3 :4,5 m 6 :n1,n2 y :n1,n2 t n3 :n1,n2 m n3 |
yank N charaters
커서 위치한 단어를 복사 커서가 위치한 라인을 복사 커서가 위치한 라인부터 N단어/라인까지 복사 커서 다음에 복사한 내용을 붙인다. 커서 이전에 복사한 내용을 붙인다. 1-2번째 줄을 복사하여 3번째 줄 다음에 둔다. 4-5번째 줄을 이동하여 6번째 줄 다음에 둔다 n1번 line에서 n2번 line까지를 버퍼에 저장. (버퍼내용을 쓸때는 "p 또는 P") n1번 line에서 n2번 line까지를 n3번째 line 뒤에 복사 n1번 line에서 n2번 line까지를 n3번째 line 뒤로 이동(move) |
| J
Enter |
현재 라인과 다음 라인을 한 라인으로 결합
현재 커서 위치에서 라인을 분리 (편집상태) |
| ^L | 뒤섞인 화면을 지운다.(다시 그린다) |
| ESC | 편집모드종료 |
4. 이동 (명령모드에서 실행)
한 글자 이동 : h(왼쪽으로 한 글자 이동) l(오른쪽으로 한 글자 이동)
한 행 이동 : j(아래로 한 행 이동) k(위로 한 행 이동)
한 화면 이동 : ^f(한 화면 아래로 이동:forward), ^b(한 화면 위로 이동:backward)
반 화면 이동 : ^d(반 화면 아래로 이동:down), ^u(반 화면 위로 이동:up)
한 단어 이동 : w,W(한 단어 앞으로 이동), b,B(한 단어 뒤로 이동)
행 지정 이동 : #G(지정한 행으로 커서를 이동)
행 지정 이동 : G(마지막 행으로 커서를 이동)
| H | |||||||||||
| M |
| $ | |||||||||
| L |
| h, spacebar
j k, backspace l 방향키 |
커서위치에서 한 문자 앞으로 이동
커서위치에서 한 문자 아래로 이동 커서위치에서 한 문자 위로 이동 커서위치에서 한 문자 뒤로 이동 |
| ^f
^b ^d ^u |
한 페이지 아래로 이동
한 페이지 위로 이동 반 페이지 아래로 이동 반 페이지 위로 이동 |
| 0
$ w (cf, Nw) b (cf, Nb) W B |
커서위치 라인의 처음으로 이동
커서위치 라인의 끝으로 이동 커서위치에서 한(N) 단어 앞으로 이동 커서위치에서 한(N) 단어 뒤로 이동 커서위치에서 한 공백 구분 단어 앞으로 이동 커서위치에서 한 공백 구분 단어 뒤로 이동 |
| G
NG 또는 :N 또는 N Enter + Enter |
현재 파일의 제일 마지막 라인으로
이동
N번째 라인으로 이동 다음 라인으로 이동
|
| (,
)
{,} |
한 문장 단위 앞/뒤 이동 (공백2개이상을
한 문장으로 인식)
한 문단 단위 앞/뒤 이동 |
5. 검색 및 치환
| /찾을 문자열
?찾을 문자열 n N |
커서위치에서 아래로 문자열을 검색
커서위치에서 위로 문자열을 검색 다음 문자열로 이동 이전 문자열로 이동 |
| :[s,e]s/old/new
:s/old/new/g :1,$ s/old/new :g/search/s//replace/g |
start라인에서 end라인까지 문자열 치환
전체 파일내에서 문자열 치환 1라인에서 마지막 라인까지 치환 검색하여 대체한다. |
6. 기타 명령
| :se nu
:set number :se nonu :set nonumber :set ic :set noic ^g |
각 라인앞에 일련번호를 표시
각 라인앞에 일련번호를 표시하지 않는다. 검색시 대소문자를 구분하지 않는다.
|
| :ab ttt the | ttt를 the로 상용구 등록 |
| :e filename
:r filename :sh :! command :r !command |
filename 불러와 편집
filename을 불러와 커서 위치에 삽입 shell 나들이 shell 명령어 수행 shell 명령어를 vi 화면내에 출력 |
VI 사용 Tip
(or >) : ~ion
: type으로 나타나는 표현식
vi안에서 :set showmode를 입력하든지(일시적임) 홈디렉토리의 .exrc에 set showmode를 삽입(영구적임)
* 찾기에서 대소문자 구별하지 않게 하는 방법
vi안에서 :set ic 를 입력
* 자주 사용하는 글자를 자동으로 치환되도록 하는 방법
명령 모드에서 ab를 사용하면 된다. vi안에서 :ab atmos atmos@yonsei.ac.kr를 입력하면 ab를 입력할때 마다 ab가 atmos@yonsei.ac.kr로 자동으로 바뀐다.
댓글 0
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 수 | 추천 수 |
|---|---|---|---|---|---|
| 835 | 예송논쟁 | RanomA | 2003.01.14 | 3938 | 0 |
| 834 | 갑자사화와 연산군식의 개혁 | RanomA | 2003.01.14 | 2297 | 0 |
| 833 | 이인화와 영원한 제국 | RanomA | 2003.01.14 | 1636 | 0 |
| 832 |
이상한 신문...
| RanomA | 2003.01.14 | 1023 | 10 |
| 831 | 필요한 건 상상력과 꼼꼼함... 그리고 긴 호흡... | RanomA | 2003.02.02 | 1249 | 0 |
| 830 | 일단 1권 다 읽었음... | RanomA | 2003.02.03 | 1398 | 0 |
| 829 | 추가로 영화와 책의 차이점. | RanomA | 2003.02.04 | 1327 | 0 |
| 828 | 성종이 어우동에게 느꼈던 분노감 | RanomA | 2003.02.11 | 2450 | 0 |
| 827 | 비둘기 가족을 부른 이석이라는 사람... | RanomA | 2003.02.16 | 1571 | 0 |
| 826 | 대한민국의 맘에 안드는 점 하나... | RanomA | 2003.02.19 | 1284 | 0 |
| 825 | 저는 오늘 꽃을 받았어요. [3] | RanomA | 2003.02.23 | 1516 | 0 |
| 824 | 난방보다 냉방이 어려운 이유... | RanomA | 2003.02.24 | 1911 | 0 |
| 823 | 그들이 하고픈 말은... [1] | RanomA | 2003.03.04 | 1210 | 0 |
| 822 | 제로보드와 내 홈피 게시판의 차이... | RanomA | 2003.03.09 | 2271 | 0 |
| 821 |
자료실의 첨부파일 개수가 무한대로...
| RanomA | 2003.03.26 | 1157 | 0 |
| 820 | MySQL 백업관련 명령어 몇 개 | RanomA | 2003.03.28 | 1123 | 0 |
| 819 |
MySQL 매뉴얼
| RanomA | 2003.03.28 | 936 | 14 |
| 818 |
Informix FAQ for Monitor, Tune, Support
| RanomA | 2003.04.08 | 926 | 11 |
| 817 | '근로자의 날'보다는 '노동절'이라고 칭합시다. | RanomA | 2003.04.29 | 981 | 0 |
| 816 | 나이수~~~ 유시민~~~ [2] | RanomA | 2003.04.29 | 1047 | 0 |






