dd 한줄 삭제 or 잘라내기
p 붙이기

[VI 명령어 모음]

1. 삽입 명령어
 a : 커서 뒤에 입력
 A : 라인 끝에 입력
 i : 커서 앞에 입력
 I : 라인시작 부분에 입력
 o : 커서있는 라인 밑에 입력
 O : 커서있는 라인 위에 입력

2. 커서이동 명령어
 h : 왼쪽으로 커서 한칸 이동 (←)
 l : 오른쪽으로 커서 한칸 이동 (→ , SpaceBar)
 j : 아래쪽으로 커서 한칸 이동 (↓)
 k : 위쪽으로 커서 한칸 이동 (↑)
 e : 다음 단어의 마지막으로 이동
 E : 커서를 공백으로 구분된 다음단어 끝으로 이동
 b : 한 단어 뒤로 이동
 B : 커서를 공백으로 구분된 이전단어로 이동
 w : 커서를 한 단어 뒤로 이동(단어 단위)
 W : 커서를 공백으로 구분된 다음단어의 앞칸으로 이동(공백 단위)
 k : 커서를 한 라인 위로 이동
 0 : 커서를 라인의 시작으로 이동 (숫자 0, Home)
 ^ : 커서를 라인의 시작으로 이동하되 첫 글자의 앞으로 이동
 $ : 커서를 라인의 끝으로 이동
 H : 현재 보이는 화면의 처음으로 이동(화면의 상)
 M : 커서를 현재화면의 중간 라인으로 이동(화면의 중)
 L : 현재 보이는 화면의 끝으로 이동(화면의 하)
 Enter : 커서를 다음 라인 시작으로 이동
 - : 커서를 이전 라인의 시작으로 이동
 + : 다음 라인의 시작으로 이동
 Ctrl+F : 다음 화면으로 이동 (PageDown)
 Ctrl+D : 화면의 반만 앞으로 이동
 Ctrl+B : 이전 화면으로 이동 (PageUp)
 Ctrl+U : 화면의 반만 뒤로 이동
 G : 커서를 문서의 마지막 라인으로 이동
 숫자G : 커서를 숫자 라인만큼 아래로 이동
 ( : 문단의 시작으로 이동하여 첫단어의 시작위치에 커서이동
 ) : 문단의 끝으로 이동하여 첫단어의 시작위치에 커서이동
 { : 문단의 시작으로 이동
 } : 문단의 끝으로 이동

3. 삭제/잘라내기 명령어
 x : 커서가 있는 부분의 문자 삭제
 X : 커서가 있는 문자 앞에 있는 문자 삭제
 dw : 커서가 있는 단어 삭제
 db : 커서가 앞에 있는 단어 삭제
 dW : 공백으로 구분된 뒷 단어 삭제
 dB : 공백으로 구분된 앞 단어 삭제
 dd : 커서가 있는 라인 삭제
 D : 커서가 있는 곳부터 그 라인의 뒷부분 삭제
 d) : 커서가 있는 곳부터 그 문단의 나머지 삭제(커서가 있는곳이 공백줄이면 그 줄만 삭제)
 d} : 커서가 있는 곳부터 문단의 나머지 삭제(커서가 있는곳이 공백줄이라도 그줄을 포함해서 뒷문단 삭제)
 dG : 커서가 있는 곳부터 열린 문서의 나머지 삭제
 dH : 커서가 있는 곳부터 화면의 시작까지 삭제
 dL : 커서가 있는 곳부터 화면의 마지막까지 삭제
 dM : 커서가 있는 곳부터 화면의 중간까지 삭제
 J : 아래 라인을 현재 라인의 뒤에 붙임(현재라인 끝의 \r\n을 없앰)

