Top

[Linux] VI 명령어 | Web-Programing
김경훈 (admin) | Editor | 2013/07/17 17:25:41 | 조회:3853

 Linux - Vi

------------------------------------------------------------------------------------------
◆ 이동
------------------------------------------------------------------------------------------

k        : 위쪽
j        : 아래쪽
h        : 왼쪽
l        : 오른쪽

G        : 화일의 맨끝
^        : 현재줄의 맨앞 (빈칸무시)
0        : 첫 번째 열로 이동
$        : 현재줄의 맨뒤
%        : 대응되는 괄호로 커서 이동

w        : 다음 단어
b        : 이전 단어
e        : 현재 단어의 끝으로 이동
E        : 현재 단어의 끝으로 이동 (구두점 무시 - 영문자에 해당 - ? . !.)
)        : 다음 문장의 시작으로
(        : 이전 문장의 시작으로
}        : 다음 문단의 시작으로
{        : 이전 문단의 시작으로
]]       : 다음 섹션의 시작으로
[[       : 이전 섹션의 시작으로
>>       : 현재 커서 위치 줄을 오른쪽으로 한 열씩 이동
<<       : 현재 커서 위치 줄을 왼쪽으로 한 열씩 이동

+        : 다음줄의 첫번째 글자로
-        : 윗줄의   첫번째 글자로
n|       : 현재줄의 n 번째 열로 (n은 임의의 숫자) 
H        : 화면상에 처음줄로
M        : 화면상의 중간줄로
L        : 화면상의 마지막줄로
nH       : 화면상의 처음줄로부터 n 줄 밑으로
nL       : 화면상의 마지막줄로부터 n 줄 위로
G        : 맨 마지막줄로 (go)
nG       : n 번째줄로
gg       : 맨 마지막줄로
ngg      : n 번째줄로
:n       : n 번째줄로

Ctrl - f : 한 화면 밑으로 이동
Ctrl - b : 한 화면 위로 이동
Ctrl - d : 반쪽 화면 밑으로 이동
Ctrl - u : 반쪽 화면 위로 이동

Ctrl - e : 커서는 현재위치 그대로 화면만 한줄씩 위로 이동
Ctrl - y : 커서는 현재위치 그대로 화면만 한줄씩 아래로 이동

z        : 커서의 위치와 함께, 화면상의 맨위로
nz       : n번 라인을 화면상의 맨위로
z.       : 커서의 위치와 함께, 화면상의 중간으로
z-       : 커서의 위치와 함께, 화면상의 맨아래로


------------------------------------------------------------------------------------------
◆ 편집
------------------------------------------------------------------------------------------

▶ 편집모드 지정하기
i        : 현재 커서 위치에 입력
I        : 현재 커서 위치 줄의 맨 앞에 입력 
a        : 현재 커서 위치 다음에 입력 
A        : 현재 커서 위치 줄의 맨 끝에 입력 
o        : 현재 줄 아래에 새 줄 입력 
O        : 현재 줄 위에 새 줄 입력
10i*     : * 문자를 10개 집어넣기
25i=-    : =- 를 25개 반복하기

▶ 복사, 붙이기, 합치기
y        : 복사
yy       : 한 줄을 복사 (0y$와 동일)
2yy      : 두줄복사
nyy      : n줄 복사
yh       : 커서 왼쪽 문자 복사 
yl       : 커서에 있는 문자 복사 
yb       : 커서 왼쪽 단어 복사 
yw       : 커서 오른쪽 단어 복사 
yB       : 커서 왼쪽 비공백 단어 복사 
yW       : 커서 오른쪽 비공백 단어 복사 
yw       : 한단어 복사
y2w      : 두단어 복사
y$       : 커서부터 줄의 끝까지 복사 
y0(y^)   : 커서 왼쪽부터 줄의 처음까지 복사 
yG       : 문서의 끝까지 복사
Y        : yy 와 동일
p        : 복사한 문자를 커서 오른쪽 또는 아래줄에 붙여넣기
P        : 복사한 문자를 커서 왼쪽 또는 윗 줄에 붙여넣기
2p       : 아래로(오른쪽으로) 두번 붙이기
2P       : 위로(왼쪽으로) 두번 붙이기
J        : 현재 커서 위치 줄과 다음 줄을 합침 
3J       : 세줄합치기
Shift+v  : block 지정하기

▶ 지우기, 복구하기, 바꾸기
r        : 현재 커서 위치 문자를 다른 문자로 변경 (replace)
R        : 현재 커서 위치부터 원하는 만큼 다른 문자로 변경 
2r       : 두글자 바꾸기

- r 명령어는 insert 모드로 바뀌지 않는다.

x        : 커서에 있는 문자 삭제 (dh와 동일) 
X        : 커서 왼쪽 문자 삭제 (dl과 동일)
d        : 삭제
dd       : 한줄을 삭제 (0d$와 동일)
2dd      : 두줄 삭제
ndd      : n줄 삭제
db       : 커서 왼쪽 단어 삭제 
dw       : 커서 오른쪽 단어 삭제 
dB       : 커서 왼쪽 비공백 단어 삭제
dW       : 커서 오른쪽 비공백 단어 삭제
d$, D    : 커서부터 줄의 끝까지 삭제
d0       : 커서 왼쪽부터 줄의 처음까지 삭제
d2w      : 두단어 삭제
dG       : 문서 끝까지 삭제

u        : (Undo) 실행취소
U        : 현재 줄에서 실행한 모든 vi 명령모드 명령어 취소
2u       : 두번 실행취소

c        : (Change) 바꾸기
cc, S    : 한 줄을 변경 (0c$와 동일)
2cc      : 두줄 바꾸기
cb       : 커서 왼쪽 단어 변경 
cw       : 커서 오른쪽 단어 변경 
ch       : 커서 왼쪽 문자 변경
cl, s    : 커서에 있는 문자 변경 
ncc      : 여러줄 바꾸기 (n 은 임의의숫자)
ce       : 한단어 바꾸기 (공백 제외)
c2w      : 두단어 바꾸기
c$, C    : 커서부터 줄의 끝까지 변경
c0(c^)   : 커서 왼쪽부터 줄의 처음까지 변경 
~        : 대문자 <-> 소문자 바꾸기 (영문자에만 해당)

#  지우기와 바꾸기의 차이점은 바꾸기 명령어 후에  vi 편집모드로 바뀐다.

▶ 버퍼 이용하기
"xyy     : x 라는 이름의 버퍼에 한줄 복사 하기
"xp      : x 라는 이름의 버퍼에 저장된 내용을 붙이기

▶ ex 명령어
# ex 명령어의 기본형식 
:k,l command m
(범위지정) (명령어) (명령이 수행될 위치)
----------------------------------------
command
- co : 복사
- m  : 이동
- d  : 삭제

:1,10 co 50               : 1~10 줄까지 50 줄 이후로 복사
:34,50 d                  : 34~50 줄까지 삭제
:100,150 m 10             : 100~150 줄까지 10 줄 이후로 이동
:.,$ d                    : 현재줄부터 끝까지 삭제
:.,+20 co -4              : 현재줄부터 20줄을, 4줄 위에 복사
:-,+ t 0                  : 위, 아래로 한줄(총 3줄)씩을, 문서 맨위에 복사

:g/pattern                : 화일전체에서 마지막으로 pattern 이 쓰여진 줄로 커서이동
:g/pattern/ p             : 화일전체에서 pattern 이 있는줄 표시
:g/pattern/ nu            : 화일전체에서 patterm 이 있는줄을 번호와 함께 표시

:60,124 g/pattern/ p      : 60,124 줄 사이에서 pattern 이 들어있는줄 표시

:/pattern/ d              : pattern 이 들어있는 줄 삭제
:/pattern/ -nd            : pattern 이 들어있는 줄로부터 n 번째 윗줄 삭제
:/pattern/ +nd            : pattern 이 들어있는 줄로부터 n 번째 아랫줄 삭제

:/pattern1/,/pattern2/ d  : pattern1 이 들어있는 줄부터, pattern2 가 들어있는 줄까지 삭제

:.,/pattern/ m 23         : 현재줄부터 pattern 이 들어있는 줄까지, 23번줄 이후로 이동

▶ 다중편집하기

shell> vi file1 file2 file3
:args    : 편집중인 화일목록 보여주기
:n       : 다음 화일로 넘어가기
:prev    : 이전화일로 돌아가기
- 편집중인 화일이 저장되지 않으면 다음 화일로 넘어갈수 없다.

:e file_name : 새로운 file_name 편집
:e!          : 현재의 편집중인 내용을 무시하고 가장 최근에 편집한 내용을 다시편집

▶ 마지막 명령어의 반복
.        : 마지막에 수행한 명령어를 반복
2.       : 명령어를 2번 반복


------------------------------------------------------------------------------------------
◆ 검색 및 치환
------------------------------------------------------------------------------------------

▶ 찾기
/pattern : pattern 이라는 단어 찾기 (아래로)
?pattern : pattern 라는 단어찾기 (위로)

/        : 찾기반복 - 아래로 
?        : 찾기반복 - 위로
n        : 같은 방향으로 계속 찾기 
N        : 반대 방향으로 계속 찾기

fx       : 현재줄에서 x문자 찾기 (x 는 한개의 글자)
Fx       : 현재줄에서 반대방향으로 x문자 찾기 (x 는 한개의 글자)
tx       : 현재줄에서 x문자를 찾아서 바로전에 커서놓기
Tx       : 현재줄에서 반대방향으로 x문자를 찾아서 바로후에 커서놓기

;        : 현재줄에서 한글자 찾기반복 
'        : 현재줄에서 한글자 찾기반복 (반대방향으로)

▶ 찾기와 편집명령의 응용
d/simple : simple 이라는 단어가 나올때까지 삭제
d/^scully: 줄의 맨앞에 scully 라는 단어가 나올때까지 삭제
y/yahoo  : yahoo 라는 단어가 나올때까지 복사

▶ 치환
:m,n         : s/old/new/g
:g/pattern/  : s/old/new/g

:1,30 s/his/the/gc      : 1 줄부터 30 줄까지 his 를 the 로 바꾸면서 확인
:g/BX/ s/Esc/ESC/g      : BX가 있는줄만 찾아서 Esc 를 ESC 로 바꾸기
:% s/editer/editor/g    : 처음줄부터 마지막줄까지, editer 를 editor 로 바꾸기
:g/editer/ s//editor/g  : 위와 동일("s/" 다음에 인자가 없어서 윗줄과 같은효과)


------------------------------------------------------------------------------------------
◆ 기타
------------------------------------------------------------------------------------------

Ctrl - g : 파일이름, 현재 줄 번호, 열 번호 등의 정보 표시 
Ctrl - l : 화면 재표시
Ctrl - r : 화면 재표시

▶ 저장 및 종료하기
:w      : 저장
:q      : 종료
:wq     : 저장 후 종료
:x      : wq 와 동일
:w!     : 강제 저장 (read-only 로 열었을경우)
:q!     : 강제 종료 (저장하지 않음)

:w new_file_name     : 새 파일이름으로 저장
:w %.new             : 현재화일 이름에 .new 를 붙여서 새로운 화일로 저장
:230,$ w file_name   : 230 줄부터 끝줄까지 file_name 으로 저장
:.,600 w file_name   : 현재줄부터 600줄까지 file_name 으로 저장
:1,10 w new_file     : 1줄부터 10줄까지 new_file 로 저장
:340,$ w >> new_file : 340줄부터 끝줄까지 new_file 에 추가

▶ 정규식
.       :  임의의 한글자
*       :  0 개 이상의 글자
^       :  줄의 시작
$       :  줄의 끝
%       :  처음줄부터 끝줄까지
       :  이스케이프
[ ]     :  번위지정
[a-z]   :  a ~ z
[A-Z]   :  A ~ Z
[AB]    :  A or B
[0-9]   :  0 ~ 9

▶ 환경설정 
:set nu      : 줄번호 표시
:set nonu    : 줄번호 표시안함
:=           : 현재 줄번호 표시
:/pattern/ = : pattern 이 위치한 줄번호 표시
:set tabstop : 탭의 크기
:set showmode : 현재의 mode 상태를 알려줌

▶ 위치 기억하기
mx      : mark 현재의 커서위치를 x 라는 문자로 기억
`x      : 기억된 x 위치로 이동
``      : 이동하기 전의 위치로 (제자리)
'x      : 기억된 x 위치의 맨 앞으로 이동
''      : 이동하기 전 위치의 맨앞으로 이동

▶ 읽기
:r filename                   : 현재위치에 filename 읽어들이기
:r /usr/local/data            : 현재위치에 /usr/local/data 읽어들이기
:185 r /usr/local/data        : 185줄 이후에 /usr/local/data 읽어들이기
:$ r /usr/local/data          : 맨끝줄 이후에 /usr/local/data 읽어들이기
:0 r /usr/local/data          : 맨윗줄에 /usr/local/data 읽어들이기
:/pattern/ r /usr/local/data  : pattern 이 존재하는 줄에 /usr/local/data 읽어들이기

공유하기
공유하기
3
0
0


댓글을 불러오는 중입니다.
▲ 이전글 [Linux] vi 필수 명령어 모음 김경훈 (admin) 2013-07-17 17:30:09
▼ 다음글 [HTML] FLASH 와 <DIV> 사용시 z-index 문제 김경훈 (admin) 2013-07-17 13:44:06