본문 바로가기
工夫/Linux

vi editer 사용법

by 치세 2009. 6. 28.

vi
대기mode
입력mode

line mode
======== 저장 x 종료
:q
:q!

======== 저장
:w
:w aaa

======== 저장 O 종료
:wq
:x
대기mode에서 shift + zz

edite mode
i (esc) a (esc) s (esc) o (esc)
I (esc) A (esc) S (esc) O (esc)

i  커서가 위치한 곳 부터 입력
a  커서 바로 뒤 부터 입력
s  커서가 위치한 문자를 삭제 후 입력
o  커서가 위치한 곳 아래로 들여쓰기

커서가 위치한 라인의 가장 앞으로 이동하여 입력
A  커서가 위치한 라인의 가장 뒤로 이동하여 입력
S  커서가 위치한 라인을 삭제 후 입력
O  커서가 위치한 라인의 위쪽으로 들여쓰기
 
=====삭제
x   현재 커서위치 부터 뒤에 정보를 삭제 (단, 내용물이 뒤쪽에 없을 경우 앞에 내용물을 삭제한다.)
X   현재 커서위치 앞 부터 앞으로 정보를 삭제 ( 단, 내용물이 앞쪽에 없을 경우 뒤의 내용물을 삭제한다.)

nx (n개의 문자 만큼 삭제)
nX

d   (delete)
dd(D)      line delete
ndd  = nD
dnd        n개의 line delete

dw(word)
ndw    n개의 word delete
dnw

d^ 현재 커서의 앞 부분 부터 라인의 처음 까지 삭제
d$      현재 커서의 위치 부터 라인의 끝 까지 삭제
dG 현재 커서가 위치한 라인을 포함 파일의 끝 까지 삭제

========== 복사
y (yank)
yy(Y)      line yank
nyy  = nY
yny        n개의 line yank
yw(word)
nyw    n개의 word yank
ynw

y^ 현재 커서의 앞 부분 부터 라인의 처음 까지 복사
y$      현재 커서의 위치 부터 라인의 끝 까지 복사
yG 현재 커서가 위치한 라인을 포함 파일의 끝 까지 삭제

============== 붙여넣기
p

============== 잘라내기
c   (cut)  명령을 실행을 하면 바로 입력환경이 되므로 바로 붙여넣기를
사용하려면 esc 로 대기모드로 이동후 붙여넣기를 한다.

cc(C)      line cut
ncc  = nC
cnc        n개의 line cut
cw(word)
ncw    n개의 word cut
cnw

c^ 현재 커서의 앞 부분 부터 라인의 처음 까지 잘라내기
c$      현재 커서의 위치 부터 라인의 끝 까지 잘라내기
cG 현재 커서가 위치한 라인을 포함 파일의 끝 까지 잘라내기

========== 이동
대기모드에서
^   라인의 가장 앞으로 이동 (공백이 아닌 처음시작되는 문자)
^F  한 화면 을 앞으로 스크롤
^B  한 화면 을 뒤로 스크롤
^D  반 화면 을 앞으로 스크롤
^U  반 화면 을 뒤로 스크롤
^E  한줄 앞으로 스크롤
^Y 한줄 뒤로 스크롤
Shift + h 화면의 맨 윗줄로
Shift + m 화면의 중간줄로
Shift + l 화면의 맨 아랫줄로

$   라인의 가장 끝으로 이동
G   파일내용의 가장 아래로 이동
gg  (vim 에서는 파일내용의 가장 위로 이동)

h   왼쪽으로 이동
j   아래로 이동
k   위로 이동
l   오른쪽으로 이동

- 줄의 처음으로 옮김
e, E 다음단어의 끝으로, 문자단위 이동
w, W 다음단어의 처음으로, 문자단위 이동
0 줄의 처음으로
Shift+g 문서의 마지막으로 이동한다.
gg, 1g 문서의 처음으로 이동한다. 1대신 다른 숫자를 입력하면 해당 숫자의 라인으로 이동한다.
), ( 다음, 이전 문장의 처음으로
}, { 다음, 이전문단의 처음으로
]], [[ 다음, 이전 구절의 처음으로

명령모드에서
:n  라고 치면 라인 넘버로 이동

명령모드에서
:set nu   line number
:set nonu line number 감추기

(vim  color 옵션이 셋팅되어 있는 에디터에선 검색에서 라인색깔이 삭제안되는 경우가 있다. 이때 검색 라인색깔을 삭제 하는 명령은 명령모드에서 :nohl 이다.)

==========  검색
( 검색은 정규화 표현식을 이용하여 좀더 정교한 패턴을 만들수 있다.
/   아래로 검색    n  아래로 검색  N  위로 검색
?   위로 검색      n  위로 검색    N  아래로 검색
n  : next   <->  N

===========  범위 지정
:n,m    n라인부터 m 라인까지
:5,10d    5~10 라인까지 삭제
:5,10y
:5,10c

===========  치환
:n,ms/찾을내용/바꿀내용/g
찾을 내용과 바꿀내용은 정규화 표현식을 이용하여 좀더 정교하게 필터링 할 수 있다.
:5,10s/root/super/g

===========  선택 치환
:n,ms/찾을내용/바꿀내용/gc
선별적으로 치환
:5,10s/root/super/gc

질문
y    바꾸겠다.
n    바꾸지 않겠다.
a    현재 커서위치부터 모두 바꾸겠다.
q    현재 커서위치 부분을 변경하지 않고 종료
l    현재 커서위치까지 변경하고 종료
(vim에서는 page 정보에 대한 up down 명령어도 포함 되어있다.)

vi aaa bbb

vi -o aaa bbb

댓글