4. 바꾸기 명령어
 r : 커서에 있는 문자 대치 ( r 누르고 문자입력)
 R : 입력모드로 한 문자씩 덮어씀(실제 입력모드는 아님)
 s : 커서가 있는 문자 삭제 후 입력모드로 전환
 S : 커서가 있는 줄을 삭제 후 입력모드로 전환
 cb : 커서가 있는 앞 문자 삭제 후 입력모드로 전환
 cW : 공백으로 구분된 뒷 단어를 삭제 후 입력모드로 전환
 cB : 공백으로 구분된 앞 단어를 삭제 후 입력모드로 전환
 cc : 커서가 있는 라인을 삭제하고 입력모드로 전환
 C : 커서가 있는 곳부터 라인의 나머지를 삭제하고 입력모드로 전환
 c0 : 커서가 있는 곳부터 라인의 시작까지 삭제하고 입력모드로 전환
 c) : 커서가 있는 곳부터 문단의 나머지부분을 삭제하고 입력모드로 전환(커서가 있는곳이 공백줄이면 그 줄만 삭제)
 c} : 커서가 있는 곳부터 문단의 나머지부분을 삭제하고 입력모드로 전환(커서가 있는곳이 공백줄이라도 그줄을 포함해서 뒷문단 삭제)
 cG : 커서가 있는 곳부터 현재문서의 끝까지 삭제하고 입력모드로 전환
 cH : 커서가 있는 곳부터 화면의 시작까지 지우고 입력모드로 전환
 cM : 커서가 있는 곳부터 화면의 중간까지 지우고 입력모드로 전환
 cL : 커서가 있는 곳부터 화면의 끝까지 지우고 입력모드로 전환

5. 텍스트 이동/붙여넣기 명령어
 p : 삭제나 복사된 텍스트를 커서가 있는 문자나 라인 뒤에 삽입
 P : 삭제나 복사된 텍스트를 커서가 있는 문자나 라인 앞에 삽입
 dw p : 커서가 있는 단어를 삭제(dw)한 후 이를 원하는 곳에 커서 뒤로 삽입(p)
 dw P : 커서가 있는 단어를 삭제(dw)한 후 이를 원하는 곳에 커서 앞로 삽입(P)
 dd p : 커서가 있는 라인을 삭제(dd)한 후 이를 원하는 곳에 커서 뒤로 삽입(p)

6. 복사 명령어
 yy : 커서가 있는 라인을 복사
 y + 방향키 : 커서가 있는 곳부터 방향키로 지정한 방향의 라인 또는 문자까지 복사
 yw : 커서가 있는 단어를 복사
 yb : 커서가 있는 앞 단어를 복사
 yW : 커서가 있는 곳부터 공백으로 구분된 다음 단어 복사
 yB : 커서가 있는 곳부터 공백으로 구분된 이전 단어 복사
 y) : 커서가 있는 곳부터 문단의 나머지 부분을 복사(커서가 있는곳이 공백줄이면 그 줄만 복사)
 y} : 커서가 있는 곳부터 문단의 나머지 부분을 복사(커서가 있는곳이 공백줄이라도 그줄을 포함해서 뒷문단 복사)
 yG : 커서가 있는 곳부터 현재 문서의 마지막까지 복사
 yH : 커서가 있는 곳부터 현재 화면의 시작까지 복사
 yM : 커서가 있는 곳부터 현재 화면의 중간까지 복사
 yL : 커서가 있는 곳부터 현재 화면의 끝까지 복사

7. 검색 명령어
 /[pattern] : 텍스트에서 앞으로 패턴 검색 (정규표현식)
 >[pattern] : 텍스트에서 뒤로 패턴 검색 (정규표현식)
 /문자열 : 문자열 검색
 n : 검색결과에서 다음검색 반복
 N : 검색결과에서 이전검색 반복
 ? : 전 검색을 뒤로 반복(검색문자의 해당라인 맨 앞에 커서 위치)

8. 매크로
 ab [매크로실행명령] [실행시 출력문자열]
 예) ab aa aaaa : aa를 입력하면 aaaa로 자동변환

9. 치환 명령어
 s/pattern/replace : 현재줄의 첫번째 matching pattern 치환
 s/pattern/replace/g : 현재줄의 모든 matching pattern 치환
 %s/pattern/replace/g : 모든 줄의 치환
 line1,line2/pattern/replace : line1부터 line2 까지 범위를 치환
 - 옵션설명 :
     c 치환전 확인 유무 물음
     g 글로벌 치환
     p 치환된 마지막 라인 출력


10. 기타 명령어
 4w : 4단어 skip후 이동(-> 방향으로 이동)
 4b : 4단어 skip후 이동(<- 방향으로 이동)
 4j, 4h, 4k, 4l : 커서이동시 지정한 수 만큼 건너띄어 이동(숫자 + 방향키)
 ~ : 대문소는 소문자로, 소문자는 대문자로 치환
 숫자 + 방향키 : 해당 숫자만큼 상,하,좌,우로 이동
 c + 방향키 : 방향키로 지정한 방향의 라인 또는 문자를 지우고 입력모드로 전환
 c + 숫자 + 방향키 : 방향키로 지정한 방향의 숫자만큼을 지우고 입력모드로 전환
 K : 현재 커서가 있는곳의 shell 명령어(echo등)에 대한 메뉴얼 보여줌.
 w>> file명 : 현재 문서(또는 visual로 정한 영역)을 지정한 file(단, 파일은 존재해야함)에 추가
 . : 마지막 명령어 반복
 v : visual mode
  선택부분(방향키로 영역반전)을 복사, 삭제할 수 있다.
  예) v + 방향키로 영역설정(반전) + y : 선택영역을 복사

