vi editor(리눅스 편집기) 단축키 모음
1.1 커서의 위치를 움직이는 명령(Move commands)
N에 *가 있는 경우 숫자를 사용할 수 있고, -의 경우 사용할 수 없다.
N |
명령어 |
기능 |
* |
h or ^H or |
vi editor(리눅스 편집기) 단축키 모음
1.1 커서의 위치를 움직이는 명령(Move commands)
N에 *가 있는 경우 숫자를 사용할 수 있고, -의 경우 사용할 수 없다.
N |
명령어 |
기능 |
* |
h or ^H or |
커서를 한칸(N칸) 왼쪽으로 이동시킨다. |
* |
j |
커서를 한행(N행) 아래로 이동시킨다. |
* |
l or |
커서를 한칸(N칸) 오른쪽으로 이동시킨다. |
* |
k or ^P |
커서를 한행(N행) 위로 이동시킨다. |
* |
$ |
커서가 위치한 행(N번째 행)의 끝으로 이동한다. |
- |
^ |
커서가 위치한 행의 처음으로 이동한다. |
* |
+ or |
다음행(N행 아래)의 처음으로 이동한다. |
- |
0 |
커서가 위치한 행의 처음으로 이동한다. |
* |
| |
N번째 column으로 이동한다. |
* |
f |
오른쪽으로 N번째 char를 찾는다. |
* |
F |
왼쪽으로 N번째 char를 찾는다. |
* |
w |
커서부터 오른쪽 N번째 단어의 첫부분. |
* |
W |
커서부터 오른쪽 N번째 WORD(tab,space,linefeed 뒤에 있는 단어)의 첫부분. |
* |
{ |
N개의 paragraphs 앞으로. |
- |
n |
가장 최근의 `/'|`?' 를 반복한다. |
- |
N |
n을 반대방향으로의 수행. |
- |
% |
Braket( { } or [ ] or ( ) )을 찾고 그것의 match를(괄호가 닫힌 쌍)찾는다. |
1.2 찾기(Searching)
/<</SPAN>문자열> |
다음으로 <</SPAN>문자열>이 나오는 위치로. |
?<</SPAN>문자열> |
/를 반대방향으로 수행. |
:[x,y]g/<</SPAN>문자열>/<</SPAN>명령어> |
x에서 y까지 <</SPAN>문자열>을 찾고(globally) <</SPAN>명령어>를 실행한다. |
:[x,y]v/<</SPAN>문자열>/<</SPAN>명령어> |
x에서 y까지 문자열과 match되지 않는 라인에 <</SPAN>명령어>를 실행한다. |
1.3 취소(Undoing changes)
u |
가장 최근에 한 작업을 취소한다. |
U |
만약 작업을 한 라인에서 벗어나지 않았다면, 그 라인에서 한 작업들을 모두 취소한다. |
:q! |
Save하지 않고 vi를 끝낸다. |
:e! |
현재 편집중인 화일을 버리고 다시 편집한다. |
1.4 문자열 삽입(Appending text)
1. 를 누르면 삽입 작업이 끝난다.
2. N에 *가 있는 경우 숫자를 사용할 수 있고, -의 경우 사용할 수 없다.
* |
a |
커서의 오른쪽에 쓰기 시작한다. |
* |
A |
커서가 위치한 라인의 맨 끝에 쓰기 시작한다. |
* |
i |
커서의 위치부터 쓰기 시작한다. |
* |
I |
커서가 위치한 라인의 맨 처음부터 쓰기 시작한다. |
* |
o |
커서가 위치한 라인 밑에 새로운 라인을 만들고 거기에 쓰기 시작한다. |
* |
O |
커서가 위치한 라인 위에 새로운 라인을 만들고 거기에 쓰기 시작한다. |
* |
. |
앞에 실행했던 명령을 N번 반복한다. |
1.5 문자열 삭제(Deleting text)
지운 것은 모두 buffer에 저장할 수 있다. 일단 지우는 명령을 실행하기 전에 "를 치고 a-z 중간의 한 문자를 치면 지운 것이 그 문자에 해당하는 buffer에 저장되게 된다. 참고로 Undo buffer는 가장 최근에 바꾼 것만 저장하게 되고, 1-9에 해당하는 buffer는 가장 최근의 9라인을 지운 것을 저장하게 된다.
* |
x |
커서 오른쪽의 N개의 문자를 지운다. |
* |
X |
커서 왼쪽의 N개의 문자를 지운다. |
* |
d |
커서가 위치한 곳에서부터 로 인해 움직인 위치까지 지운다. |
* |
dd |
커서의 위치로부터 밑으로 N개의 라인을 지운다. |
- |
D |
커서의 위치로부터 오른쪽의 문자를 모두 지운다. |
* |
. |
최근에 실행했던 명령을 N번 반복한다. |
1.6 문자열 수정(Changing text)
를 누르면 바꾸는 작업이 끝난다.
* |
r |
커서의 위치로부터 N개의 문자를 로 바꾼다. |
* |
R |
라인의 나머지를 덮어쓴다. |
* |
s |
N개의 문자를 교체한다. |
* |
S |
N개의 라인을 교체한다. |
* |
c |
커서의 위치로부터 의 위치까지 바꾼다. 예를 들어 cw는 한 단어를 바꾸는 명령이다. |
* |
cc |
N개의 라인을 바꾼다. |
* |
C |
라인의 나머지 부분을 바꾼다. |
- |
~ |
대문자와 소문자를 각각 소문자와 대문자로 바꾼다. |
* |
J |
N개의 라인을 연결한다. |
* |
. |
가장 최근의 명령을 N번 반복한다. |
- |
& |
가장 최근의 `ex'의 교체명령을 반복한다. |
- |
:[x,y]s/ // |
x번째 라인에서 y번째 라인까지 의 문자열을 이라는 문자열로 교체한다. 는 여러가지 옵션인데, c는 확인을 요하는 옵션이고 g는 무조건 교체하라는 옵션이다. |
1.7 저장, 다른 화일의 편집, vi를 끝내기
:q |
Buffer가 변하지 않은 경우 vi를 끝낸다. |
:q! |
강제로 vi를 종료한다. |
^Z |
vi를 종료한다. |
:w |
화일에 저장한다. |
:w <</SPAN>화일명> |
<</SPAN>화일명>으로 저장한다. |
1.8 다른 명령계통으로의 전환 및 shell 명령어의 사용.
(Switch and shell commands)
Q |
vi에서 ex 명령으로 전환한다. |
: |
ex명령어를 vi상에서 사용할 수 있게 한다. |
:vi |
ex 에서 vi로 전환한다. |
:sh |
잠시 shell환경으로 나간다. 다시 vi로 돌아오려면 exit를 치면 된다. |
Vi 명령어 일람
텍스트 삭제 명령어 |
작업설명 |
|
x 5x dw dd 5dd db D :5,10d |
커서가 있는 문자 삭제 커서가 있는 위치부터 5개의 문자를 삭제 현재 커서에 있는 한 단어 삭제 커서가 있는 라인 삭제 커서가 있는 라인부터 5개의 라인 삭제 커서의 위치에서 거꾸로 한 단어 삭제 커서 오른쪽 행 삭제 5~10번째 행 삭제 |
|
복사 및 이동 명령어 |
작업설명 |
|
yy Y p P :1,2 co 3 :4,5 m 6 |
행 yank 또는 복사 행 yank 또는 복사 yank 되거나 삭제된 행 현재 행 위로 삽입 yank 되거나 삭제된 행 현재 행 아래에 삽입 1~2행을 3행 다음으로 복사 4~5행을 6행 위로 이동 |
|
행 번호 설정 명령어 |
작업설명 |
|
:set nu :set nonu |
행 번호 표시 행 번호 숨기기 |
|
행 찾기 명령어 |
작업설명 |
|
G 21G Ctrl + G |
파일의 마지막 행으로 가기 파일의 21번째 행으로 가기 현재 File name과 커서의 라인 정보 |
|
탐색 및 대체 명령어 |
작업설명 |
|
/검색할 문자열/ ?검색할 문자열? n N :g/search-string/s/ /replace-string/gc :s/str/rep :1,.s/str/rep/ :%s/str/rep/g :.$/aaa/bbb |
오른쪽 아래 방향으로 문자열 검색 왼쪽 위 방향으로 문자열 검색 문자열의 다음으로 계속 검색 문자열의 이전으로 계속 검색 각 발생 탐색 후 확인하고 대체
현재 행의 str을 rep로 대체 1부터 현재 행의 str을 rep로 대체 파일 전체 str을 rep로 전부대체 커서의 위치로부터 파일의 끝까지 있는 모든 aaa를 bbb로 대체 |
|
화면 정리 명령어 |
작업설명 |
|
Ctrl + l |
불필요한 화면정리 후 다시 표시 |
|
파일 명령어 |
작업설명 |
|
:r filename :34 r filename |
커서 다음에 파일 삽입 파일을 34번째 행 다음에 삽입 |
|
vi 시작 명령어 |
작업설명 |
|
vi filename vi +18 filename vi +/”문자열” fn vi –r filename view filename |
파일열기, 작성 18행으로 파일 열기 “문자열”의 처음발생 단어부터 열기 손상된 파일 회복 읽기 전용 |
|
vi 커서 이동 |
|
|
h(¬) j(¯) k() l(?) |
왼쪽으로 커서 이동 아래로 커서 이동 위로 커서 이동 오른쪽으로 커서 이동 |
|
w e b Enter Back space Space Bar ^ $ H M L 숫자G |
오른쪽 한 단어의 끝 부분으로 커서 이동 오른쪽 한 단어의 앞 부분으로 커서 이동 왼쪽 한 단어의 앞 부분으로 커서 이동 한 행 아래로 커서 이동 한 문자 왼쪽으로 커서 이동 한 문자 오른쪽으로 커서 이동 행의 맨 왼쪽으로 커서 이동 행의 맨 오른쪽으로 커서 이동 화면의 맨 위로 이동 화면의 중간으로 이동 화면의 맨 아래로 이동 ‘숫자’ 만큼 지정한 줄로 커서 이동 |
|
Ctrl + i Ctrl + b Ctrl + d Ctrl + u Ctrl + e Ctrl + y |
한 화면 위로 이동 한 화면 아래로 이동 반 화면 위로 이동 반 화면 아래로 이동 한 줄씩 위로 이동 한 줄씩 아래로 이동 |
|
문자, 행, 삽입 명령어 |
작업설명 |
|
a (종료 : ESC) A i I o O |
커서 오른쪽에 문자 삽입 커서 오른쪽, 행의 끝에 문자 삽입 커서 왼쪽에 문자 삽입 커서 왼쪽, 행의 처음에 문자 삽입 커서 아래에 행 삽입 커서 위에 행 삽입 |
|
텍스트 변경 명령어 |
작업설명 |
|
cw (종료 : ESC) cc C s S r r-Enter J xp ~ u U
. |
단어 변경 행 변경 커서 오른쪽의 행 변경 커서가 위치한 문자열 대체 커서가 위치한 라인의 문자열 대체 커서 위치 문자를 다른 문자로 대체 행 분리 현재 행과 아래 행 결합 커서 위치 문자와 오른쪽 문자 교환 문자형(대, 소문자) 변경 이전 명령 취소 행 변경 사항 취소 이전의 최종 행 취소 이전 최종 명령 반복 |
|
보관 및 종료 명령어 |
작업설명 |
|
:w :w filename :wp ZZ :q! q e! |
변경사항 보관 버퍼를 파일로 보관 변경사항 보관 후 vi 종료 변경사항 보관 후 vi 종료 변경사항 보관하지 않고 종료 수정한 파일을 저장하지 않고 vi 종료 수정한 것을 무시하고 다시 편집상태로 |
출처 : [직접 서술] 블로그 집필 - 일상의로의 초대
l : 뒤로 이동
k : 위로 이동
j : 아래로 이동
^ : 공백을 나타내는 글자를 제외한 나머지 글자 중에서 라인의 첫 글자로
0 : 라인의 첫 글자로
$ : 해당 라인의 끝으로
[n]$ : n라인 아래의 끝 글자로
H : 화면의 가장 위
M : 화면의 중앙
L : 화면의 가장 아래
1G : 페이지의 가장 위
G : 페이지의 가장 아래
[n]G : n번째 줄로
w : 다음 단어의 첫글자로
W : 다음 단어의 첫글자로(단어를 공백으로만 구분)
e : 다음 단어의 끝글자로
E : 다음 단어의 끝글자로(단어를 공백으로만 구분)
b : 왼쪽 단어의 첫 글자로
B : 왼쪽 단어의 첫 글자로(단어를 공백으로만 구분)
- 방향키 자체는 vi자체에서 지원하는 키가 아니라 텔넷프로그램(새롬데이터맨)이 지원해주는 가짜 키임을 유의.
화면단위로 이동하는 법
Ctrl + b(Backward) : 한페이지 뒤로(위로)
Ctrl + u(Up) : 1/2페이지 위로 이동
Ctrl + d(Down) : 1/2페이지 아래로 이동
- PageUp키나 Pagedown키를 눌러 이동하면 안됨
행내에서의 이동
Shift + 6(== ^ ) : 행의 맨앞으로
- HOME키나 END키를 사용해선 안됨
특정행으로 자유롭게 이동
Shift + g( == G ) : 파일의 마지막행으로 이동하기
특정숫자 + Shift + g( == ? + G ) : 특정라인으로 이동하기
삭제 기능
X : 한글자 지우기(윈도우의 Backspace키 기능)
dd : 한줄지우기
특정숫자 + dd : 여러개의 라인 지우기
D : 현재라인 현재행의 뒷부분 모두 지우기(하나의 행)
Copy & Paste 기능
특정숫자 + yy : 여러개의 행 복사하기
p : 붙이기
Shift + j(== J ) : 윗줄의 맨뒤에 아랫줄 갖다가 붙이기(커서의 위치는 윗줄에 있어야 함)
검색하고 치환하는 기능
?찾는문자열 : 파일내에서 찾는 문자열을 찾아 커서가 이동한다.(위로 향하여)
n : "/찾는문자열"을 입력후 다음찾기할때(아래방향)
N : "/찾는문자열"을 입력후 다음찾기할때(위방향)
:s/찾는문자열/치환문자열 : 현재 커서가 놓여 있는 행에서 첫번째로 검색된 특정문자열 바꾸기
:1,10s/찾는문자열/치환문자열 : 1행부터 10행사이에 걸쳐 첫번째로 검색된 특정문자열 바꾸기
:%s/찾는문자열/치환문자열 : 모든행에 걸쳐 첫번째로 검색된 특정문자열을 바꾸기
치환문에서 /g의 차이
drwxrwxrwt 7 sys sys 363 12월25일 02:41 tmp/
실행문)
:s/sys/root
:s/sys/root/g
실행결과)
drwxrwxrwt 7 root sys 363 12월25일 02:41 tmp/
drwxrwxrwt 7 root root 363 12월25일 02:41 tmp/
:범위s/pattern/replace/
범위 중에서 각 줄 중 처음 발견된 pattern을 replace로 치환
:범위s/pattern/replace/g
범위 중에서 발견되는 모든 pattern을 replace로 치환
범위는 행번호를 쓰면 됨. 핸재 행은 '.', 처음 행은 '^', 마지막 행은 '$', 전체 범위는 '%'로 표시하면 된다. 행뿐만 아니라 줄의 처음도 '^', 마지막도 '$'로 사용하면 된다. escape 문자는 '\'로 사용한다.
1. 문서 전체 범위에서 'test'를 'test2'로 바꾸기
:%s/test/test2/g
2. 3번째 줄에서 10번째 줄까지 'test'를 'test2'로 바꾸기
:3,10s/test/test2/g
3. 현재 줄 -2번째 줄에서 +3번째 줄까지 'test'를 'test2'로 바꾸기
(현재 줄('.')이 4번째 줄이라면 2번째 줄부터 7번째 줄까지)
:.-2,.+3s/test/test2/g
4. 문서 처음('^')부터 현재 줄('.')까지 모든 줄 마지막('$')에 "-*" 붙이기
:^,.s/$/-*/g
5. 현재 줄('.')부터 문서 마지막('$')까지 모든 줄 처음('^')에 " + " 붙이기
:.,$s/^/ + /g
6. 문서 전체의 "/usr/bin/test"를 "/usr/doc/test"로 바꾸기
:%s/\/usr\/bin\/test/\/usr\/doc\/test/g
- 출처
VI 치환명령
vi 치환기능
리눅스 및 VI 명령어 사용법
명령모드에서 벗어나 편집모드로 진입하기(입력모드)
a : 커서가 놓여 있는 위치의 문자뒤에 삽입된다.
o (소문자 o) : 현재행의 아래행을 밀어내고 입력모드로 전환된다.
O (대문자 O) : 현재행을 한줄 아래로 밀어내고 입력모드로 전환된다.
r + 새글자 : 현재커서의 글자를 새글자로 치환(입력모드로 변환하진 않는다)
입력모드와 삽입모드 변환
명령모드 : i,a,o,O - 삽입모드(입력)
vi 방식의 종료와 저장, 새이름으로 저장
:q! - 강제 종료
:w - 현재내용을 저장
:w! - 읽기전용인 파일을 수정후 강제로 저장할때
:wq - 저장하고 종료
:wq! - 읽기전용인 파일을 수정후 강제로 저장하고 종료하기
:w 새파일명 - 새이름으로 저장
일괄변경
:%s/before/after/g
vi 환경설정
:se nu : 행번호 표시
:set nonumber : 행번호 안보이게
:se nonu : 행번호 안 보이게
:syn on(off) : 색깔보이게(안보이게)
:set autoindent : 들여쓰기 설정
:set noautoindent : 들여쓰기 제거
:set list : 문단,조판부호 보기
:set nolist : 문단,조판부호 안보이게
:set window=30 : 한 화면당 행의 갯수 30개로 지정
:set ignorecase : 검색시 대소문자 구별 제거
:set noignorecase : 검색시 대소문자 구별
:set all : 현재 설정된 vi 모든 설정값 보기
'IT 세상' 카테고리의 다른 글
비정규직보다 못하다! 신 앵벌이 계층이 된 IT 종사자들의 슬픔... (6) | 2009.06.09 |
---|---|
oracle 시스템 쿼리 (0) | 2009.06.03 |
javadoc를 이용한 api만들기 jar classpath설정, (0) | 2009.03.02 |
프로젝트의 문서 템플릿 관리하기 (0) | 2009.01.24 |
프로젝트 요건 문서(PRD) (0) | 2009.01.24 |