Note
vi 환경에서 코딩 작업 등을 할때 사전에 설정해 두면 편리한 기능 들을 정리

set 명령

:set ai (autoindent)

윗라인과 같이 자동으로 들려쓰기

:set si

코딩 할때 if, for 같은 것을 입력 하고 다음 라인으로 이동시 자동으로 들려쓰기

:set paste

붙여 넣기 할 경우 ai, si 옵션에 의한 계단 현상 방지

:set ts=4 (tabstop)

[tab] 키를 입력 하였을때 이동하는 크기 조정 (일반적으로 ts=4 가 적정함)

:set sw=4 (shiftwidth)

set si 했을 경우 들려쓰기 하는 깊이+ > 시프트 할 경우 깊이

:set et (expandtab)

[tab] 키를 입력 하였을때 tab에 대당하는 space 만큼 이동
Python, YAML 등 들려쓰기가 민감한 언어에서 유용

:set encoding=cp949|utf8

작업 하는 컴퓨터 또는 개발 언어에서 기본 인코딩 타입을 설정

:set fenc=cp949|utf8

다른 인코딩으로 저장 하고 싶을때 명령을 내리고 저장하면 해당 인코딩으로 저장

:set t_ti= t_te=

터미널 환경에서 vi를 종료 할때, 편집 하던 화면이 그대로 남도록 함

:set ruler

우측 하단에 라인 및 컬럼 위치 표시및 전체 문서의 위치를 %로 표시

:set sc

완성중인 명령을 표시, 비주얼 모드 에서는 선택된 블럭의 라인수를 표시

:set ff=unix|dos|mac

개행 문자를 OS 타입에 맞게 변경

:set key=<password>, set key=

문서를 암호화 시키고, 암호를 풀수 있음

:set ic (ignorecase)

매칭 검색 시 대소문자를 구별 하지 않음

:set hlsearch

검색어 하이라이팅

:set wam

저장하지 않고 종료시에 경고메시지 출력

:set sm (showmatch)

괄호를 닫을때 열기 괄호를 보여줌

:set nocp (nocompatible)

오리지널 vi와의 호환성을 없애고 vim만의 기능을 쓸 수 있게함

:syntax on|off

문법 강조를 켜거나 끔

:colors desert

칼라 스킴 설정

  • 지원하는 언어와 칼라스킴은 아래의 위치에서 확인 가능

    문법강조: /usr/local/share/vim/vim73/syntax
    칼라스킴: /usr/local/share/vim/vim73/colors
    Note
    OS에 따라 위치는 다를 수 있음
  • 모든 명령의 취소는 no를 앞에 붙여 주시면 됨

    :set noai
  • vim 실행시 설정을 자동으로 로딩하려면 홈디렉토리에 .vimrc 에 작성

    set ts=4
    set si
    set ai
    set sw=4
    set encoding=cp494
    Note
    Windows 는 vim 설치 디렉토리에 _vimrc 파일 사용

편집 작업시 유용한 기능

  • 화면 스크롤

    ^F : 한 화면 앞으로 스크롤
    ^B : 한 화면 뒤로 스크롤
    
    ^D : 반 화면 앞으로 스크롤
    ^U : 반 화면 뒤로 스크롤
    
    ^E : 한줄 앞으로 스크롤
    ^Y : 한줄 뒤로 스크롤
    
    H (shift+h) : 화면의 맨 윗줄로
    M (shift+m) : 화면의 중간 줄로
    L (shift+l): 화면의 맨 아랫줄로
  • 화면 나누기

    : vs  --> 수직으로 나눔
    
    : sp  --> 스평으로 나눔
    
    ^ww   --> 화면 간의 이동
  • 숫자 변경

    Ctrl + A  --> 커서 위치의 숫자 증가
    
    Ctrl + X  --> 커서 위치의 숫자 감소
  • 마크 이동

    m[a~z]  --> 현재의 위치를 기록
    
    '[a~z]  --> 기록한 위치로 이동
    
    ''      --> 이동하기 전의 위치로 이동
  • 접기

    접기: V 로 블럭 설정을 한후에 'zf'
    펴기: 'zo' 를 하면 다시 펴짐
  • 함수/변수명 자동 완성

    호출 하고자 하는 변수명이나 함수명의 앞글자만 쓰고서 '<Ctrl> + p' 를 입력 하면 자동 완성 됨
  • 잠시 쉘로 나가기

    ^z, 들어 올때는 fg

유용한 팁

  • 공백 라인 제거

    :g/^$/d
  • 정렬 및 중복 라인 제거

    :sort       # 정렬
    
    :sort!      # 역순 정렬
    
    :sort n     # 숫자 기준으로 정렬
    
    :sort! n    # 숫자 기준으로 역순 정렬
    
    :sort u     # 정렬 후 중복라인 제거
    
    :sort nu    # 숫자 기준으로 정렬 후 중복라인 제거
    
    :sort i     # 대/소문자 구분 하지 않고 정렬
    Tip
    각 옵션을 ':sort nu' 처럼 조합해서 사용 가능
  • 매칭 변경

    :1,$ s/<매칭스트링>/<변경스트링>/g      # 전체 라인에 대한 매칭 변경
    
    :% s/<매칭스트링>/<변경스트링>/g        # 위와 동일한 결과
    
    :5,10 s/<매칭스트링>/<변경스트링>/g     # 5~10 라인에 대한 매칭 변경 (라인은 비주얼 모드(V) 선택 가능)
    Tip
    매칭 스트링에 특수 문자 있을 경우 이스케이프문자 \ 특수 문자 앞에 넣어 줘야 함
  • 블록 선택 후 주석 처리

    shift + v           # 블럭 선택
    
    :'<,'>norm i#       # '#'으로 주석처리 ('#' 을 다른 기호로 바꿀 수 있음)
    
    :'<,'>norm x        # 주석 제거 (한컬럼을 지우는 작업)
    
    :'<,'>norm 2x        # 주석 제거 (두컬럼을 지우는 작업)
  • 컬럼 열로 간격 조정

    :%!column -t
  • 두번째 컬럼으로 정렬

    :%!sort -k2         # 두번째 필드 기준으로 정렬
    
    :%!sort -k2n        # 두번째 필드 기준으로 숫자 방식으로 정렬
    
    :%!sort -k2nr       # 두번째 필드 기준으로 숫자 방식으로 역순 정렬
    Note
    컴럼 구분을 스페이스로 해야 정상적으로 되는 듯 함…​

유용한 플러그인

syntastic

문법체크 플러그인 (https://github.com/vim-syntastic/syntastic)

neocomplete.vim

자동완성 플러그인 (https://github.com/Shougo/neocomplete.vim)

vim-airline

스테이터스 라인 제공 (https://github.com/vim-airline/vim-airline)

'리눅스 (Linux)' 카테고리의 다른 글

Netatalk 리눅스에서 AFP 서버 구성  (0) 2021.03.18
Linux 소소한 명령 및 팁 요약  (0) 2021.03.17
CentOS의 firewalld 관리  (0) 2021.03.14