11. 팁
 * vi편집모드에서 붙여넣기시 탭의 계단현상발생 방지
  :set paste
 * marks - 위치기억(UltraEdit의 Alt+F2, F2와 동일한 기능)
  :m{a~z} : 현재위치를 a~z로 북마크함
  :`{a~z} : 기억해둔 a~z 로 이동, 보통 한개만 등록했다면 그냥 ``를 사용하면 된다.
 
  - 저장된 마크(위치기억)를 보려면
  :marks 를 치면 최근 10개의 마크된 파일또는 텍스트를 보여준다.

 * 레코딩 - 설정파일의 주석추가/삭제시 유용하게 사용(UltraEdit의 매크로기능과 유사)
  :q{a~z} : a~z로 레코딩 시작.
  :q : 레코딩 종료
  :@{a~z} : 레코딩 내용적용(@@를 하면 바로 이전의 레코딩 내용을 적용, 숫자@@는 지정수만큼 적용)
 * :sp [파일명] : 윈도우를 2개로 분할한다.(명령수에 따라 계속 분할됨)
     윈도우의 이동은 Ctrl+ww 로 순차적으로 이동
    - 문서 편집과 동시에 디렉토리 확인가능
      :sp . (현재 디렉토리의 tree를 화면분할하여 불러옴)
    - 디렉토리 tree에서 선택한 디렉토리 또는 파일에 커서를 두고 p 를 누르면
      화면분할이 되면서 미리보기가 가능함.
 * :ls  : 현재 열려진 buffer목록을 본다.
    이동은 :buffer 1 또는 buffer 3등으로 이동한다.

12. vim설정
 자신의 홈디렉토리에 .vimrc 를 생성할 수 있다.
 
 set ai : autoindent, 자동 indent(디폴트 off)
 set ts=4 : tabstopp=n, 탭이동공간을 4로 지정(디폴트 8)
 set nu : number, 줄번호를 보여줌(디폴트 off)
 set ap : autoprint, 줄이 바뀔때 현재 줄을 화면상에서 출력(디폴트 on)
 set ed : errobells, 명령에러가 발생시 삑 소리를 나게함(디폴트 off)
 set report : report, 편집시 메세지를 보낼 편집 변화 크기 지정(디폴트 5)
 set sm : showmatch, 가로 닫기 괄호를 사용할 때 일치하는 가로 열기 괄호를 보여줌(디폴트 off)
 set wam : wam, 저장하지 않고 종료할때 경고 메시지를 뿌려줌(디폴트 on)
 set ic : ignorecase, 검색패턴에 사용되는 대소문자를 구별하지 않음(디폴트 on)
 set wm=4 : wrapmargin=n, 텍스트 오른쪽 여백을 n수만큼 지정(디폴트 0)
 
13. 버퍼 이용하기 (" 따옴표)
- 현재파일을 수정할때 필요한 내용을 버퍼에 담고 해당 내용을 다른 파일 수정할때도 유지하게 할 수 있습니다.
"[버퍼명(a-z)][줄수][명령]

예)
1. a 버퍼에 10줄 복사하여 담기
"a10yy

2. a 버퍼에 추가로 5줄 담기
"A5yy

줄수의 기준은 현재 커서가 있는 줄부터 아래쪽으로 셈 합니다.

13. 파일 오가며 편집하기
:e 파일명

사용예) aaa.txt 파일의 현재커서부터 4줄을 버퍼에 복사하고 다른파일로 이동하여 해당버퍼에
저장된 문자열을 붙여넣기하는 방법
$bash> vi aaa.txt
"a4yy   (a버퍼에 4라인 복사, 4 lines yanked 메시지확인)
:w  (현재파일을 수정했다면 저장)
:e bbb.txt  (aaa.txt 를 닫고 bbb.txt 파일열기)
"ap (a버퍼에 저장된 내용을 붙여넣기)

원본글 주소 : http://najo.tistory.com/47

+ Recent posts