vi 대략 정리 해 봅니다(어떤분 프로그램어 평가의기준이 vi라고 해서)

출처 ?? ㅎ

1. vi 시작하기
vi : vi를 시작한다.
vi [파일] : vi를 시작하여 지정한 [파일]이 존재하면 그 파일을 열고, 존재하지 않으면 지정한 파일 이름으로 새로운 파일을 만든다.
vi -R [파일] : 지정한 파일을 읽기 전용으로 불러들인다.

2. vi 종료하기
:q : 아무런 글을 입력하지 않았을 때, vi를 종료한다. 만약 글을 입력하였다면 종료되지 않는다.
:wq : 작성한 글을 저장하고 vi를 종료한다.
:q! : 작성한 글을 저장하지 않고 vi를 종료한다.

※ 종료하기를 포함한 앞으로 나오는 모든 vi 명령어들은 특별한 언급이 없는 이상, 위 그림에서 '명령대기상태'를 기준으로 입력해야 하는 명령어를 의미한다.

3. 저장하기
:w : 작성한 글을 저장한다.
:w [파일] : 지정한 파일로 작성한 글을 저장한다.
:w >> [파일] : 지정한 파일의 뒷부분에 작성한 글을 덧붙인다.
:w! : 읽기 전용으로 열었을 경우에 강제로 저장한다.
:w %.new : 현재 파일 이름에 .new를 붙여서 새로운 파일로 저장한다. (.new 자리에 다른 문자열이 올 수 있다.)
:50,$ w [파일] : 50줄부터 끝줄까지 [파일] 이름으로 저장한다.
:.,100 w [파일] : 현재 줄에서부터 100줄까지 [파일] 이름으로 저장한다.
:1,10 w [파일] : 1줄부터 10줄까지 파일 이름으로 저장한다.
:50,$ w >> [파일] : [숫자]번째 줄부터 끝줄까지 [파일]의 뒷부분에 저장한다.

=> [숫자 or . or $], [숫자 or . or $] w [파일] : [숫자]는 [숫자]번째 줄을, '.'은 '현재줄', '$'는 '끝줄'을 의미한다. 첫번째가 의미하는 부분부터 두번째가 의미하는 부분까지 [파일] 이름으로 저장한다.

4. 커서이동
vi를 처음 사용하는 경우에 당황해하는 부분 중 하나가 커서를 마음대로 움직이지 못한다는 것이다. 특정 설정을 해주지 않으면 윈도우에서처럼 마우스로 찍는 곳에 커서가 위치하지 않기 때문이다. 여기서는 기본 설정에서의 vi 커서 이동을 정리하였다. 커서 이동은 명령모드에서 가능하다.

h : 커서를 한 칸 왼쪽으로 이동한다 (좌).
j : 커서를 한 줄 아래로 이동한다 (하).
k : 커서를 한 줄 위로 이동한다 (상).
l, Space : 커서를 한 칸 오른쪽으로 이동한다 (우).
Backspace : 커서를 한 칸 왼쪽으로 이동한다.
- : 커서를 윗줄의 처음으로 이동한다.
+ : 커서를 다음 줄의 처음으로 이동한다.
0 : 커서를 현재 줄의 맨 앞으로 이동한다.
$ : 커서를 현재 줄의 맨 뒤로 이동한다.
^ : 커서를 현재 줄의 첫 글자로 이동한다 (공백이나 탭은 무시한다).
w, W : 커서를 다음 단어의 첫 글자로 이동한다.
e, E : 커서를 다음 단어의 끝 글자로 이동한다.
b, B : 커서를 이전 단어의 첫 글자로 이동한다.
( : 커서를 앞의 문장 처음으로 이동한다.
) : 커서를 뒤 문장 처음으로 이동한다.
{ : 커서를 앞 문단의 처음으로 이동한다.
} : 커서를 뒷 문단의 처음으로 이동한다.
H : 커서를 화면 맨 위로 이동한다.
M : 커서를 화면 중간으로 이동한다.
L : 커서를 화면 맨 아래로 이동한다.
<Ctrl> + F : 커서를 한 화면 아래로 이동한다.
<Ctrl> + B : 커서를 한 화면 위로 이동한다.
<Ctrl> + D : 커서를 반 화면 아래로 이동한다.
<Ctrl> + U : 커서를 반 화면 위로 이동한다.
[N] + <Ctrl> + F : 커서를 한 [N]화면 아래로 이동한다. (N은 양의 정수)
[N] + <Ctrl> + B : 커서를 한 [N]화면 위로 이동한다.
[N] + <Ctrl> + D : 커서를 [N] 줄 아래로 이동한다.
[N] + <Ctrl> + U : 커서를 [N] 줄 위로 이동한다.


