'editor'에 해당되는 글 1건

  1. 2008.12.31 VIM 팁
http://www.viper.pe.kr/cgi-bin/moin.cgi/Vim_팁

1. 참고링크

2. Vim 팁 모음

2.1. 치환 기능 사용하기

vim 사용 중 문자나 단어를 치환해야할 일이 생겼을 경우 바꿔야될 대상의 갯수가 작다면 단순히 커서를 이동해서 수정하면 된다. 하지만 갯수가 많다면 vim 의 치환 기능을 사용하여 손쉽게 수정 가능하다. vim 의 다른 기능과 마찬가지로 정규표현식으로 처리가능하다.

  • 기본 사용법
    :[범위]s/[oldpattern]/[newpattern]/       # 기본 형식
    
    :%s/\<찾을글자\>/치환될글자/gc           # 전체 영역
    :'<,'>s/찾을글자/치환될글자/gc           # 블럭 지정 영역 (VISUAL 모드)
    

    부분

    설명

    %

    현재 파일

    '<,'>

    블럭 지정 영역

    \< \>

    정확히 일치하는 글자

    g

    라인 전체

    c

    치환여부 확인

  • 사용 예)
    # 파일 전체에서 char 를 _char_ 로 치환한다.
    :%s/char/_&_/g
    
    # 현재 커서 위치부터 파일 끝까지 모든 char 를 _char_ 로 치환한다.
    :.,$s/char/_&_/g
    
    # 파일의 1~10 라인 사이에서 buf_.*[255], buf_in[255], buf_get[255] 와 같은 문자열을 hello 로 변경한다.
    :1,10s/buf_.*\[255\]/hello/g
    

2.2. 줄바꿈 문자 변환하기

