개인적으로 Emacs보다 vi편집기를 애용한다..
손에 한번 익숙해지면 떼지 못한다.. 마약이다.. -.-+
$man vi 저장해 주면 더 세부적인 메뉴얼을 볼 수 있어요..
-. vi - vi편집기를 호출한다.
-. vi filename - 기존에 있는 파일이면 그 파일을 열고 없는 파일이면 새로 만든다.
-. vi + 10filename - 지정화일의 10번째 행부터 화일열기
-. vi +/"school" filename - 지정화일내의 school이란 단어가 처음나오는 시점부터 열기
-. vi -r filename - 손상된 파일을 복구
-. view filename - 수정없이 읽기전용으로 열기
▒ 커서의 이동
-. h - 왼쪽으로 이동
-. j - 아래로 이동
-. k - 위로 이동
-. l - 오른쪽으로 이동
-. w - 한단어 오른쪽으로이동
-. b - 한단어 왼쪽으로 이동
-. Return - 한행아래로 이동
-. Backspace - 한문자 왼쪽으로 이동
-. Spacebar - 한문자 오른쪽으로 이동
-. H - 화면의 맨위로 이동
-. M - 화면의 중간으로 이동
-. L - 화면의 맨 아래로 이동
-. ^F - 한화면 앞으로 이동
-. ^D - 반화면 앞으로 이동
-. ^B - 한화면 뒤로 이동
-. ^U - 반화면 뒤로 이동
▒ 삽입명령어
-. a - 커서 오른쪽에 문자삽입
-. A - 커서 오른쪽, 행의끝에 문자삽입
-. i - 커서 왼쪽에 문자삽입
-. I - 커서왼쪽, 행의 처음에 문자삽입
-. o - 커서 아래에 행 삽입
-. O - 커서 위에 행 삽입
-. <Esc> - 작업완료후 반드시 입력
▒ 텍스트 변경
-. cw - 단어 변경
-. cc - 행 변경
-. C - 커서 오른쪽의 행 변경
-. s - 커서가 위치한 문자열 대체
-. r - 커서 위치 문자를 다른 문자로 대체
-. r-Return - 행 분리
-. J - 현재 행과 아래 행 결합
-. xp - 커서 위치 문자와 오른쪽 문자교환
-. - - 문자형(대,소문자) 변경
-. u - 이진 명령 취소
-. U - 행 변경 사항 취소
-. :u - 이전의 최종행 취소
▒ 텍스트 삭제
-. x - 문자삭제
-. dw - 단어삭제
-. dd - 행 삭제
-. D - 커서 오른쪽 행 삭제
-. :5,10 d - 5-10째 행 삭제
▒ 행번호 설정
- :set nu - 행번호 표시
- :set nonu - 행번호 숨기기
▒ 행 찾기
-. G - 파일의 마지막 행으로 가기
-. 12G - 파일의 12번째 행으로 가기
▒ 텍스트의 복사 및 이동
-. yy - 행 yank 또는 복사
-. Y - 행 yank 또는 복사
-. P - yank 되거나 삭제된 행을 현재 행 아래에 삽입
-. p - yank되거나 삭제된 행을 현재 행 위에 삽입
-. :1,2 co 3 - 1-2행을 3행 다음으로 복사
-. :4,5 m 6 - 4-5행을 6행 다음으로 이동
▒ 탐색 및 대체
-. /string/ - string탐색
-. ?string? - string 역 방향 탐색
-. n(N) - string의 다음(이전) 계속 탐색
-. :g/search-string/s//replace-string/gc - 각 발생 탐색후 확인하고 대체
-. :s/str/rep/ - 현재 행의 str을 rep로 대체
-. :1,.s/str/rep/ - 1부터 현재 행의 str을 rep로 전부 대체
-. :%s/str/rep/g - 파일 전체 str을 rep로 전부 대체
▒ 화면정리
^L <Ctrl + L> 불필요한 화면 내용 제거 후 다시 표시
다른 파일을 파일내로 삽입
-. :r filename - 커서 다음에 파일 삽입
-. :20 r filename - 파일을 20번째 행 다음에 삽입
▒ 파일의 저장 및 종료
-. :w - 변경사항 저장
-. :w filename - 지정한 파일로 저장
-. :wq - 변경사항 저장후 vi종료
-. ZZ - 변경사항 저장후 vi종료
-. :q! - 변경사항을 저장하지 않고 vi종료
-. clear - 화면의 내용을 깨끗이 지운다.
-. ls - 현재 디렉토리의 파일목록을 표시한다.
-. cp - 파일을 복사한다.
-. mv - 파일의 이름을 변경한다.
-. mv - 파일을 다른곳으로 옮긴다.
-. rm - 파일을 삭제한다.
-. cat - 파일내용을 표시한다.
-. pwd - 현재 위치의 경로를 표시한다.
-. cd - 디렉토리의 경로를 이동한다.
-. mkdir - 새로운 디렉토리를 만든다.
-. rmdir - 디렉토리를 삭제한다.
▒ :k,l command m
: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줄)씩을, 문서 맨위에 복사하기
:/pattern/ d - pattern 이 들어있는 줄 지우기
:/pattern/ -nd - pattern 이 들어있는 줄로부터 n 번째 윗줄 지우기
:/pattern/ +nd - pattern 이 들어있는 줄로부터 n 번째 아랫줄 지우기
:/p1/, /p2/ d - p1 이 들어있는 줄부터, p2 가 들어있는 줄까지 지우기
:.,/pa/ m 23 - 현재줄부터 pa 이 들어있는 줄까지, 23번줄 이후로 옮기기
▒ g 옵션 붙이기
:g/pattern - 파일전체에서 마지막으로 pattern 이 쓰여진 줄로 가기
:g/pattern/ p - 파일전체에서 pattern 이 있는줄 보여주기
:g/pattern/ nu - 파일전체에서 patterm 이 있는줄을 번호와 함께 보여주기
:60,124 g/pa/ - p 60,124 줄 사이에서 pa 이 들어있는줄 보여주기
▒ 저장 및 종료
:w - 저장하기
:q - 종료하기
:wq - 저장하고 종료하기
:x - 저장하고 종료하기 (:wq 와 동일)
:w! - 강제로 저장하기 (read-only 로 열었을경우)
:q! - 편집한 내용을 저장하지 않고 종료하기
:w - new_filename new_filename으로 저장하기
:w %.new - 현재파일 이름에 .new 를 붙여서 새로운 파일로 저장
:230,$ w filename ant - 230 줄부터 끝줄까지 filename으로 저장하기
:.,580 w filename - 현재줄부터 580줄까지 filename으로 저장하기
:1,10 w new_filename - 1줄부터 10줄까지 new_filename으로 저장하기
:340,$ w >>new_file - 340줄부터 끝줄까지 new_file에 추가하기
▒ 읽기
:r[ead] 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 읽어들이기
:/pa/ r /usr/local/data - pa 이 존재하는 줄에 /usr/local/data 읽어들이기
▒ 다중편집하기
vi file1 file2 file3 :args - 편집중인 파일목록 보여주기
:n[ext] - 다음 파일로 넘어가기
:prev[ious] - 이전파일로 돌아가기
sc/ESC/g - BX가 있는줄 찾아서 Esc 를 ESC 로 바꾸
:% s/editer/editor/g - 처음줄부터 마지막줄까지, editer 를 editor 로 바꾸기
:g/editer/ s//editor/g - 위와 동일("s/" 다음에 인자가 없어서 윗줄과 같은효과
*출처 : iscript카페 http://cafe.naver.com/iscript/122