5. 입력하기
i : 현재 커서 위치에서 글을 입력한다.
a : 현재 커서 다음부터 글을 입력한다.
o : 현재 커서가 있는 아래 줄부터 글을 입력한다.
S : 현재 커서가 있는 위치의 한 글자를 삭제하고 거기에서부터 글을 입력한다.
I : 현재 커서가 있는 줄의 맨 앞에서부터 글을 입력한다.
A : 현재 커서가 있는 줄의 맨 뒤에서부터 글을 입력한다.
O : 현재 커서가 있는 줄의 맨 위에서부터 글을 입력한다.
R : 현재 커서가 있는 곳에서부터 겹쳐쓰기(덮어쓰기)로 입력한다.

6. 삭제하기
vi에서는 윈도우에서처럼 BackSpace나 Delete 키만으로 삭제를 모두 해결하지 않는다.
x : 커서가 위치한 곳의 문자를 삭제한다.
X : 커서가 위치한 곳에서 왼쪽 문자를 삭제한다.
D : 커서가 위치한 곳에서 오른쪽 끝까지 삭제한다.
dd : 커서가 위치한 줄 전체를 삭제한다.
dG : 커서가 위치한 곳에서부터 파일의 끝까지 삭제한다.
d1G : 커서가 위치한 곳에서부터 파일의 앞까지 삭제한다.
:[N]d : N번째 줄을 삭제한다. (N은 양의 정수)
:[N], [M]d : N번째 줄부터 M번째 줄까지 삭제한다. (M은 N보다 큰 양의 정수)
[N] + dd : 커서가 위치한 곳에서부터 N 줄을 삭제한다.

7. 붙이기
p : 마지막으로 지워진 내용을 커서가 위치한 곳 뒤, 아래에 삽입한다.
P : 마지막으로 지워진 내용을 커서가 위치한 곳 앞, 위에 삽입한다.

8. 내용 고치기

:[N]co[M] : [N]줄을 [M]줄 밑에 복사해서 붙인다.
:[N], [M]col : [N]줄부터 [M]줄까지 한 줄 밑에 복사해서 붙인다.
[N]yy, [N]Y : 커서 위치에서 [N]줄만큼을 복사한다.
[N]yw : 커서 위치에서 [N]단어만큼을 복사한다.
:[A]m[B] : [A]줄을 [B]줄 밑으로 이동한다. (A, B는 양의 정수)
:[A], [B]m[C] : [A]줄부터 [B]줄까지 [C]줄 밑으로 이동한다.
:r : 마지막으로 저장되었던 파일의 전체내용이 파일 아래에 덧붙여진다.

9. 치환하기
:s/[원래내용]/[고칠내용] : 커서가 위치한 줄에서 [원래내용]을 [고칠내용]으로 치환한다.
:[N]s/[원래내용]/[고칠내용] : 지정한 [N]줄에서 [원래내용]을 [고칠내용]으로 치환한다.
:[N],[M]s/[원래내용]/[고칠내용] : 지정한 [N]줄에서 [M]줄까지의 범위 내에서 [원래내용]을 [고칠내용]으로 치환한다.
:%s/[원래내용]/[고칠내용] : 파일 전체에서 [원래내용]을 [고칠내용]으로 치환한다.
:C : 커서 위치에서 행의 끝까지를 다른 문자열로 변경한다.
:cc : 커서 행을 다른 문자열로 변경한다.
:R : 커서 위치에서 ESC를 입력한 곳까지 덮어쓴다.