텍스트 파일을 처리할 때 unix 나 dos, mac 등 각 운영체제에 따라 줄바꿈 문자가 다르다. 그래서 불편한 경우가 많은데... <:( linux 에서 vim 을 사용할 때 단순히 문자치환으로 바꿀 수 있지만 아래의 방법을 이용하면 간단히 처리가 가능하다.

  • : set ff=unix
    

그리고 저장하면 된다.

참고> unix 대신에 dos, mac 을 사용하면 해당 운영체제에 맞게 바뀐다.

2.3. 소스 코드를 html로 변환하기

vim 의 여러가지 기능 중에 눈에 띄는 기능 중 하나로 편집 중인 코드를 HTML 형태로 저장하는 기능으로 이용하면 syntax highlight 된 상태 그대로 HTML로 변환이 가능하다. 소스 코드의 예제를 만들어서 웹 상에 올리고자 할때 유용하게 사용할 수 있는 기능으로 사용법은 간단하다.

  • : so $VIMRUNTIME/syntax/2html.vim
    

시간이 조금 걸린 후 변환된 내용이 화면 출력되면 저장하면 된다.

2.4. 문서 암호화 하기

vim 에디터에서 문서 암호화가 가능하다. RedHat Linux 7.2 이상에서 제공되고 있는 vim (버젼 5.7 이상) 에서만 가능하며 사용방법은 다음과 같다.

  1. 암호화 하기
    1. set 명령
      : set key=<Password>
      
      파일을 저장한다.
    2. X 명령
      : X<Enter>
      
      Password 를 입력한(두번) 후 파일을 저장한다.

      참고> X 명령은 대문자 입니다.

  2. vim 에서 파일 읽기
    • vi 에서 파일을 열기 전에 Password 를 입력하라는 메세지가 출력될 때 Password를 입력하면 된다.
  3. 암호화 해제
    1. set 명령
      : set key=
      
      파일을 저장한다.
    2. 편집 저장 파일을 열고 간단히 편집한 후 저장하면 암호화가 해제된다.

2.5. 자동들여쓰기 해제하기

vim 으로 코딩할 때 편리한 기능 중에 하나가 자동 들여쓰기가 아닐까 라고 생각한다.

그러나 자동 들여쓰기 기능이 너무 좋아서 불편한 경우가 있다. 주로 telnet 을 이용할 때 웹이나 다른 창에서 소스를 끍어붙이면 소스가 엉망으로 삽입된다. 이유는 vim 이 들여쓰기만 자동으로 실행되고 내어쓰기는 되지않기 때문이다.

하지만 자동 들여쓰기는 vi 의 옵션중에 하나 이기 때문에 다음과 같이 필요에 따라 해제하면 된다.

  • : set noautoindent
      또는
    : set noai
    

그리고 다시 자동 들여쓰기 기능을 사용하고 싶다면 다음과 같이 설정한다.

  • : set autoindent
      또는
    : set ai
    

똑똑한 유저라면 필요에 따라 적절히 선택할 수 있을 것이라고 생각한다.

2.6. 문법에 맞게 들여쓰기 재정렬하기

vim 에서는 C/C++ 파일이나 기타 다른 언어의 파일들을 각각의 문법에 맞게 들여쓰기를 재정렬할 수 있다. 자동 들여쓰기는 코드 입력 과정에서 사용되지만 들여쓰기 재정렬 기능은 코드가 입력된 후에 일괄 처리할 수 있어서 편리하다.

  • 설명

    =

    선택된 영역을 들여쓰기 처리

    =a{

    현재 블럭을 들여쓰기 처리

    gg=G

    전체 내용을 들여쓰기 처리

2.7. 파일 삽입하기

vim 에서는 현재 편집 중인 파일에 다른 파일 내용을 삽입할 수도 있으며 명령이 실행된 결과를 삽입할 수도 있다.

  • 파일 삽입
    :r 파일명
    
  • 명령의 실행 결과 삽입
    :r! 명령어
    

2.8. 열어본 파일 이동하기

vim 을 통하여 열어본 파일 사이를 이동하는 방법이 있다. 이전에 열어봤던 파일이 히스토리에 남아있다면 역시 열어볼 수 있다. 필요성이 있을지는 모르겠지만 간단한 키조작으로 이동가능하다.

  • 설명

    <Ctrl+O>

    이전 파일로 커서를 이동

    <Ctrl+I>

    다음 파일로 커서를 이동

3. vim 의 fold 기능

3.1. fold 키

  • 설명

    설명

    zf

    폴더 생성 (접기)

    zd

    폴더 삭제 (펴기)

    zo

    폴더 펴기

    zc

    폴더 접기

    za

    폴더 접기/편기 (토글)

    zi

    폴더 기능 On/Off

    zj

    다음 폴더로 이동

    zk

    이전 폴더로 이동

3.2. fold 기능 옵션

  • fold 옵션 - 폴더 정보 저장 방식 지정 (vim 도움말 참고)
    : set foldmethod=manual
    
  • fold 정보 저장/읽기
    • 폴더 정보 저장 파일: ~/.vim/view

    명령

    설명

    :mkview

    폴더 정보 저장

    :loadview

    폴더 정보 읽기

  • fold 정보 자동 저장/읽기
    • vim 설정 추가: ~/.vimrc

    명령

    설명

    au BufWinLeave *.[ch]* mkview

    *.c* 또는 *.h* 파일을 로딩시 폴더 정보 저장

    au BufWinEnter *.[ch]* silent loadview

    *.c* 또는 *.h* 파일을 로딩시 폴더 정보 읽기

4. vim 키 정리

4.1. 커서 이동 키

  • 설명

    H

    화면의 첫 줄로 이동

    M

    화면의 중간 줄로 이동

    L

    화면의 마지막 줄로 이동

    %

    괄호 ([], {}, ()) 가 일치하는 위치로 이동

    설명

    설명

    w

    다음 단어의 첫 글자로 이동

    W

    'w' 와 동일. WORD 단위 이동

    e

    다음 단어의 마지막 글자로 이동

    E

    'e' 와 동일. WORD 단위 이동

    b

    앞 단어의 첫 글자로 이동

    B

    'b' 와 동일. WORD 단위 이동

    ge

    앞 단어의 마지막 글자로 이동

    gE

    'ge' 와 동일. WORD 단위 이동

    참고> WORD 단위: 공백있는 위치까지 하나의 단어로 인식

4.2. 스크롤 키

  • 설명

    설명

    <Ctrl+B>

    한 화면씩 위로 스크롤

    z<CR>

    커서가 위한 줄을 화면 처음으로 이동

    <Ctrl+F>

    한 화면씩 아래로 스크롤

    zt

    'z<CR>' 과 동일, 현재 컬럼 유지

    <Ctrl+U>

    화면의 절반씩 위로 스크롤

    z.

    커서가 위한 줄을 화면 중앙으로 이동

    <Ctrl+D>

    화면의 절반씩 아래로 스크롤

    zz

    'z.' 과 동일, 현재 컬럼 유지

    <Ctrl+Y>

    현재 커서 위치를 유지하면서 위로 스크롤

    z-

    커서가 위한 줄을 화면 아래으로 이동

    <Ctrl+E>

    현재 커서 위치를 유지하면서 아래로 스크롤

    zb

    'z-' 과 동일, 현재 컬럼 유지

4.3. 블럭 지정 (VISUAL 모드) 키

  • 설명

    v

    문자 단위로 블럭 지정

    V

    줄 단위로 블럭 지정

    <Ctrl+V>

    세로 단위 블럭 지정

4.4. tags 기능

모든 tags 명령에서 근접단어를 입력한 후

  • 설명

    <Ctrl+D>

    근접단어로 시작하는 tag 목록 출력

4.5. 특수 키

숫자 위에 커서를 이동 시킨 후

  • 설명

    <Ctrl+A>

    숫자 증가

    <Ctrl+X>

    숫자 감소

4.6. Function 키 정의

vim 에서는 <F1> ~ <F12> 키에 기능을 정의할 수 있다. 홈디렉토리의 .vimrc 파일에 아래의 내용을 추가한 후 vim 을 실행시키면 된다. 단, CRT ( http://www.vandyke.com ) 와 같이 Function 키 입력이 가능한 터미널 프로그램에서만 가능하다.

  • " vim 의 편집 기능키 정의 "
    "-------------------------"
    
    map <F1>  K                     " 도움말
    map <F2>  :w!<CR>               " 파일 저장
    
    map <F3>  [{v]}zf               " 함수 축소
    map <F4>  zo                    " 축소 해제
    
    map <F5>  ^]                    " tags 추적
    map <F6>  ^T                    " tags 복귀
    map <F7>  :tnext<CR>            " 다음 tags 검색
    
    map <F8>  [i                    " 함수 원형 보기
    map <F9>  gd                    " 지역 변수 보기
    map <F10> ''                    " 원래 위치로 복귀
    
    map <F11> :n<CR>                " 다음 파일로 전환
    map <F12> :N<CR>                " 이전 파일로 전환
    

5. vim 의 프로그래밍 지원 기능

5.1. 자동 완성 기능

입력 모드에서 함수 또는 변수명 입력 시 자동완성 기능을 사용할 수 있다.

  • 설명

    ^P

    일치하는 이전 단어 를 검색

    ^N

    일치하는 다음 단어 를 검색

5.2. 검색 기능

소스 코드 중 함수 또는 변수명, 헤더 파일명 위에 커서를 옮겨놓고 아래의 키를 누르면 해당 기능이 동작한다.

  • 설명

    gd

    지역 변수 찾기

    gD

    전역 변수 찾기

    ' '

    원래 위치로 복귀

    <Ctrl+wi>

    함수가 선언된 위치로 이동

    <Ctrl+wf>

    헤더 파일을 연다.

    K

    함수의 도움말 (man page) 보기

5.3. 이동 기능

소스 코드 중 함수 또는 변수명, 매크로 위에 커서를 옮겨놓고 아래의 키를 누르면 해당 기능이 동작한다.

  • 식별자 (함수 또는 변수) 에 대한 기능

    설명

    설명

    [I

    해당 식별자가 있는 라인 목록 보기

    ]I

    커서 이후 해당 식별자가 있는 라인 목록 보기

    [i

    [I 목록 중 첫번째 보기

    ]i

    ]I 목록 중 첫번째 보기

    [<Tab> 또는
    [<Ctrl+I>

    [I 목록 중 첫번째 위치로 이동

    ]<Tab> 또는
    ]<Ctrl+I>

    ]I 목록 중 첫번째 위치로 이동

  • #define 으로 정의된 매크로 또는 상수에 대한 기능

    설명

    설명

    [D

    해당 식별자가 있는 라인 목록 보기

    ]D

    커서 이후 해당 식별자가 있는 라인 목록 보기

    [d

    [D 목록 중 첫번째 보기

    ]d

    ]D 목록 중 첫번째 보기

Posted by 알 수 없는 사용자
이전버튼 1 이전버튼