vi 편집기 명령어 정리
vi 편집기는 워낙 명령어가 많고 응용이 다양하게 되기 때문에
전부다 적자면 책 한권분량이라서 자주 쓸만한 것들만 모아놓음
직접 해보고 참고사항을 적어놓았지만 직접 해보지 않으면 이해가 되지 않을 명령어들도 많다.
vi 시작하기 - 앞에 # 표시가 붙는걸 보면 알겠지만 이 명령어들은 터미널 명령어다 항상 이라고 장담은 못하지만 vi 관련 명령어는 내가 아는한 vi (띄우고) 부호+명령어(띄우고) 파일네임 이런식이다. | |
# vi |
vi 편집기 시작 |
# vi <Name> |
<Name>이름을 가진 파일을 연다. 없는 파일이면 새로 생성한다 |
# vi +10 <name> |
<name>파일의 3번째 행부터 파일열기 *띄워쓰기에 유의해야 한다. 만약 + 3이라고 하면 3이라는 이름의 파일이 생성된다.
*여기서 3번째 행부터 파일을 연다는것은 3번행 이전은 출력을 안하는것이 아니라 커서의 위치가 3번행 이라는 소리다. |
# vi +/"ab" <name> |
<name>파일의 문자열 "ab"가 나오는곳부터 시작 |
# vi -r <name> |
<name> 라는 이름의 손상된 파일을 복구 |
# view <name> |
읽기 전용으로 열기 |
커서 이동 - vi편집기 내에 백스페이스, 방향키가 터미널과 다르게 동작하는 세팅이 있고 똑같이 동작하는 세팅이 있다. 그 세팅은 vi의 profile을 수정함으로써 바꿀수 있다.
기본적으로 페도라와 우분투에서 모두 esc를 누른 상태에서는 방향키가 동작한다. 그 이외의 상황은 밑에서 설명하겠다. 한가지 기억할것은 방향키 모드일때의 enter와 입력모드일때 enter가 다르다는거다. 그 점 명심하지 않으면 골치 좀 아플꺼다. 그럼 enter말고 space는 방향키모드나 입력모드나 똑같나요 하는 사람은 없을것이다. 입력모드 모두 동일이다.
그리고 커서를 이동하다가 입력으로 전환할때는 esc를 안누르고 바로 a만 누르면 된다 즉 esc 누르고 kkk를 눌러서 위로 세칸을 이동했으면 그 상태에서 a만 누르면 바로 입력모드로 전환된다. | |
h |
왼쪽으로 이동 |
j |
아래로 이동 |
k |
위로 이동 |
l |
오른쪽으로 이동 |
w |
한단어 오른쪽으로이동 |
b |
한단어 왼쪽으로 이동 |
Enter(Return) |
한행아래로 이동 * 한행아래로 이동이지 기존에 사용하던것처럼 새로 한행을 만드는 기능은 커서 이동 상태에서는 없다. |
Backspace |
한칸 왼쪽으로 이동 * 이 역시 기존처럼 삭제의 개념이 아니라 이동의 개념이다. |
Spacebar |
한칸 오른쪽으로 이동 * 이하 동문이다. 입력모드에서 오른쪽 자리를 확보해두지 않았다면 이동이 불가능하다. |
H gg |
화면의 맨위로 이동 * gg랑 H랑 같은 역할이다. 입맛대로 골라쓰면 되겠다 * 특별한 설명없이 명령어가 두줄이면 두 개다 같은 기능이다 |
M |
화면의 중간으로 이동 |
L G |
화면의 맨 아래로 이동 * 여기서 뭔가 이상한점이 있을것이다. 소문자 h,l은 좌우이동인데 대문자 H, L은 왜 상하인가? high, low 겠지만 직관적이지 않다고 본다. 뭐 어쩌겠나 그냥 써야지 정 꼬으면 위에서 말한대로 profile을 바꿔주면 되겠다. |
ctrl + f pagedown |
한페이지 아래로 이동 * 여기 컨트롤 시리즈 f,d,b,u는 대소문자 구분이 없다. 위에서 말안했지만 대소문자 구분 없는 명령어는 몇 개 안되니 그냥 딱히 대문자 명령어가 없으면 소문자라고 생각하는게 마음 편할것이다. |
ctrl + d |
반페이지 아래로 이동 *굳이 반페이지가 있는 이유는 한페이지 이동은 아래위로 자신이 가고자 하는 방향쪽에 한페이지 만큼의 공간이 없으면 이동이 안되지만 반페이지 이동은 그런거 없다. 제일 위줄 까지 갈수있다. |
ctrl + b pageup |
한페이지 위로 이동 |
ctrl + u |
반페이지 위로 이동 |
Home |
현재줄의 제일 앞칸으로 이동 |
End |
현재줄의 제일 뒤로 이동 |
숫자G : 숫자 Enter |
숫자의 행으로 이동 |
입력모드 - vi가 골때리는 이유중 하나는 위의 커서이동모드 일때와 입력모드 일때 같은 키더라도 입력되는값이 다른경우가 많다.
이점에 유의해야한다. | |
a |
커서 오른쪽에 문자삽입 * 가장 많이 쓰는것 |
A |
커서 오른쪽, 행의끝에 문자삽입 |
i |
커서 왼쪽에 문자삽입 |
I |
커서왼쪽, 행의 처음에 문자삽입 |
o |
커서 아래에 행 삽입 |
O |
커서 위에 행 삽입 |
pageup pagedown |
왼쪽 문자 하나를 대소문자로 바꿔준다. * 대문자일 경우 대문자로 바꾸고 소문자일 경우 대문자로 바꾼다 두키 모두 동일하다. 다만 유의할점은 변경후 방향키 이동 모드로 다시 복귀한다. |
텍스트 변경 |
|
cw |
단어 변경 * 한글자를 지우고 입력모드로 전환 |
cc |
줄 변경 * 한줄을 지우고 입력모드로 전환 |
C |
커서 오른쪽 줄 변경 |
s |
커서가 위치한 문자 대체 |
r |
커서 위치 문자를 다른 문자로 대체 * 위의 s와 별 차이는 없지만 s는 s를 눌리는순간 한글자를 지워버리고 입력모드로 전환되지만 r키는 커서 이동모드로 유지된다. r을 누르고 lll을 눌러 오른쪽 세칸가서 f로 변경하고 다시 r을 누르고 kk를 눌러 밑으로 두칸가서 또 변경가능하다. 다만 변경하기 전에 r을 눌러주지 않으면 명령어로 인식한다. |
r Enter(Return) |
행 분리 * r을 누르고 바로 Enter를 누른다. |
J |
현재 행과 아래 행 결합 |
xp |
커서 위치 문자와 오른쪽 문자교환 |
u |
이전 명령 취소 |
U |
행단위 변경사항 취소 |
:u |
이전의 최종행 취소 |
텍스트 삭제 | |
x |
문자삭제 |
dw |
단어삭제 * 그 단어의 시작부분에서 수행된다. |
dd |
행 삭제 |
D |
커서 오른쪽 행 삭제 |
:5,10 d |
5-10째 행 삭제 |
:34,50 d |
34 줄 부터 50 줄 까지 삭제 |
:.,$ d |
현재줄부터 끝까지 지우기 |
:$d |
마지막행 삭제 |
:/<name>/ d |
<name> 이 들어있는 줄 지우기 * 여기서 <name>이 여러개 있을 경우 위에서 아래부터 검색하는데 /대신 ?을 사용하면 아래부터 검색한다.
그리고 -3d를 사용하면 <name>이 있는 위의 세 번째 줄을 삭제하는 등의 옵션도 가능하다. |
행번호 설정 | |
:set nu |
행번호 표시 |
:set nonu |
행번호 숨기기 |
텍스트의 복사 및 이동 | |
yy Y |
커서가 위치한 행 복사 |
P |
복사된 행을 현재 행 아래에 삽입 |
p |
복사된 행을 현재 행 위에 삽입 |
:1,2 co 3 |
1-2행을 3행 다음으로 복사 |
:4,5 m 6 |
4-5행을 6행 다음으로 이동 |
탐색 및 대체 | |
/<name>/ |
<name>을 위에서부터 아래로 탐색 |
?<name>? |
<name>을 아래에서부터 위로 탐색 |
s/A/B/ |
현재 커서가 있는 행의 A를 B로 변환 |
:%s/A/B/ |
문서내의 모든 A를 모두 B로 변환 |
Ctrl + L |
화면내의 불필요한 내용 제거 |
:r <filename> |
현재 커서 위치에 <filename>의 내용을 삽입한다. |
:20 r filename |
20번 다음행에 <filename>의 내용을 삽입한다. |
:g/<name>/ p |
파일전체에서 <name> 이 있는줄 보여주기 * 여기서 g를 붙이면 한꺼번에 보여주고 붙이지 않으면 /옵션인만큼 위에서부터 찾아서 내려온다. |
:g/<name>/ nu |
파일전체에서 <name> 이 있는줄을 번호와 함께 보여주기 |
:10,12 g/a/ |
10~12번 줄 사이에서 a 가 들어있는줄 보여주기 |
파일의 저장 및 종료 | |
:w |
변경사항 저장 |
:q |
종료하기 |
:w! |
강제로 저장하기 (read-only 로 열었을경우) |
:q! |
변경사항을 저장하지 않고 vi종료 |
:wq :x |
변경사항 저장후 vi종료 |
:w <name> |
<name>이름으로 새로 파일생성 |
'IT > Linux' 카테고리의 다른 글
페도라12에 삼성 넷북N140 무선랜 RTL8192 드라이버 설치 (0) | 2013.01.11 |
---|---|
한글 putty 다운로드 (0) | 2013.01.11 |
Fedora Core 4 자바 설치하기 (0) | 2013.01.11 |
보수 표현(부호 절대값, 1의 보수, 2의 보수, excess -7) (0) | 2013.01.11 |
각종 진법 변환(2진수 실수끼리의 연산, 실수의 진법변환 등) (0) | 2013.01.11 |