10. 검색하기
검색명령은 파일의 끝에 도달하면 다시 처음부터 시작한다.
/[단어] : 현재 커서 위치에서 아래로 지정한 [단어]를 찾는다.
?[단어] : 현재 커서 위치에서 위로 지정한 [단어]를 찾는다.
/ : 전에 검색했던 단어를 아래로 반복해서 찾는다.
? : 전에 검색했던 단어를 위로 반복해서 찾는다.
n : /나 ?를 같은 방향으로 반복한다.
N : /나 ?를 반대 방향으로 반복한다.

11. 약어 사용하기
긴 단어나 문장을 짧은 단어로 쓸 수 있다.
:ab [short] [long] : [short]만 쓰면 자동으로 [long]의 내용으로 바뀐다. [long]은 단어는 물론 문장이 될 수도 있다.
:ab : 현재까지 지정된 약어 목록을 보여준다.
:una [short] : [short]를 약어에서 해제한다.

12. 화면보기
^l : 화면을 다시 뿌려준다.
:set number , se nu : 파일의 각 라인별로 번호를 붙여준다.
:set nonumber , se nonu : 파일의 각 라인별 번호를 삭제한다.
:set autoindent , se ai : 자동으로 들여쓰기를 한다.
:set noautoindent , se noai : 자동 들여쓰기를 취소한다.
:set list : 탭은 ^l로, 문장의 끝은 $로 표시한다.
:set nolist : list값을 취소한다.
:set tabstop=n ,se ts=n : 탭의 크기를 n으로 지정한다. 기본은 8이다.

13. 줄번호
[N]G, :[N] : [N]번째 줄로 바로 간다. (ex. 1G : 1번째 줄로 간다)
G : 마지막 줄로 간다.
:map [q] G : [q]가 G를 실행한 결과와 같도록 매크로를 정의한다.

14. 파일 바꾸기
:e [파일] : 현재 작성하고 있던 파일에서 지정한 파일로 바뀌어진다. 단, 작성하고 있던 파일이 저장되어 있지 않으면 바뀌지 않는다.
:e! [파일] : 현재 작성하고 있던 파일이 저장이 되지 않았더라도 지정한 파일로 바뀐다.

15. 데이터 읽기
:[N]r [파일] : [N]번째 줄에 지정한 파일의 내용이 삽입된다.
:r [파일] : 현재 커서가 위치한 곳 다음 줄에 지정한 파일의 내용이 삽입된다.
:[N]r ![명령어] : 명령어의 결과가 [N]번째 줄 다음에 삽입된다.
:r ![명령어] : 명령어의 결과가 현재 커서가 위치한 다음 줄에 삽입된다.

16. 정규 표현식을 위한 특수 기호
. : 새로운 줄을 제외한 모든 단일 문자와 대응한다.
* : 0 또는 그 이상의 선행 문자와 대응한다.
^ : 줄의 시작과 대응한다.
$ : 줄의 끝과 대응한다.
/< : 단어의 시작과 대응한다.
/> : 단어의 끝과 대응한다.
[] : 묶여진 문자 중의 하나와 대응한다.
[^ ] : 묶여진 문자를 제외한 아무 것이나 대응한다.
\ : 이어지는 기호를 문자 그대로 해석한다. (ex. \\ => \ 기호를 의미)

17. 셸 명령어 실행하기
:![명령어] : vi를 중단하고 지정한 셀 명령을 실행한다.
:!! : vi를 중단하고 이전의 셀 명령을 실행한다.
:sh : vi를 중단하고 셸을 실행한다.
:!csh : vi를 중단하고 새로운 C셸을 실행한다.

18. 데이터를 처리하기 위한 셸 명령어
[N]!![명령어] : [N]번 줄에서 명령어를 실행한다.
![M] [명령어] : 커서가 위치한 곳에서부터 [M]까지 명령어를 실행한다.
![M] fmt : 커서가 위치한 곳에서부터 [M]까지 줄들을 형식에 맞춘다.

