yunsh206

회원가입로그인

컴퓨터 VI Editor 사용법

2004.07.15 17:24

RanomA 조회 수:1038

(^ : CTRL , 편집모드: 편집모드에서 해당 명령 실행)

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
k
hl
j
$
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

* macro : map [ctrl-v][up]j<CR> * 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<CR> 패턴이 있늠 모든 라인 삭제 :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 <Pre Pre .. 모든 단어 ion^>(or >) : ~ion <type> : 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로 자동으로 바뀐다.

번호 제목 글쓴이 날짜 조회 수 추천 수
835 리눅스 새 하드 장착하기 RanomA 2021.12.01 600 0
834 리눅스 SSH Network error: Software caused connection abort RanomA 2021.05.29 2018 0
833 인터넷 기본 설정 복원 창 띄우는 방법들 file RanomA 2021.05.01 1024 0
832 리눅스 디렉토리별 압축 파일 생성 쉘 스크립트 RanomA 2021.04.04 831 0
831 Javascript 숫자에 끊어 읽기 컴마(,) 추가 RanomA 2020.11.27 752 0
830 Javascript 문자열을 포맷 맞춰 날짜로, 날짜를 포맷 맞춘 문자열로 변환 RanomA 2020.11.26 719 0
829 Javascript 날짜 더하기 RanomA 2020.11.26 451 0
828 Javascript 해당 연월의 마지막 날짜 가져오기 RanomA 2020.11.25 365 0
827 Javascript isNullOrEmpty RanomA 2020.11.25 686 0
826 Javascript 전화번호 포매팅 RanomA 2020.11.25 2309 0
825 Javascript IN RanomA 2020.11.18 261 0
824 Javascript LPAD RanomA 2020.11.17 582 0
823 Adobe Creative Cloud 업데이트 실패 184(혹은 C184) 오류 file RanomA 2020.09.08 1072 0
822 오라클 테이블 레이아웃 조회 Query RanomA 2020.01.13 2064 0
821 SQL Developer의 폰트 설정에서 폰트 목록이 안나타날 때 [6] file RanomA 2019.12.30 4876 0
820 Underscore( _ 문자)를 카멜 케이스(Camel Case)로 변환하기 RanomA 2019.12.06 1815 0
819 라이트룸(Adobe Lightroom) 한자/일본어용 폰트 변경 file RanomA 2018.06.06 2144 0
818 마녀의 빗자루와 악마와의 파티 RanomA 2018.03.23 891 0
817 크레인 안전 점검이 허술해진 게 이명박 때가 아니다? RanomA 2018.01.06 709 0
816 인도 중국의 분쟁 지역 file RanomA 2017.08.17 1295 0