====== VIM Cheat Sheet ====== {{pdfjs 850px > :public:computer:vim_cheatsheet.pdf |}} {{:public:computer:iigrixvxp5ayn9ox7gr1dfi_rhlrotwllscafjjqjeq.png|}} Command----- 도움말    :help {keyword} 다른 이름으로 저장    :saveas {file} 현재 영역 닫기    :close 커서가 위치한 단어에 대한 맨페이지 열기    K 새 버퍼에서 파일 편집    :e {file} 다음 버퍼로 이동    :bnext or :bn 이전 버퍼로 이동    :bprev or :bp 버퍼 삭제(파일 닫기)     :bd 열린 버퍼 모두 나열    :ls 새 버퍼에 파일 열고 상하로 창 분할    :sp {file} 서 버퍼에 파일 열고 좌우로 창 분할    :vsp {file} 상하로 창 분할    Ctrl + ws 창 전환    Ctrl + ww 창 닫기    Ctrl + wq 좌우로 창 분할    Ctrl +wv 오른쪽 창으로 이동(좌우 분할)    Ctrl + wh 왼쪽 창으로 이동(좌우 분할)    Ctrl + wl 아래 창으로 이동(상하 분할)    Ctrl + wj 위 창으로 이동(상하 분할)    Ctrl + wk 새 탭에서 파일 열기    :tabnew or :tabnew {file} 힌재 분할 창을 새로운 탭으로 이동    Ctrl + wT 다음 탭으로 이동    gt or :tabnext or :tabn 이전 탭으로 이동    gT or :tabprev or :tabp #번 탭으로 이동    {#}gt 현재 탭을 #번째로 이동(0부터 시작)    :tabmove {#} 현재 탭과 그 안의 창들 닫기    :tabclose or :tabc 현재 탭 이외의 모든 탭 닫기    :tabonly or :tabo 모든 탭에서 commnad 실행하기    :tabdo {command}    예) 열린 모든 탭 닫기 :tabdo q) 저장하고, 나가지는 않기    :w sudo로 현재 파일 저장    :w !sudo tee % 저장하고 나가기    :wq or :x or ZZ 나가기(저장하지 않은 변경 사항 있으면 실패)    :q 나가기(저장하지 않은 변경 사항 버림)    :q! or ZQ 열어 놓았던 모든 탭을 다 저장하고 나가기    :wqa 찾기와 바꾸기----- 패턴 찾기    /{pattern} 패턴 역방향 찾기    ?{pattern} '마법'패턴 : 영문/숫자가 아닌 문자는 정규표현식 심볼로 해석(이스케이프 불필요)    \v{pattern} 같은 방향으로 찾기 반복    n 반대 방향으로 찾기 반복    N 파일 내 모든 old를 new로 바꾸기    :%s/{old}/{new}/g 파일 내 모든 old를 new로 확인하며 바꾸기    :%s/{old}/{new}/gc 찾기 강조 표시 없애기    :noh 여러 파일에서 패턴 찾기    :vimgrep /pattern/ {file}    예) :vimgrep /foo/ **/* 다음 일치 항목으로 점프    :cn 이전 일치 항목으로 점프    :cp 일치 목록을 새창으로 열기    :copen 이동----- 왼쪽으로 이동         한 칸 h     처음 단어 시작으로 점프 w     이전 단어 시작으로 점프 b     이전 단어 시작으로 점프 B 아래로 이동     한 칸 j     화면 하단 L 가운데로 이동     화면 가운데 M 위로 이동         한 칸 k     화면 상단 H 오른쪽으로 이동     한 칸 l     다음 단어 시작으로 점프 W     다음 단어 끝어로 점프 E 현재 괄호와 맞는 짝의 괄호로 이동    % 행     행의 처음으로 점프    0     행의 시작 문자로 점프    ^     행의 끝으로 점프    $     행의 끝 문자로 점프    g_ 문서     문서 마지막 행으로 점프    G     x번째 행으로 점프    {x}G     커서 위치 기준, 오른쪽에서 가장 가까운 문자 x로 이동    f{x}     커서 위치 기준, 오른쪽에서 가장 가까운 문자 x의 한 칸 뒤(왼쪽)으로 이동    t{x}     커서 위치 기준 왼쪽에서 가장 가까운 문자 x로 이동    F{x}     커서 위치 기준 왼쪽에서 가장 가까운 문자 x의 한 칸 앞(오른쪽)으로 이동    T{x} 가장 최근의 f, t, F, T 명령을 다시 실행    ; 가장 최근의 f, t, F, T 명령을 반대 방향으로 다시 실행    , 다음 단락(또는 함수/블록)으로 이동    } 이전 단락(또는 함수/블록)으로 이동    { 커서가 있는 행을 중간으로 하도록 화면 이동    zz 커서를 움직이지 않고 화면을 한 줄 아래로 이동    Ctrl + e 커서를 움직이지 않고 화면을 한 줄 위로 이동    Ctrl + y 한 화면 위로    Ctrl + b 한 화면 아래로    Ctrl + f     Ctrl + d     Ctrl + u ** 커서 이동 명령 앞에 숫자를 붙이면 그 수만큼 반복. 예) 4j는 4행 아래로 이동 삽입----- 커서 앞에 삽입    i 행 시작에 삽입    I 커서 뒤에 추가    a 행 끝에 추가    A 현재 행 아래에 새 행 추가    o 현재 행 위에 새 행 추가    O 단어 끝에 추가    ea 삽입모드 종료    ESC 편집---- 한 글자 바꾸기    r 현재 행과 다음 행을 연결    J 현재 행과 다음 행을 둘 사이에 공백 없이 연결    gJ reflow paragraph    gwip 행 전체를 새로 쓰기    cc change (replace) to the end of the line    C 행 끝까지를 새로 쓰기    c$ change (replace) entire word    cw 한 글자 삭제하고 삽입 모드 시작    s 행 삭제하고 텍스트 입력 (cc와 동일)    S 두 문자 위치 바꾸기(잘라내기 붙여넣기 조합)    xp 실행 취소    u 다시 실행    Ctrl + r 마지막 명령 반복    . 행 복사    yy 2줄 복사    2yy 커서 위치에서 다음 단어 시작까지 복사    yw 행 끝까지 복사    y$ 커서 위치 뒤에 붙여넣기    p 커서 위치 앞에 붙여넣기    P 행 잘라내기    dd 2줄 잘라내기    2dd 커서 위치에서 다음 단어 시작까지 잘라내기    dw 행 끝까지 잘라내기    D 행 끝까지 잘라내기    d$ 한 글자 잘라내기    x Ctrl+c로 복사한 텍스트 붙여넣기 “+p (따옴표,+,p 세 개의 키) 비주얼 모드(텍스트 선택)----- 선택모드 시작. 텍스트 선택해서 명령 수행(가령 y로 복사)    v 행 단위 선택 모드 시작    V 선택 영역의 반대쪽 끝으로 이동    o 블록 선택모드 시작    Ctrl + v 블록의 반대쪽 모서리로 이동    O 단어 선택    aw ()블럭 선택    ab {}블럭 선택    aB ()블럭의 내부 선택    ib {}블럭의 내부 선택    iB 선택 모드 종료    ESC 선택 모드 명령----- 텍스트를 오른쪽으로 이동    > 텍스트를 왼쪽으로 이동    < 선택한 텍스트 복사    y 선택한 텍스트 삭제    d 대소문자 반전    ~ 레지스터----- 레지스터 내용을 표시    :reg 레지스터 x로 복사    "{x}y 레지스터 x의 내용물 붙여넣기    "{x}p ** 레지스터들은 ./viminfo에 저장되며 다음 번 vim 재시작 때 다시 읽어들임. ** 0번 레지스터에는 항상 최근 복사 명령의 값이 들어있음. 표시----- 표시 항목 표시    :marks 현재 위치를 a로 설정    m{a} 표시 a의 위치로 점프    '{a} 표시 a의 위치까지 복사    y'{a} 매크로----- 매크로 a 기록 시작    q{a} 매크로 기록 중지    q 매크로 a 실행    @{a} 마지막 실행한 매크로 재실행    @@ === VIM TUTOR === 커서 움직이기; hjkl 끝내기(저장하지 않음); :q! 한 글자 지우기; x 텍스트 입력; i 커서가 위치한 줄의 맨 끝에 텍스트 추가; A 저장하고 종료; :wq 단어 삭제; dw 줄의 끝까지 삭제; d$ dw(delete word with space), de(delete word without space), d$(delete till end of line) 두 단어 뒤로 이동(앞글자); 2w 세 단어 뒤로 이동(끝글자); 3e 문장의 시작으로 이동; 0 두 단어 삭제; d2w [횟수],명령,대상 | 명령,[횟수],대상 현재 줄 전체 삭제, 2줄 전체 삭제; dd, 2dd 마지막 명령 취소, 한 줄에서 수정한 것을 모두 취소, 취소 한 것 다시 실행; u, U, Ctrl+R put; p replace; r 한 단어 전체 change; ce [횟수],c,대상 | c,[횟수],대상, w(단어), $(줄의 끝) 파일 내에서의 현재 위치와 파일 상태 보기, 파일의 마지막으로 이동, 파일의 시작으로 이동, 줄번호로 이동; Ctrl+G, G, gg, [줄번호]G 텍스트 검색 -> 다음, 이전, 원래 자리로 돌아가기, 다시 뒤로 가기; /[검색할텍스트] -> n, Shift+N, ?, Ctrl+O, Ctrl+I (),[],{}의 짝 찾기; % 치환(subtitute); :/s/[기존값]/[새값](/g), :#,#s/old/new/g, :%s/old/new/g, :%s/old/new/gc 외부 명령어 실행; :![외부명령어] 파일 이름으로 저장; :w [FILENAME] 비주얼 모드로 선택 -> 선택한 것으로 파일이름 저장; v -> w: [FILENAME] 파일이름을 불러와 붙이기; :r [FILENAME] 커서 아래에 줄을 만들고 편집, 커서 위에 줄을 만들고 편집; o, O 커서 다음에 입력(append); a 다른 버전의 치환(Replace); R 비주얼모드 -> 복사(yank(copy), 붙이기(paste), 한 단어 복사, 다음 문장 끝으로 이동; v -> y, p, yw, j$ 대소문자 구분 안하는 세팅, hlsearch와 incsearch 옵션 설정, 대소문자 구분 끄기, ;:set ic, :set hls is, :set noic, :nohlsearch, :/ignore\c | | :help -> :q, Ctrl+W Ctrl+W, :q :e ~/.vimrc | :e ~/_vimrc -> :r $VIMRUNTIME/vimrc_example.vim, :w Ctrl+d, , :set nocp === VI 명령어 === http://www.abyul.com/zbxe/aMST_ETC/70940 {{ :public:computer:unix_linux_vi_commands_20091110.xls |}} ▲ UNIX의 VI 명령어 정리   From. http://hbesthee.tistory.com/494  ☆ 삽입 명령   ^명령어 ^설명 ^ |a |커서 뒤에 입력 | |A |라인 끝에 입력  | |i |커서 앞에 입력  | |I |라인시작 부분에 입력  | |o |커서 있는 라인 밑에 입력  | |O |커서가 있는 라인 위에 입력  | ☆ 커서 이동 명령   ^명령어 ^설명 ^ |h |왼쪽으로 커서 한 칸 이동 | |H |화면의 처음으로 이동 | |L |오른쪽으로 한 칸 이동 | |L |화면 끝으로 이동 | |e |다음 단어의 마지막으로 이동 | |E |커서를 공백으로 구분된 다음 단어 끝으로 이동 | |b |한 단어 뒤로 | |B |커서를 공백으로 구분된 이전 단어로 이동 | |w |커서를 한 단어 뒤로 | |W |커서를 공백으로 구분된 다음 단어로 이동 | |k |커서를 한 라인 위로 | |j |커서를 한 라인 아래로 이동 | |O |커서를 라인의 시작으로 이동 | |$ |커서를 라인의 끝으로 이동 | |Enter |커서를 다음 라인 시작으로 이동 | |- |커서를 전 라인의 시작으로 이동 | |Ctrl + F |다음 화면으로 이동 | |Ctrl + D |화면의 반만 앞으로 이동 | |Ctrl + B |전 화면으로 이동 | |Ctrl + U |화면의 반만 뒤로 이동 | |G |커서를 텍스트 마지막 라인으로 | |숫자G |커서를 숫자 라인만큼 이동 | |M |커서를 화면 중간 라인으로 이동 | |“ |커서를 전 위치로 이동 | |( |문장의 시작으로 이동 | |{ |문단의 시작으로 이동 | |) |문장 끝으로 이동하여 다음 단어의 시작으로 커서 이동 | |} |문단 끝으로 이동 | ☆ 방향키를 이용한 커서 이동 명령   ^명령어 ^설명 ^ |<-, Del |왼쪽으로 커서 한 칸 이동 | |PageUp |화면 위로 이동 | |->, Space |오른쪽으로 한 칸 이동 | |PageDown |화면 아래로 이동 | |↑ |윗 줄로 커서 이동 | |Enter |다음 줄 첫 칸으로 이동 | |↓ |아래 줄로 커서 이동 | |Esc |다음 줄 첫 칸으로 이동 | |Home |줄 처음 칸으로 이동 |  ☆ 삭제 명령   ^명령어 ^설명 ^ |x |커서가 있는 문자 삭제 | |X |커서가 있는 문자 앞에 있는 문자 삭제 | |dw |커서가 있는 단어 삭제 | |db |커서가 앞에 있는 단어 삭제 | |dW |공백으로 구분된 뒷 단어 삭제 | |dB |공백으로 구분된 앞 단어 삭제 | |dd |커서가 있는 라인 삭제 | |D |커서가 있는 라인의 나머지 삭제 | |d) |문장의 나머지 삭제 | |d} |문단의 나머지 삭제 | |dG |파일의 나머지 삭제 | |dH |화면의 시작까지 삭제 | |dL |화면의 나머지 삭제 | |J |커서와 다음 단어의 공백을 모두 삭제 |  ☆ 바꾸기 명령   ^명령어 ^설명 ^ |r |커서에 있는 문자 대치 | |R |입력 모드로 한 문자씩 덮어씀 | |s |커서가 있는 문자 삭제 후 입력 모드로 전환 | |S |커서가 있는 줄을 삭제 후 입력 모드로 전환 | |cb |커서가 있는 앞 문자 삭제 후 입력 모드 | |cW |공백으로 구분된 뒷 단어를 삭제 후에 입력 모드 | |cB |공백으로 구분된 앞 단어 삭제 후 입력 모드 | |cc |커서가 있는 라인을 삭제하고 입력 모드 | |C |커서가 있는 라인의 나머지를 삭제하고 입력 모드로 전환 | |cO |커서에서부터 라인의 시작까지 텍스트 바꾸기 | |c |특정 텍스트 바꾸기 | |c) |문장의 나머지 바꾸기 | |c} |문단의 나머지 바꾸기 | |cG |파일의 나머지 바꾸기 | |cm |표시까지 모든 것 바꾸기 | |cL |화면의 나머지 바꾸기 | |ch |화면의 시작까지 바꾸기 |  ☆ 복사   ^명령어 ^설명 ^ |yw |커서가 있는 단어를 복사 | |yb |커서가 있는 앞 단어를 복사 | |yW |공백으로 구분된 뒷 단어 복사 | |yB |공백으로 구분된 앞 단어를 복사 | |y |특정한 다음 텍스트 복사 | |yy |커서가 있는 라인을 복사, 커서가 가리키는 곳으로 라인을 이동 | |y) |문자의 나머지 복사 | |y} |문단의 나머지 복사 | |yG |파일의 나머지 복사 | |yH |화면의 시작까지 복사 | |yL |화면의 나머지 복사 |  ☆ 텍스트 이동   ^명령어 ^설명 ^ |p |삭제나 복사된 텍스트를 커서가 있는 문자나 라인 뒤에 삽입 | |P |삭제나 복사된 텍스트를 커서가 있는 문자나 라인 앞에 삽입 | |dw p |커서가 있는 단어를 삭제한 후 이를 원하는 곳 커서 뒤로 삽입 | |dw P |커서가 있는 단어를 삭제한 후 이를 변경한 커서가 있는 곳으로 삽입 | |d p |지정한 다음 텍스트로 삭제한 후 커서가 가리키는 곳으로 이동 | |d) P |문장의 나머지로 이동 | |d} p |문단의 나머지로 이동 | |dG P |파일의 나머지로 이동 | |dH P |화면 시작 부분으로 이동 | |dL P |화면의 나머지를 이동 |  ☆ vi 에디터 종료 마치기 명령   ^명령어 ^설명 ^ |:q |그대로 종료하기 | |:q! |변경된 내용을 저장하지 않고 강제로 종료하기 | |:wq |변경된 내용을 저장하고 종료하기 | |:x |:wq와 동일한 명령 | |ZZ |:wq와 동일한 명령 |  ☆ 검색   ^명령어 ^설명 ^ |/pattern |텍스트에서 앞으로 패턴 검색 | |>pattern |텍스트에서 뒤로 패턴 검색 | |n |앞 또는 뒤로 이전 검색 반복 | |N |반대 방향으로 이전 검색 반복 | |/ |전 검색을 앞으로 반복 | |? |전 검색을 뒤로 반복 |  ☆ 문자열 치환   ^명령어 ^설명 ^ |:s/old/new |현재 행의 처음 old를 new로 교체 | |:s/old/new/g |현재 행의 모든 old를 new로 교체 | |:10,20s/old/new/g |10행부터 20행까지 모든 old를 new로 교체 | |:-3,+4s/old/new/g |현재 커서 위치에서 3행 위부터 4행 아래까지 old를 new로 교체 | |:%s/old/new/g |문서 전체에서 old를 new로 교체 | |:%s/old/new/gc |문서 전체에서 old를 new로 확인하며 교체 | |:g/pattern/s/old/new/g |Pattern이 있는 모든 행의 old를 new로 교체 | |%%:g/pattern/s//new/g%% |:%s/old/new/g와 동일 |  ☆ 옵션   ^옵션 ^기능 ^약어 ^기본값 ^ |autoindent |들여 쓰기 가능, 탭으로 들여 쓰기 범위 지정|ai |off | |autoprint |줄이 바뀔 때 현재 줄을 화면상에서 출력|ap |on | |errobells |명령 에러가 발생시 삑 소리나게 함|ed |off | |number |줄 번호를 나타나게 함|nu |off | |report |편집시 메시지를 보낼 편집 변화 크기 지정 |report |5 | |showmatch |가로 닫기 괄호를 사용할 때 일치하는 가로 열기 괄호를 보여줌 |sm |off | |wam |저장하지 않고 vi 종료할 때 경고 메시지를 뿌려 줌 |wam |on | |ignorecase |검색 패턴에 사용되는 대소문자 구별하지 않음 |ic |on | |tabstopp=n |탭 공백을 n 수만큼 지정 |ts=n |8 | |wrapmargin=n |텍스트 오른쪽 여백을 n 수만큼 지정 |wm=n |0 |  ☆ Mark 사용   ^명령어 ^설명 ^ |mx |현재 위치를 x 이름의 마크로 저장 | |`` |이전에 마크한 위치로 이동 | |`x |마크한 위치(행, 열)로 이동 | |‘’ |이전에 마크한 줄로 이동 | |‘x |마크한 줄로 이동 |  ☆ Named Buffer 사용   ^명령어 ^설명 ^ |“ayy |현재 줄을 "a 버퍼에 복사 | |“Ayy |기존의 버퍼에 현재 줄을 버퍼에 추가 | |"ap |“a 버퍼에 복사된 데이터를 붙여 넣기 \\ ☞‘a’ 부터 ‘z’ 까지 사용가능 |  ☆ 여러 문서 편집 ( vi filename1, filename2 … 로 실행 ; 여러 파일 열기)   ^명령어 ^설명 ^ |:n |vi로 open한 여러 파일중 다음 파일로 전환 | |:N |vi로 open한 여러 파일중 이전 파일로 전환 | |:4n |여러 파일중 4개 파일 skip후 파일 Open | |:args |현재 열린 모든 파일중 현재 편집중인 파일 표시 | ==== _vimrc ==== * Install Vundle $ git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim or > cd %USERPROFILE% > git clone https://github.com/VundleVim/Vundle.vim.git %USERPROFILE%/.vim/bundle/Vundle.vim > gvim .vimrc * Plugin set nocompatible " be iMproved, required filetype off " required set shellslash "-------------------------------------------------------------- " Specify a directory for plugins " - For Neovim: stdpath('data') . '/plugged' " - Avoid using standard Vim directory names like 'plugin' "call plug#begin('~/.vim/plugged') " Make sure you use single quotes " Shorthand notation; fetches https://github.com/junegunn/vim-easy-align "Plug 'junegunn/vim-easy-align' " Any valid git URL is allowed "Plug 'https://github.com/junegunn/vim-github-dashboard.git' " Multiple Plug commands can be written in a single line using | separators "Plug 'SirVer/ultisnips' | Plug 'honza/vim-snippets' " On-demand loading "Plug 'scrooloose/nerdtree', { 'on': 'NERDTreeToggle' } "Plug 'tpope/vim-fireplace', { 'for': 'clojure' } " Using a non-default branch "Plug 'rdnetto/YCM-Generator', { 'branch': 'stable' } " Using a tagged release; wildcard allowed (requires git 1.9.2 or above) "Plug 'fatih/vim-go', { 'tag': '*' } " Plugin options "Plug 'nsf/gocode', { 'tag': 'v.20150303', 'rtp': 'vim' } " Plugin outside ~/.vim/plugged with post-update hook "Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --all' } " Unmanaged plugin (manually installed and updated) "Plug '~/my-prototype-plugin' " Plugin airline "Plug 'vim-airline/vim-airline' "Plug 'vim-airline/vim-airline-themes' "Plug 'scrooloose/syntastic' "Plug 'posva/vim-vue' "Plug 'altercation/vim-colors-solarized' " Initialize plugin system "call plug#end() "-------------------------------------------------------------- " set the runtime path to include Vundle and initialize set rtp+=~/.vim/bundle/Vundle.vim call vundle#begin() " alternatively, pass a path where Vundle should install plugins "call vundle#begin('~/some/path/here') " let Vundle manage Vundle, required Plugin 'VundleVim/Vundle.vim' " The following are examples of different formats supported. " Keep Plugin commands between vundle#begin/end. " plugin on GitHub repo Plugin 'tpope/vim-fugitive' " plugin from http://vim-scripts.org/vim/scripts.html " Plugin 'L9' " Git plugin not hosted on GitHub Plugin 'git://git.wincent.com/command-t.git' " git repos on your local machine (i.e. when working on your own plugin) "Plugin 'file:///home/gmarik/path/to/plugin' " The sparkup vim script is in a subdirectory of this repo called vim. " Pass the path to set the runtimepath properly. Plugin 'rstacruz/sparkup', {'rtp': 'vim/'} " Install L9 and avoid a Naming conflict if you've already installed a " different version somewhere else. " Plugin 'ascenator/L9', {'name': 'newL9'} Plugin 'vim-airline/vim-airline' Plugin 'vim-airline/vim-airline-themes' Plugin 'scrooloose/syntastic' Plugin 'posva/vim-vue' Plugin 'altercation/vim-colors-solarized' " All of your Plugins must be added before the following line call vundle#end() " required filetype plugin indent on " required " To ignore plugin indent changes, instead use: "filetype plugin on " " Brief help " :PluginList - lists configured plugins " :PluginInstall - installs plugins; append `!` to update or just :PluginUpdate " :PluginSearch foo - searches for foo; append `!` to refresh local cache " :PluginClean - confirms removal of unused plugins; append `!` to auto-approve removal " " see :h vundle for more details or wiki for FAQ " Put your non-Plugin stuff after this line "-------------------------------------------------------------- " An example for a gvimrc file. " The commands in this are executed when the GUI is started, after the vimrc " has been executed. " " Maintainer: Bram Moolenaar " Last change: 2016 Apr 05 " " To use it, copy it to " for Unix: ~/.gvimrc " for Amiga: s:.gvimrc " for MS-Windows: $VIM\_gvimrc " for Haiku: ~/config/settings/vim/gvimrc " for OpenVMS: sys$login:.gvimrc " Make external commands work through a pipe instead of a pseudo-tty "set noguipty " set the X11 font to use " set guifont=-misc-fixed-medium-r-normal--14-130-75-75-c-70-iso8859-1 set ch=2 " Make command line two lines high set mousehide " Hide the mouse when typing text " Make shift-insert work like in Xterm map map! " Only do this for Vim version 5.0 and later. if version >= 500 " Switch on syntax highlighting if it wasn't on yet. if !exists("syntax_on") syntax on endif " For Win32 version, have "K" lookup the keyword in a help file "if has("win32") " let winhelpfile='windows.hlp' " map K :execute "!start winhlp32 -k " . winhelpfile "endif " Set nice colors " background for normal text is light grey " Text below the last line is darker grey " Cursor is green, Cyan when ":lmap" mappings are active " Constants are not underlined but have a slightly lighter background highlight Normal guibg=grey90 highlight Cursor guibg=Green guifg=NONE highlight lCursor guibg=Cyan guifg=NONE highlight NonText guibg=grey80 highlight Constant gui=NONE guibg=grey95 highlight Special gui=NONE guibg=grey95 endif set guifont=D2Coding:h12:cHANGEUL:qDEFAULT " set guifont=Source_Code_Pro:h12:cANSI:qDEFAULT if has("gui_running") set encoding=utf-8 source $VIMRUNTIME/mswin.vim behave mswin if has('win32') set keymodel=startsel " set guifont=Source\ Code\ Pro:h16:cANSI:qDEFAULT " set guifont=JetBrains\ Mono\ Regular:h18:cANSI:qDEFAULT " set guifont=D2Coding\ ligature:h16:cHANGEUL:qDEFAULT set renderoptions=type:directx, \gamma:1.0, \contrast:0.5, \level:1, \geom:1, \renmode:5, \taamode:1 " restore Ctrl-F to Page down unmap elseif has('gui_macvim') set guifont=JetBrains\ Mono\ 16 set antialias else set guifont=JetBrains\ Mono\ 16 endif " Turn off toolbar "set guioptions-=T " Turn on menu "set guioptions+=m end set smartindent set tabstop=2 set expandtab set shiftwidth=2 " colorscheme darkblue "set statusline+=%#warningmsg# "set statusline+=%{SyntasticStatuslineFlag()} "set statusline+=%* "let g:syntastic_always_populate_loc_list = 1 "let g:syntastic_auto_loc_list = 1 "let g:syntastic_check_on_open = 1 "let g:syntastic_check_on_wq = 0 let g:airline#extensions#tabline#enabled = 1 let g:airline_powerline_fonts = 1 syntax enable set background=dark colorscheme solarized set encoding=utf-8 "set rop=type:directx,gamma:1.0,contrast:0.5,level:1,geom:1,renmode:4,taamode:1 "let g:airline_section_z = airline#section#create(['windowswap', '%3p%% ', 'linenr', ':%3v']) set nu set clipboard=unnamed set laststatus=2 set lines=50 * Plug set nocompatible " be iMproved, required filetype off " required set shellslash "-------------------------------------------------------------- " Specify a directory for plugins " - For Neovim: stdpath('data') . '/plugged' " - Avoid using standard Vim directory names like 'plugin' call plug#begin('~/.vim/plugged') " Make sure you use single quotes " Shorthand notation; fetches https://github.com/junegunn/vim-easy-align Plug 'junegunn/vim-easy-align' " Any valid git URL is allowed Plug 'https://github.com/junegunn/vim-github-dashboard.git' " Multiple Plug commands can be written in a single line using | separators Plug 'SirVer/ultisnips' | Plug 'honza/vim-snippets' " On-demand loading Plug 'scrooloose/nerdtree', { 'on': 'NERDTreeToggle' } Plug 'tpope/vim-fireplace', { 'for': 'clojure' } " Using a non-default branch Plug 'rdnetto/YCM-Generator', { 'branch': 'stable' } " Using a tagged release; wildcard allowed (requires git 1.9.2 or above) Plug 'fatih/vim-go', { 'tag': '*' } " Plugin options Plug 'nsf/gocode', { 'tag': 'v.20150303', 'rtp': 'vim' } " Plugin outside ~/.vim/plugged with post-update hook Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --all' } " Unmanaged plugin (manually installed and updated) Plug '~/my-prototype-plugin' " Plugin airline Plug 'vim-airline/vim-airline' Plug 'vim-airline/vim-airline-themes' Plug 'scrooloose/syntastic' Plug 'posva/vim-vue' Plug 'altercation/vim-colors-solarized' " Initialize plugin system call plug#end() "-------------------------------------------------------------- " set the runtime path to include Vundle and initialize set rtp+=~/.vim/bundle/Vundle.vim call vundle#begin() " alternatively, pass a path where Vundle should install plugins "call vundle#begin('~/some/path/here') " let Vundle manage Vundle, required Plugin 'VundleVim/Vundle.vim' " The following are examples of different formats supported. " Keep Plugin commands between vundle#begin/end. " plugin on GitHub repo Plugin 'tpope/vim-fugitive' " plugin from http://vim-scripts.org/vim/scripts.html " Plugin 'L9' " Git plugin not hosted on GitHub Plugin 'git://git.wincent.com/command-t.git' " git repos on your local machine (i.e. when working on your own plugin) "Plugin 'file:///home/gmarik/path/to/plugin' " The sparkup vim script is in a subdirectory of this repo called vim. " Pass the path to set the runtimepath properly. Plugin 'rstacruz/sparkup', {'rtp': 'vim/'} " Install L9 and avoid a Naming conflict if you've already installed a " different version somewhere else. " Plugin 'ascenator/L9', {'name': 'newL9'} Plugin 'vim-airline/vim-airline' Plugin 'vim-airline/vim-airline-themes' Plugin 'scrooloose/syntastic' Plugin 'posva/vim-vue' Plugin 'altercation/vim-colors-solarized' " All of your Plugins must be added before the following line call vundle#end() " required filetype plugin indent on " required " To ignore plugin indent changes, instead use: "filetype plugin on " " Brief help " :PluginList - lists configured plugins " :PluginInstall - installs plugins; append `!` to update or just :PluginUpdate " :PluginSearch foo - searches for foo; append `!` to refresh local cache " :PluginClean - confirms removal of unused plugins; append `!` to auto-approve removal " " see :h vundle for more details or wiki for FAQ " Put your non-Plugin stuff after this line "-------------------------------------------------------------- " An example for a gvimrc file. " The commands in this are executed when the GUI is started, after the vimrc " has been executed. " " Maintainer: Bram Moolenaar " Last change: 2016 Apr 05 " " To use it, copy it to " for Unix: ~/.gvimrc " for Amiga: s:.gvimrc " for MS-Windows: $VIM\_gvimrc " for Haiku: ~/config/settings/vim/gvimrc " for OpenVMS: sys$login:.gvimrc " Make external commands work through a pipe instead of a pseudo-tty "set noguipty " set the X11 font to use " set guifont=-misc-fixed-medium-r-normal--14-130-75-75-c-70-iso8859-1 set ch=2 " Make command line two lines high set mousehide " Hide the mouse when typing text " Make shift-insert work like in Xterm map map! " Only do this for Vim version 5.0 and later. if version >= 500 " Switch on syntax highlighting if it wasn't on yet. if !exists("syntax_on") syntax on endif " For Win32 version, have "K" lookup the keyword in a help file "if has("win32") " let winhelpfile='windows.hlp' " map K :execute "!start winhlp32 -k " . winhelpfile "endif " Set nice colors " background for normal text is light grey " Text below the last line is darker grey " Cursor is green, Cyan when ":lmap" mappings are active " Constants are not underlined but have a slightly lighter background highlight Normal guibg=grey90 highlight Cursor guibg=Green guifg=NONE highlight lCursor guibg=Cyan guifg=NONE highlight NonText guibg=grey80 highlight Constant gui=NONE guibg=grey95 highlight Special gui=NONE guibg=grey95 endif set guifont=D2Coding:h12:cHANGEUL:qDEFAULT " set guifont=Source_Code_Pro:h12:cANSI:qDEFAULT if has("gui_running") set encoding=utf-8 source $VIMRUNTIME/mswin.vim behave mswin if has('win32') set keymodel=startsel " set guifont=Source\ Code\ Pro:h16:cANSI:qDEFAULT " set guifont=JetBrains\ Mono\ Regular:h18:cANSI:qDEFAULT " set guifont=D2Coding\ ligature:h16:cHANGEUL:qDEFAULT set renderoptions=type:directx, \gamma:1.0, \contrast:0.5, \level:1, \geom:1, \renmode:5, \taamode:1 " restore Ctrl-F to Page down unmap elseif has('gui_macvim') set guifont=JetBrains\ Mono\ 16 set antialias else set guifont=JetBrains\ Mono\ 16 endif " Turn off toolbar set guioptions-=T " Turn on menu set guioptions+=m end set smartindent set tabstop=2 set expandtab set shiftwidth=2 " colorscheme darkblue "set statusline+=%#warningmsg# "set statusline+=%{SyntasticStatuslineFlag()} "set statusline+=%* "let g:syntastic_always_populate_loc_list = 1 "let g:syntastic_auto_loc_list = 1 "let g:syntastic_check_on_open = 1 "let g:syntastic_check_on_wq = 0 "let g:airline#extensions#tabline#enabled = 1 let g:airline_powerline_fonts = 1 syntax enable set background=dark colorscheme solarized set encoding=utf-8 set rop=type:directx,gamma:1.0,contrast:0.5,level:1,geom:1,renmode:4,taamode:1 "let g:airline_section_z = airline#section#create(['windowswap', '%3p%% ', 'linenr', ':%3v']) set laststatus=2 set nu set clipboard=unnamed * Apply :source % :PluginInstall ===== Examples ===== * '':%s/^(\d+.)/\n\1/g'': 라인 첫번째에 ''숫자(1자이상).''으로 된 항목 앞에 개행문자 추가 (문서전체적용) * '':%s/^(\s+)*/\1*/g'' : 라인 앞에 ''* '' 추가 (문서전체적용) * '':%s/^(?:(?:1[6-9]|[2-9]\d)?\d{2})(?:(?:(\/|-|\.)(?:0?[13578]|1[02])\1(?:31))|(?:(\/|-|\.)(?:0?[13-9]|1[0-2])\2(?:29|30)))\$|^(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00)))(\/|-|\.)0?2\3(?:29)\$|^(?:(?:1[6-9]|[2-9]\d)?\d{2})(\/|-|\.)(?:(?:0?[1-9])|(?:1[0-2]))\4(?:0?[1-9]|1\d|2[0-8])\$/g'' : date validation /^(?:(?:1[6-9]|[2-9]\d)?\d{2})(?:(?:(\/|-|\.)(?:0?[13578]|1[02])\1(?:31))|(?:(\/|-|\.)(?:0?[13-9]|1[0-2])\2(?:29|30)))$| ^(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00)))(\/|-|\.)0?2\3(?:29)$| ^(?:(?:1[6-9]|[2-9]\d)?\d{2})(\/|-|\.)(?:(?:0?[1-9])|(?:1[0-2]))\4(?:0?[1-9]|1\d|2[0-8])$/gm * '':%s/^\d{4}(\-|\/)(0?[1-9]|1[012])(\-|\/)(0[1-9]|[12][0-9]|3[01]|[1-9])'' : 날짜형식 ''yyyy-mm-dd'', ''yyyy/mm/dd'', ''yyyy/m/d'', ''yyyy-m-d''. * '':%s/^\d{4}.*$(?:\n\s{2}.*$)+/\0/g'' PTA의 Transaction 단위로. 그룹 지정 안함. ===== References ===== *{{youtube>cY0JxzENBJg}} https://youtu.be/cY0JxzENBJg * command mode / edit mode * i * :q, :q!, :w, :w!, :wq, wq! * i, a, I, A * h, j, k, l, 0, $, w, b, 3w, 8w, * H 화면위, M 화면 중간, L 화면끝, gg, G, 20G, ^u, ^d, {, } * x, dd yy, p, *p * command + object; d3w, dit, d, y, c, 3w, 3b, aw, at, ap, as, it, i", ip * ., u, ^R * **daw** delete a word, di{, di(, da(, di', da', ci[, df(, dt(, d/(sh, d/use * /, +n, +N * v, vaw, ^V * [[https://medium.com/sunhyoups-story/vim-%EC%97%90%EB%94%94%ED%84%B0-%EC%9D%B4%EC%81%98%EA%B2%8C-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0-5b6b8d546017|vim 에디터 이쁘게 사용하기]] * [[https://www.lesstif.com/system-admin/vim-42074135.html|vim 메뉴 및 폰트 설정]] * [[https://www.lesstif.com/system-admin/windows-vim-font-redering-100206277.html|windows 용 vim 폰트(font) 및 렌더링(redering) 옵션 설정]] * [[https://www.lesstif.com/system-admin/vundle-40436095.html|vundle 플러그인 관리자 설치 및 유용한 플러그인]] * [[https://github.com/junegunn/vim-plug|Vim Plug]] * [[https://m.blog.naver.com/PostList.naver?blogId=nfwscho|밤앙개 블로그 - 디자인과 개발]] * [[https://blankspace-dev.tistory.com/373|[Linux] Vim 화면 분할,(상/하/좌/우 분할 방법 정리)]] * [[https://vlee.kr/1142|VIM 기본 설정과 추천 플러그인 및 사용법 정리]] * [[https://agvim.wordpress.com/2017/09/05/vim-plugins-100/|지금 사용하는 Vim 플러그인 100개]] * [[https://pastime0.tistory.com/entry/vim|GVIM 환경설정 ]] * [[https://woonizzooni.tistory.com/entry/Windows10-%ED%99%98%EA%B2%BD%EC%97%90%EC%84%9C-vim-%ED%99%98%EA%B2%BD-%EC%84%A4%EC%A0%95|Windows10 환경에서 vim 환경 설정]] * [[http://gypark.pe.kr/wiki/Vi%EB%A1%9C%EB%AC%B8%EC%9E%90%EC%97%B4%EC%B9%98%ED%99%98%ED%95%98%EA%B8%B0|Vi로문자열치환하기]] * [[https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=nahaeya100&logNo=140122974185|이클립스 vRapper 사용하기]] * [[https://m.blog.naver.com/quantumgaea/222160587948|vimium (chrome extension)]] * [[https://bluebreeze.co.kr/1356|Practical Vim 2판 정리 페이지 Index]] * [[https://surpassing.tistory.com/914|Chrome 확장 플러그인 Vimium 커스텀 매핑]] * [[https://vimium.github.io/|vimium]] * [[https://github.com/philc/vimium/wiki|philc/vimium @github.com]]