19. 시스템이 죽었을 경우에 파일 살리기
vi -r : 되살릴 수 있는 모든 파일 이름을 보여준다.
vi -r [파일] : vi를 시작하여 지정한 [파일]을 되살린다.<div class='small'>[이 게시물은 관리자님에 의해 2011-10-31 17:32:05 Linux에서 이동 됨]</div>
|

댓글 6개

와 최고...스크랩..
자료 감사합니다.
윈도우버전 다운로드 받으셔서 설치하시고 사용해보셔도 좋습니다.
http://www.vim.org/download.php
대략이 아닌데요ㅠㅠ
보고있찌만 ;;; 맨날 쓰는거만 쓰니 ;;
자료 감사합니다.
댓글을 작성하시려면 로그인이 필요합니다.

프로그램

태그 필터 (최대 3개) 전체 개발자 소스 기타 mysql 팁자료실 javascript php linux flash 정규표현식 jquery node.js mobile 웹서버 os 프로그램 강좌 썸네일 이미지관련 도로명주소 그누보드5 기획자 견적서 계약서 기획서 마케팅 제안서 seo 통계 서식 통계자료 퍼블리셔 html css 반응형 웹접근성 퍼블리싱 표준화 반응형웹 홈페이지기초 부트스트랩 angularjs 포럼 스크린리더 센스리더 개발자톡 개발자팁 퍼블리셔톡 퍼블리셔팁 기획자톡 기획자팁 프로그램강좌 퍼블리싱강좌
+
제목 글쓴이 날짜 조회
14년 전 조회 575
14년 전 조회 471
14년 전 조회 694
14년 전 조회 2,205
14년 전 조회 640
14년 전 조회 663
14년 전 조회 758
14년 전 조회 964
14년 전 조회 606
14년 전 조회 881
14년 전 조회 1,450
14년 전 조회 685
14년 전 조회 1,000
14년 전 조회 464
14년 전 조회 531
14년 전 조회 1,007
14년 전 조회 1,350
14년 전 조회 1,419
14년 전 조회 896
14년 전 조회 828
14년 전 조회 1,350
14년 전 조회 870
14년 전 조회 3,960
14년 전 조회 1,891
14년 전 조회 699
14년 전 조회 625
14년 전 조회 3,571
14년 전 조회 4,250
14년 전 조회 991
14년 전 조회 1,182
14년 전 조회 4,422
14년 전 조회 1,230
14년 전 조회 1,019
14년 전 조회 767
14년 전 조회 784
14년 전 조회 968
14년 전 조회 900
14년 전 조회 1,047
14년 전 조회 926
14년 전 조회 1,348
14년 전 조회 695
14년 전 조회 554
14년 전 조회 583
14년 전 조회 730
14년 전 조회 1,198
14년 전 조회 828
14년 전 조회 1,369
14년 전 조회 1,128
14년 전 조회 1,101
14년 전 조회 1,070
14년 전 조회 1,947
14년 전 조회 3,268
14년 전 조회 1,475
14년 전 조회 2,410
14년 전 조회 1,913
14년 전 조회 1,795
14년 전 조회 972
14년 전 조회 510
14년 전 조회 792
14년 전 조회 959
14년 전 조회 1,667
14년 전 조회 1,721
14년 전 조회 1,164
14년 전 조회 804
14년 전 조회 1,032
14년 전 조회 1,062
14년 전 조회 1,066
14년 전 조회 602
14년 전 조회 676
14년 전 조회 792
14년 전 조회 1,729
14년 전 조회 932
14년 전 조회 872
14년 전 조회 1,160
14년 전 조회 771
14년 전 조회 915
14년 전 조회 871
14년 전 조회 1,160
14년 전 조회 698
14년 전 조회 693
14년 전 조회 624
14년 전 조회 746
14년 전 조회 946
14년 전 조회 1,694
14년 전 조회 984
14년 전 조회 926
14년 전 조회 1,652
14년 전 조회 899
14년 전 조회 750
14년 전 조회 762
14년 전 조회 852
14년 전 조회 1,039
14년 전 조회 957
14년 전 조회 1,010
14년 전 조회 1,119
14년 전 조회 994
14년 전 조회 2,259
14년 전 조회 1,888
14년 전 조회 2,561
14년 전 조회 525
🐛 버그신고