지금 사용하는 Vim 플러그인 100개

같은 팀 개발자가 vim 플러그인 몇 개나 사용하는지 물어봐서 “한 100개 정도 사용해요” 라고 대답하고 나서 생각해 본다. 그렇게 많은 플러그인을 사용하고 있었나? 그 중 사용하지 않는 플러그인이 한 90개 정도 되는 것은 아닐까? Vundle을 사용함으로 :PluginList 명령을 사용했더니 정확히 134개의 플러그인이 설치되어 있었다. 이 글은 가이드는 아니고 단지 지금 사용중인 플러그인 50개에 대한 간단한 기능 설명이다. Plugin 명령어 아래에 있는 VimScript 코드는 사용하고 있는 설정 값이다.

vimawesome 에 아직 가보지 않았다면 먼저 들르길 바란다. 종류 별로 검색할 수 있다. 동영상과 함께 상세한 플러그인 사용법을 알고 싶다면 vimcasts도 살펴보길 바란다.

Vim 플러그인 관리 플러그인, 파일 찾기, 한 화면에서 커서 이동, 주석, 상태바, 쉘 프롬프트, 문자열 둘러싸기, 소스 버전 컨트롤, vim textobj, 하위 디렉토리 파일 찾기, 지정된 위치 프로젝트 파일 찾기, 라인 필터링, Vim 스크립트 수행, 여러 커서에서 동시 수정, HTML, CSS 코드 단축 입력, 달력, 저장한 코드 조각 입력, 코드 조각 모음, HTML 단축 입력, 짝 문자 찾기, 루트 디렉토리 이동, 문자열 찾기, 라인 범위 지정 후 수정, 여러 문자열 동시에 강조, 파일이나 버퍼 선택, 10개의 버퍼 목록 이동, 파일 이름 변경, 파일관리자, ctags 결과 표시, 임시 메모장, 짝 문자를 자동으로 입력, 숫자 혹은 문자 자동 증가, 숫자 더하기, 편집 반복, 대 소문자 포함 영어 단어 변경, 하나의 파일 컴파일 후 실행, tmux에서 vim 윈도우 이동, 들여쓰기 세로 줄 가이드 라인, 복사 문자열 리스트, Vim 유틸리티 스크립트, csv 파일 처리, 버전 관리 파일 상태 표시, 라인 정렬, 마크다운 파일 지원, 코드 접기, 자동 확장 블럭 지정, 로컬과 원격 파일 함께 수정, 함수 인자 위치 변경, 라인 정렬, 함수 인자 여러 줄로 표현, CtrlP의 cmdline 확장, git wrapper, git 로그 뷰어, Unix Shell Command Wrapper, REPL에 텍스트 전달, 여러 파일 동시에 수정, tmux wrapper, zeal wrapper, pick wrapper, 컬러 코드 선택, 커서가 위치 하지 않는 윈도우 바탕을 흐리게, 워드프레스 블로그 작성, JSON 파일 보기, 버퍼 이동, 세로 방향 커서 이동, 아스키 코드로 라인 그리기, 코드 완성 엔진, 자바스크립트 구문 하이라이트, 문자 하나로 자바스크립트 키워드 확장, 자바스크립트 익명 함수를 화살표 함수로 변경, 구문 체크, 문자열 끝 공백 삭제, 연속 공백 삭제, 더 좋은 :ascii, unicode와 diagraph 문자들을 처리, REST 서비스 콘솔, diff 파일 내에서 해당 파일로 이동, 컬러 스킴, 디렉터리 비교, 여러 파일 동시 검색, 현재 버퍼만 남기고 모든 버퍼 삭제, 수정 되돌리기 트리, 단어 좌우로 이동, 레이아웃 유지하고 버퍼 내용 바꾸기, 검색 중인 단어 모두 하이라이트, 검색 후 하이라이트 결과에 단축 마커 표시, fuzzy 검색, .tmux.conf 파일을 위한 플러그인, 숫자들의 합, 평균등을 계산, 두 문자 입력으로 커서 이동, TypeScript 언어, JavaScript Template 구문 강조, JavaScript, TypeScript 들여쓰기, DTMS 플러그인, 명령어 수행 라이브러리, TSServer 클라이언트, Tern 기반 편집 지원, 여러 JavaScript에 대한 구문 파일, 미래의 ECMAScript 구문 지원, 추가적인 JavaScript 관련 구문 지원

1. Vundle.vim

Plugin ‘VundleVim/Vundle.vim’

Vim 플러그인 관리 플러그인, 100개가 넘는 플러그인을 수동으로 설치하고 삭제할 수는 없는 일이다. Atom 에디터로 치면 apm 같은 플러그인이다.

2. FuzzyFinder

Plugin ‘FuzzyFinder’
    let g:FuzzyFinderOptions = { 'Base':{}, 'Buffer':{}, 'File':{}, 'Dir':{}, 'MruFile':{}, 'MruCmd':{}, 'Bookmark':{}, 'Tag':{}, 'TaggedFile':{}}
    let g:FuzzyFinderOptions.Base.ignore_case = 1
    let g:FuzzyFinderOptions.Base.abbrev_map  = {
                \   '\C^VR' : [
                \     '$VIMRUNTIME/**',
                \     '~/.vim/**',
                \     '$VIM/.vim/**',
                \     '$VIM/vimfiles/**',
                \   ],
                \ }

    let g:FuzzyFinderOptions.MruFile.max_item = 50
    let g:FuzzyFinderOptions.MruCmd.max_item = 50

    let g:fuf_coveragefile_globPatterns = ['~/bin/**/*', '~/bin/rc/**/*']

    let g:fuf_modesDisable = []
    let g:fuf_mrufile_maxItem = 400
    let g:fuf_mrucmd_maxItem = 400
    nnoremap  sj     :FufBuffer
    nnoremap  sk     :FufFileWithCurrentBufferDir
    nnoremap  sK     :FufFileWithFullCwd
    nnoremap  s :FufFile
    nnoremap  sl     :FufCoverageFile
    nnoremap  sL     :FufCoverageFileChange
    nnoremap  s :FufCoverageFileRegister
    nnoremap  sd     :FufDirWithCurrentBufferDir
    nnoremap  sD     :FufDirWithFullCwd
    nnoremap  s :FufDir
    nnoremap  sn     :FufMruFile
    nnoremap  sN     :FufMruFileInCwd
    nnoremap  sm     :FufMruCmd
    nnoremap  su     :FufBookmarkFile
    nnoremap  s :FufBookmarkFileAdd
    vnoremap  s :FufBookmarkFileAddAsSelectedText
    nnoremap  si     :FufBookmarkDir
    nnoremap  s :FufBookmarkDirAdd
    nnoremap  st     :FufTag
    nnoremap  sT     :FufTag!
    nnoremap  s :FufTagWithCursorWord!
    nnoremap  s,     :FufBufferTag
    nnoremap  s<     :FufBufferTag!
    vnoremap  s,     :FufBufferTagWithSelectedText!
    vnoremap  s<     :FufBufferTagWithSelectedText
    nnoremap  s}     :FufBufferTagWithCursorWord!
    nnoremap  s.     :FufBufferTagAll
    nnoremap  s>     :FufBufferTagAll!
    vnoremap  s.     :FufBufferTagAllWithSelectedText!
    vnoremap  s>     :FufBufferTagAllWithSelectedText
    nnoremap  s]     :FufBufferTagAllWithCursorWord!
    nnoremap  sg     :FufTaggedFile
    nnoremap  sG     :FufTaggedFile!
    nnoremap  so     :FufJumpList
    nnoremap  sp     :FufChangeList
    nnoremap  sq     :FufQuickfix
    nnoremap  sy     :FufLine
    nnoremap  sh     :FufHelp
    nnoremap  se     :FufEditDataFile
    nnoremap  sr     :FufRenewCache

파일 찾기, 여러 가지 방식으로 파일 리스트를 유지하면서 파일 찾기를 도와준다. 생각보다 사용할 수 있는 리스트가 많다는 것에 놀랐다.

  • 최근 수정한 파일 리스트
  • 현재 디렉터리 파일 리스트
  • 북마크한 파일 리스트
  • 위의 파일 리스트 편집
  • …..

3. vim-easymotion

Plugin ‘Lokaltog/vim-easymotion’

한 화면에서 커서 이동, 현재 보이는 화면에서 커서를 이동할 때 사용한다. 정말로 원하는 그곳에 딱 이동한다. [H], [L], [/], [*] 같은 키 보다 빠르고 정확하다. 어느 다른 에디터에서도 이런 기능은 볼 수 없다.

4. nerdcommenter

Plugin ‘scrooloose/nerdcommenter’

주석, 코드를 입력할 때 파일의 종류에 따라서 주석을 붙여준다. 더 이상 주석이 # 로 시작하는지 //로 시작하는지 "로 시작하는지 고민하지 말자

5. vim-airline

Plugin ‘bling/vim-airline’

상태바, Vim 사용자의 하단 상태바를 변경한다. 설치된 다른 플러그인과 현재 디렉터리에 환경에 따라서 다양한 현재 상태를 보여준다. 여러 기능을 설정할 수 있다.

6. promptline

Plugin ‘edkolev/promptline.vim’

쉘 프롬프트, Vim 플러그인이지만 결과 파일은 쉘 파일이다. 이 쉘 파일을 수행하면 vim-airline와 비슷한 프롬프트를 터미널에서 볼 수 있다. zsh에서도 문제없다.

7. surround.vim

Plugin ‘surround.vim’

문자열 둘러싸기, 문자열을 짝을 이루는 문자로 둘러싸고 삭제하고 변경할 수 있다. 짝을 이루지 않는 문자도 둘러쌓을 수 있다. 참고로 비주얼 블럭에서 S 명령이 불편해서 플러그인 코드의 아래 부분을 변경하여 s 키로 사용하고 있다.

xmap S   VSurround
xmap s   VSurround

8. vcscommand.vim

Plugin ‘vcscommand.vim’

소스 버전 컨트롤, Subversion과 Git를 사용하고 있는데 동일한 인터페이스로 정보 보기, 비교, 로그 보기, 커밋 등을 수행할 수 있다. 간단한 문제를 처리할 때 좋다. 만약에 Git를 터미널에서 자주 사용한다면 터미널용 Git 클라이언트인 tig 사용도 고려하길 바란다. Vim 키 바인딩으로 설정할 수도 있다.

9. vim textobj

Plugin ‘textobj-user’
Plugin ‘mattn/vim-textobj-url’
Plugin ‘textobj-entire’
Plugin ‘textobj-line’
Plugin ‘vim-indent-object’

Vim의 여러 편집 기능의 대상을 textobj라고 한다. 이 텍스트 묶음을 확장하는 플러그인을 여럿 설치하여 사용하고 있다. textobj의 종류가 늘어나면 각각에 대하여 삭제, 수정, 치환 등의 작업이 연동된다.

10. ctrlp.vim

Plugin ‘ctrlpvim/ctrlp.vim’
let g:ctrlp_available=1
let g:ctrlp_by_filename=1

nnoremap g :CtrlPYankRound

let g:ctrlp_custom_ignore = { 'dir':  '\v[\/](\.git|\.hg|\.svn|node_modules|aJs|vendor|gen|bower_components|web.*|dist|.*Zone.Identifier|assets)$', 'file': '\.pyc$\|\.pyo$\|\v\.(exe|so|dll|class|png|jpg|jpeg)$' }
let NERDTreeIgnore=['\.pyc$', 'aJs$', 'vendor$', 'gen$','bower_components$', 'dist$', 'node_modules$', 'Zone.Identifier$', '\.vim$', '\~$'] " Ignores for NERDTree
let g:ctrlp_root_markers = ['.ctrlp']
let g:ctrlp_max_height = 30
func! MyCtrlPTag()
    CtrlPTag
endfunc
com! MyCtrlPTag call MyCtrlPTag()

nnoremap SJ :CtrlPBuffer
nnoremap SD :CtrlPDir
nnoremap SN :CtrlPMRUFiles
nnoremap SM :CtrlPCmdline
nnoremap ST :CtrlPTag
nnoremap SQ :CtrlPQuickfix
nnoremap SY :CtrlPLine

nnoremap SE :CtrlprojEdit
nnoremap SR :Ctrlproj
nnoremap SL :CtrlprojLastDir

nnoremap SC :CtrlPMenu
nnoremap SP :CtrlP

function! CtrlPWithSearchText(search_text, ctrlp_command_end)
    execute ':CtrlP' . a:ctrlp_command_end
    sleep
    call feedkeys(a:search_text)
endfunction
command! -nargs=1 CtrlPWithText call CtrlPWithSearchText(, '')

하위 디렉토리 파일 찾기, Atom 에디터, Sublime 그리고 크롬 개발자 도구에서도 지원한다는 [Ctrl-p] 기능을 vim도 지원한다. 어느 에디터가 먼저 지원했는지 모르겠다. 하위 디렉터리의 모든 파일을 찾아서 키 입력에 따라 범위를 줄여준다. 파일 찾기 시작 지점을 지정할 수도 있다. vim-rooter 플러그인과 같이 사용한다.

11. ctrlproj.vim

Plugin ‘iwataka/ctrlproj.vim’
    let g:ctrlproj_open_extensions = ['pdf', 'png']
    let g:ctrlproj_configuration_path = '~/.vim/.ctrlproj'

지정된 위치 프로젝트 파일 찾기, 현재 디렉터리가 아닌 임의 디렉터리에서 ctrlp.vim 플러그인 기능을 사용하여 파일들 찾을 수 있다. 여러 프로젝트 파일들을 참조할 때 유용하다.

12. Quich-Filter

Plugin ‘Quich-Filter’
    nnoremap ,fi :call FilteringNew().addToParameter('alt', @/).run()
    nnoremap ,g :call FilteringGetForSource().return()

라인 필터링, 특정 문자열로 소스 라인을 필터링하여 다른 버퍼에서 보여준다. 이 버퍼를 다시 필터링할 수도 있다. 로그를 분석하거나 긴 소스에서 특정 문자열을 찾기 위해 소스의 범위를 줄여나갈 때 효과적이다.

13. batch.vim

Plugin ‘batch.vim’

Vim 스크립트 수행, 블럭으로 지정된 코드를 vim 스크립트로 수행한다. vim 스크립트 디버깅에 사용할 수 있다.

14. vim-multiple-cursors

Plugin ‘terryma/vim-multiple-cursors’
    let g:multi_cursor_next_key=''
    let g:multi_cursor_prev_key=''
    let g:multi_cursor_skip_key=''
    let g:multi_cursor_quit_key=''

여러 커서에서 동시 수정, 여러 커서의 문자열들을 동시에 수정한다. 문자열 지정은 정규식으로도 가능하다.

15. emmet-vim

Plugin ‘mattn/emmet-vim’

HTML, CSS 코드 단축 입력, 규칙을 따르는 문자열 입력으로 여러 줄의 HTML, CSS 코드를 한번에 입력한다.

16. calendar.vim

Plugin ‘itchyny/calendar.vim’
    let g:calendar_google_calendar = 1
    let g:calendar_google_task = 1

달력, Vim 안에서 달력을 보여준다. 구글 달력과 구글 일정을 연동할 수 있다.

17. ultisnips

Plugin ‘SirVer/ultisnips’
    nnoremap  ,ff :UltiSnipsEdit
    let g:UltiSnipsExpandTrigger=""
    let g:UltiSnipsListSnippets=""
    let g:UltiSnipsJumpForwardTrigger=""
    let g:UltiSnipsJumpBackwardTrigger=""
    let g:UltiSnipsEditSplit="vertical"

저장한 코드 조각 입력, 자주 사용하는 코드 조각을 쉽게 입력하도록 도와준다. 정규식을 입력 조건으로 사용할 수 있다.

아래 두 플러그인을 같이 사용한다.

18. vim-snippets

Plugin ‘honza/vim-snippets’

코드 조각 모음, ultisnips 플러그인에서 사용하는 코드 조각들의 모음이다.

19. HTML.zip

Plugin ‘HTML.zip’
    let g:html_tag_case = 'lowercase'
    let g:no_html_tab_mapping = 'yes'

HTML 단축 입력, 대표적으로 입력 모드에서 [;] 로 시작하는 세 글자를 입력하면 HTML 코드를 자동으로 입력해 준다. 다양한 코드가 준비되어 있다. emmet-vim 플러그인과 같이 사용한다.

20. match.zip

Plugin ‘matchit.zip’

짝 문자 찾기, 짝으로 이루어진 문자로 커서를 이동할 수 있다. 여러 언어 별로 다양한 짝 문자를 지원한다.

21. vim-rooter

Plugin ‘airblade/vim-rooter’
    let g:rooter_manual_only = 1
    let g:rooter_patterns = ['.ctrlp', 'build.gradle', '.git', '.classpath', 'AndroidManifest.xml']

루트 디렉토리 이동, Vim에서 인식하는 현재 디렉토리를 위치를 이동한다. 어느 디렉토리가 루트인지 지정할 수 있다. 예를 들면 .git 파일이 있는 곳을 현재의 루트 디렉토리로 지정 가능하다. ctrlp.vim과 같이 사용한다.

22. ag.vim

Plugin ‘rking/ag.vim’
    if executable('ag')
        set grepprg=ag\ --nogroup\ --nocolor

        let g:ctrlp_user_command = 'ag %s -l --nocolor -g ""'

        let g:ctrlp_use_caching = 0
    else
        let g:ctrlp_user_command = ['.git', 'cd %s && git ls-files . -co --exclude-standard', 'find %s -type f']
        let g:ctrlp_prompt_mappings = {
        \ 'AcceptSelection("e")': ['', '', ''],
        \ }
    endif

문자열 찾기, 주어진 문자열을 가진 파일들을 찾고 그 라인을 보여준다. cscope 같이 미리 인덱스 파일 만들 필요가 없고 빠르다. Ag 프로그램을 사용한다. 최근에는 점점 ack.vim으로 옮겨가는 중이다

23. NrrwRgn

Plugin ‘chrisbra/NrrwRgn’

라인 범위 지정 후 수정, 파일의 일부 범위를 지정해서 다른 버퍼로 보여주며 그 버퍼에서 편집을 하면 본 파일이 수정된다. 복잡한 코드 일부를 다른 버퍼에서 자유롭게 편집할 수 있다.

24. MultipleSearch

Plugin ‘MultipleSearch’
    let g:MultipleSearchMaxColors=11
    let g:MultipleSearchColorSequence="darkcyan,gray,LightCyan,LightBlue,LightGreen,blue,green,magenta,cyan,gray,brown"
    let g:MultipleSearchTextColorSequence="white,DarkRed,black,black,black,white,black,white,red,black,white"
    "nmap ,H 0vv\*,
    nnoremap  ,H :SearchReset 
    nnoremap  ,h :SearchBuffers =expand("")
    vnoremap  ,h y:SearchBuffers "

여러 문자열 동시에 강조, 지정된 여러 문자열을 동시에 강조 한다. 여러 색상으로 표현할 수 있다. 소스나 로그 파일 분석 할 때 편하다.

25. LustyExplorer

Plugin ‘LustyExplorer’
    nmap  ,fD :cd /src/Dropbox/:LustyFilesystemExplorer
    nmap  ,fb :cd ~/bin/:LustyFilesystemExplorer
    nmap  ,fc :cd ~/code/:LustyFilesystemExplorer
    nmap  ,fd :cd ~/download/:LustyFilesystemExplorer
    nmap  ,fh :cd ~/:LustyFilesystemExplorer
    nmap  ,fj :LustyBufferExplorer
    nmap  ,fk :LustyFilesystemExplorer
    nmap  ,fl :cd ~/logs/:LustyFilesystemExplorer
    nmap  ,fr :cd ~/rc/:LustyFilesystemExplorer
    nmap  ,fs :cd ~/src/:LustyFilesystemExplorer
    nmap  ,fu :cd ~/.vim/UltiSnips:LustyFilesystemExplorer
    nmap  ,fv :cd ~/.vim/bundle/:LustyFilesystemExplorer
    nmap  ,fr :Rooter:LustyFilesystemExplorer

파일이나 버퍼 선택, 지정된 디렉터리의 파일들이나 현재 열린 버퍼 목록을 윈도우 하단에 짧게 보여준다. 키 입력에 따라 목록의 범위를 줄여준다.

26. LustyJuggler

Plugin ‘LustyJuggler’
    nmap  ,d :LustyJuggler

10개의 버퍼 목록 이동, 버퍼에 10개를 윈도우 하단에 한 줄로 보여주고 숫자 키 혹은 문자 키 한 글자로 이동한다. 정말 간단하다.

27. vim-renamer

Plugin ‘qpkorr/vim-renamer’

파일 이름 변경, 현재 디렉토리 파일 목록을 편집하면 실제 파일 이름을 변경된다.

28. nerdtree

Plugin ‘scrooloose/nerdtree’
    let g:NERDTreeShowBookmarks = 1
    let NERDTreeHijackNetrw = 0
    function! GotoTree()
        :NERDTree %:p:h
    endfunction
    let NERDTreeMapActivateNode=''
    let NERDTreeHijackNetrw=1

파일관리자, 보통 IDE에서 볼 수 있는 왼쪽에 위치하는 파일 관리자로 트리 모양으로 파일들을 보여준다. 요즘은 이보다 ctrlp.vim를 더 사용하고 있다.

29. tagbar

Plugin ‘majutsushi/tagbar’

ctags 결과 표시, ctags로 생성된 결과를 보여준다. 프로그래밍 언어 파일 분석에 도움 된다.

30. scratch.vim

Plugin ‘mtth/scratch.vim’
    let g:scratch_persistence_file = '/tmp/scratch_persistence_file.txt'
    let g:scratch_autohide = 0

임시 메모장, 파일로 저장하지 않는 임시 편집 메모장을 제공한다. 파일로 저장하는 옵션을 지정할 수 있으며 블럭된 문자열을 gs 명령으로 메모장으로 복사할 수 있다.

31. auto-pairs

Plugin ‘jiangmiao/auto-pairs’
    let g:AutoPairsShortcutToggle = ''
    let g:AutoPairsShortcutFastWrap = ''
    let g:AutoPairsShortcutJump = ''
    let g:AutoPairsMapBS = 0
    let g:AutoPairsMapCR = 0
    let g:AutoPairsCenterLine = 0
    let g:AutoPairsMapSpace = 0

짝 문자를 자동으로 입력, 짝으로 이루어진 두 문자에서 첫 글자를 입력하면 나머지 문자를 자동으로 붙여준다.

32. VisIncr

Plugin ‘VisIncr’

숫자 혹은 문자 자동 증가, 선택된 라인에서 숫자 혹은 문자를 순서대로 증가시키거나 감소시킨다.

33. visSum.vim

Plugin ‘visSum.vim’

숫자 더하기, 선택된 문자열에서 모든 숫자를 더한다.

34. vim-repeat

Plugin ‘tpope/vim-repeat’

편집 반복, Vim에서 사용하는 . (dot) 명령어를 여러 플러그인의 기능으로 확장한다.

35. vim-abolish

Plugin ‘tpope/vim-abolish’

대 소문자 포함 영어 단어 변경, 영어 단어 변경할 때 처음 대 문자, 전체 대 소문자, 복수까지 고려해서 변경할 수 있다. 특히 변수명 변경에 편리한데 searchType, search_type, SearchType, search-type 이런 형태로 상호 변환할 수 있다.

36. SingleCompile

Plugin ‘xuhdev/SingleCompile’

하나의 파일 컴파일 후 실행, 여러 프로그래밍 언어 소스 파일을 컴파일하고 결과를 보여준다. 간단하게 테스트 할 때 좋다.

37. vim-tmux-navigator

Plugin ‘christoomey/vim-tmux-navigator’

tmux에서 vim 윈도우 이동, tmux와 vim을 같이 사용할 경우 터미널과 vim 윈도우 사이를 같은 키를 사용하여 서로 이동할 수 있다.

38. indentLine

Plugin ‘Yggdroot/indentLine’
    let g:indentLine_color_gui = '#385900'
    let g:indentLine_color_term = 100
    let g:indentLine_char = '¦'
    let g:indentLine_first_char = ''
    let g:indentLine_showFirstIndentLevel = 0
    let g:indentLine_enabled = 0
    let g:indentLine_fileTypeExclude = ['help', 'nerdtree', 'text', 'sh']
    let g:indentLine_bufNameExclude = ['_.*', 'NERD_tree.*']
    let g:indentLine_maxLines = 3000
    nnoremap \il :IndentLinesToggle

들여쓰기 세로 줄 가이드 라인, 코드 들여쓰기 위치에 세로 줄을 만들어서 읽기 좋게 도와준다.

39. yankround.vim

Plugin ‘LeafCage/yankround.vim’
    nmap p (yankround-p)
    xmap p (yankround-p)
    nmap P (yankround-P)
    nmap gp (yankround-gp)
    xmap gp (yankround-gp)
    nmap gP (yankround-gP)
    nmap  (yankround-prev)
    nmap  (yankround-next)
    let g:yankround_max_history = 50
    nmap  :CtrlPYankRound

복사 문자열 리스트, 이전 복사한 텍스트들을 리스트 목록으로 유지하고 재 사용할 수 있다. ctrlp.vim과 같이 사용할 수 있다.

40. vital.vim

Plugin ‘vim-jp/vital.vim’

Vim 유틸리티 스크립트, Vim 스크립트를 위한 유틸리티 스크립트 (여러 플러그인에서 사용한다.)

41. csv.vim

Plugin ‘chrisbra/csv.vim’

csv 파일 처리, Vim에서 csv 파일을 처리하기 위한 정말로 많은 기능을 가지고 있다.

42. vim-signify

Plugin ‘mhinz/vim-signify’

버전 관리 파일 상태 표시, 버전 관리하는 파일의 수정 상태를 왼쪽 사인 컬럼에 표시한다. 수정, 삭제, 변경 등의 상태를 보여준다. vim-airline와 같이 사용하면 상태바에 수정 라인 수가 표시된다.

43. tabular

Plugin ‘godlygeek/tabular’
    inoremap     :call align()a
    function! s:align()
    let p = '^\s*|\s.*\s|\s*$'
    if exists(':Tabularize') && getline('.') =~# '^\s*|' && (getline(line('.')-1) =~# p || getline(line('.')+1) =~# p)
        let column = strlen(substitute(getline('.')[0:col('.')],'[^|]','','g'))
        let position = strlen(matchstr(getline('.')[0:col('.')],'.*|\s*\zs.*'))
        Tabularize/|/l1
        normal! 0
        call search(repeat('[^|]*|',column).'\s\{-\}'.repeat('.',position),'ce',line('.'))
    endif
    endfunction

라인 정렬, 주어진 문자 중심으로 라인을 정렬한다.

44. vim-markdown

Plugin ‘plasticboy/vim-markdown’

마크다운 파일 지원, 마크다운 파일의 문법 강조와 추가 기능을 지원한다.

45. vim-simplefold

Plugin ‘pangloss/vim-simplefold’
    let g:SimpylFold_docstring_preview=1

코드 접기, 주어진 문자열을 기준으로 코드 라인들을 접을 수 있다.

46. vim-expand-region

Plugin ‘terryma/vim-expand-region’

자동 확장 블럭 지정, 현재 커서 혹은 블럭에서 범위를 넓혀 나가면서 자동으로 블럭을 지정한다.

47. mirror.vim

Plugin ‘zenbro/mirror.vim’

로컬과 원격 파일 함께 수정, 디렉터리 구조가 같은 로컬 파일과 원격의 파일을 동시에 수정한다.

48. vim-argumentative

Plugin ‘peterrincker/vim-argumentative’
    nmap [; Argumentative_Prev
    nmap ]; Argumentative_Next
    xmap [; Argumentative_XPrev
    xmap ]; Argumentative_XNext
    nmap <; Argumentative_MoveLeft
    nmap >; Argumentative_MoveRight
    xmap i; Argumentative_InnerTextObject
    xmap a; Argumentative_OuterTextObject
    omap i; Argumentative_OpPendingInnerTextObject
    omap a; Argumentative_OpPendingOuterTextObject

함수 인자 위치 변경, 함수 인자나 배열의 항목의 위치를 변경한다.

49. vim-lion

Plugin ‘tommcdo/vim-lion’

라인 정렬, 특정 문자로 라인을 정렬한다. Vim 연산자로 정의되어서 이동 명령어와 함께 사용될 수 있다. tabular에 비하면 최소한의 기능만 가지고 있다. 예를 들면 텍스트 블럭 후 gl, 명령으로 ,(comma) 기준으로 정렬할 수 있다.

pluginVimLionAll

50. vim-argwrap

Plugin ‘foosoft/vim-argwrap’
    nnoremap  ,l :ArgWrap

함수 인자 여러 줄로 표현, 함수 인자 혹은 배열 항목에 대하여 한 줄 표현과 여러 줄 표현으로 상호 변환한다.

51. ctrlp-extensions

Plugin ‘sgur/ctrlp-extensions.vim’

let g:ctrlp_yankring_disable = 1

CtrlP 스타일로 이전 명령어 재 사용, CtrlP에 cmdline 목록을 추가하는 확장이다. CtrlP가 설치되어 있어야 한다. README.md 파일에는 cmdline, yankring, menu 이렇게 3가지 기능이 있지만 cmdline만 사용하고 있다. 비슷한 명령어 q: 를 사용하면 명령어를 편집할 수 있는 장점이 있다.

52. fugitive

Plugin ‘tpope/vim-fugitive’

Vim에서 git 명령어 사용, git 명령어 wrapper다. 아래는 :Git log를 수행한 모습이다.

53. Gitv

Plugin ‘gregsexton/gitv’

git 로그 뷰어, fugitive 확장임으로 fugitive가 설치되어 있어야 한다. git 로그 볼 땐 주로 tig를 사용하지만 vim 안에서는 이 방법도 간단해서 자주 사용한다.

54. Eunch

Plugin ‘tpope/vim-eunuch’

Vim에서 파일 관련 명령어 수행, vim을 벋어 나지 않고 파일 삭제, 이름 변경, 디렉터리 생성 등의 작업을 수행한다. 예를 들면 :Delete 명령어를 사용하면 현재 버퍼와 디스크 파일을 동시에 삭제한다.

55. Slime

Plugin ‘jpalardy/vim-slime’

let g:slime_target = “tmux”

REPL에 텍스트 전달, 아래와 같은 여러 대상에 텍스트를 전달할 수 있다.

  • screen
  • tmux
  • whimrepl
  • ConEmu
  • NeoVim Terminal
  • Vim Terminal

텍스트를 전달하는 대상 프로그램에 REPL이 동작하고 있을 경우 바로 결과를 확인할 수 있다. 대부분의 REPL은 line by line 형식이라서 여러 라인의 코드를 입력하기에는 불편하다. vim 에디터 내부에서 편집 중인 코드를 바로 전달하여 결과를 확인하는 용도로 사용된다. tmux와 함께 node.js 혹은 python을 사용할 때 이용하고 있으며 코드 테스트할 때 유용하다. 아래는 Tmux 사용중에 왼쪽 vim에서 오른쪽 node 로 코드를 전송하는 모습이다.

56. CtrlSF

Plugin ‘dyng/ctrlsf.vim’
    let g:ctrlsf_default_root = 'project+fw'
    let g:ctrlsf_ignore_dir = ['bower_components', 'npm_modules']
    let g:ctrlsf_indent = 2
    nmap     sf CtrlSFPrompt
    vmap     sf CtrlSFVwordPath

여러 파일 동시에 수정, 여러 파일을 검색하여 여러 파일에 걸친 코드를 동시에 수정할 수 있다. vim-multiple-cursors와 같이 사용하면 더욱 편리하다. 아래는 title 을 검색한 모습인데 6개의 파일에서 18개 검색되었다. 한 화면에 2개의 파일이 함께 보이는 것을 볼 수 있는데 수정 후 저장하면 수정된 파일들에 모두 적용된다. 단, 검색된 그 줄만 수정된다.

57. Tbone

Plugin ‘tpope/vim-tbone’

Tmux Wrapper, tmux를 사용하고 있다면 vim을 떠나지 않고 일부 명령어를 사용할 수 있다. 아래 화면에서 왼쪽 vim에서 오른쪽 쉘로 명령어를 전달하는 것을 볼 수 있다. :Twrite 명령어를 사용했다.

58. Zeavim

Plugin ‘kabbamine/zeavim.vim’
    nmap gzz Zeavim
    vmap gzz ZVVisSelection
    nmap z ZVKeyDocset
    nmap gZ ZVKeyDocset
    nmap gz ZVMotion
    let g:zv_keep_focus = 0
    let g:zv_file_types = {
                \   'help'                : 'vim',
                \   'javascript'          : 'javascript,nodejs',
                \   'python'              : 'python_3',
                \   '\v^(G|g)ulpfile\.js' : 'gulp,javascript,nodejs',
                \ }

오프라인 문서 브라우저 Zeal Wrapper, Vim에서 zeal 프로그램을 사용하여 API 문서를 조회할 수 있다. zeal이 설치되어 있어야 한다. 커서를 console 문자열에 두고 :Zeavim 명령어를 사용하여 zeal 어플을 띄우는 것을 확인할 수 있다.

59. Pick

Plugin ‘thoughtbot/pick.vim’

let g:pick_height = 50

파일 선택, pick 프로그램을 사용하여 파일을 선택할 수 있다. 그 외에 다른 선택 기능도 존재한다.

60. vCooler

Plugin ‘KabbAmine/vCoolor.vim’
    let g:vcoolor_map = ''
    let g:vcool_ins_rgb_map = 'r'       " Insert rgb color.
    let g:vcool_ins_hsl_map = 'h'       " Insert hsl color.
    let g:vcool_ins_rgba_map = 'a'      " Insert rgba color.

컬러 코드 선택, 아래와 같은 여러 컬러 코드를 마우스로 클릭하여 입력할 수 있다.

#43423E
rgb(223, 45, 45)
hsl(0, 39%, 23%)
rgba(172, 177, 87, 1)

아래 화면에서 커서를 #222에 두고 실행하여 그 색상의 컬러 선택기가 호출되는 것을 볼 수 있다.

아래와 같은 변환 유틸리티도 사용할 수 있다.

:Rgb2Hex     "255, 0, 255"          " Gives "#FF00FF"
:Rgb2RgbPerc "255, 0, 255"          " Gives "100%, 0%, 100%"
:Rgb2Hsl     "255, 0, 255"          " Gives "300, 100%, 50%"
:RgbPerc2Hex "100%, 0%, 100%"       " Gives "#FF00FF"
:RgbPerc2Rgb "100%, 0%, 100%"       " Gives "255, 0, 255"
:Hex2Lit     "#FF00FF"              " Gives "magenta"
:Hex2Rgb     "#FF00FF"              " Gives "255, 0, 255"
:Hex2RgbPerc "#FF00FF"              " Gives "100%, 0%, 100%"
:Hex2Hsl     "#FF00FF"              " Gives "300, 100%, 50%"
:Hsl2Rgb     "300, 100%, 50%"       " Gives "255, 0, 255"
:Hsl2Hex     "300, 100%, 50%"       " Gives "#FF00FF"

61. Diminactive

Plugin ‘blueyed/vim-diminactive’

let g:diminactive_enable_focus = 1

커서가 위치하지 않는 윈도 바탕을 흐리게 만든다. 여러 창을 사용할 현재 커서가 위치하는 윈도를 편하게 찾을 수 있다. 커서가 세개의 창을 이동하는 동안 커서가 없는 창의 바탕이 흐려지는 것을 확인할 수 있다.

62. VimBlog

Plugin ‘danielmiessler/VimBlog’

워드프레스 블로그 작성, 워드프레스 블로그를 vim에 편집할 수 있다. 가입형과 설치형에서 모두 동작한다.

63. JSON

Plugin ‘elzr/vim-json’

JSON 파일 보기, JSON 들여 쓰기와 하이라이트를 지원하고 보기 불편한 더블 따옴표를 감춘다.

64. Buffergator

Plugin ‘jeetsukumaran/vim-buffergator’
    let g:buffergator_viewport_split_policy="T"
    let g:buffergator_hsplit_size=10
    nmap  ,g :BuffergatorOpen

버퍼 이동, 로딩되어 있는 버퍼들의 리스트를 보여주고 이동 혹은 새 버퍼 사용을 도와준다.

65. vertical-move

Plugin ‘vim-utils/vim-vertical-move’
    vmap   (vertical_move_down)
    vmap   (vertical_move_down)
    vmap   (vertical_move_up)

커서를 세로 방향으로 연속으로 이동, 커서를 세로 방향으로 연속적으로 이동하는 것은 세로 블록을 지정할 편리하다.

66. DrawIt

Plugin ‘vim-scripts/DrawIt’

아스키 코드로 라인 그리기, 종종 설명 파일 혹은 코드에 아스키 코드로 네모를 그릴 필요가 있을 때 사용한다. 마우스로 그리는 것이 편하다면 온라인에서 그리기 바란다.

67. YouCompleteMe

Plugin ‘Valloric/YouCompleteMe’
    let g:ycm_server_python_interpreter = '/usr/bin/python'
    let g:ycm_global_ycm_extra_conf = '~/.ycm_extra_conf.py'
    let g:ycm_key_list_select_completion = ['', '']
    let g:ycm_key_list_previous_completion = ['', '']
    let g:SuperTabDefaultCompletionType = ''
    let g:ycm_autoclose_preview_window_after_completion=1
    map g :YcmCompleter GoToDefinitionElseDeclaration
    let g:ycm_semantic_triggers =  {
    \   'c' : ['->', '.'],
    \   'objc' : ['->', '.', 're!\[[_a-zA-Z]+\w*\s', 're!^\s*[^\W\d]\w*\s',
    \             're!\[.*\]\s'],
    \   'ocaml' : ['.', '#'],
    \   'cpp,objcpp' : ['->', '.', '::'],
    \   'perl' : ['->'],
    \   'php' : ['->', '::'],
    \   'cs,java,javascript,typescript,d,python,perl6,scala,vb,elixir,go' : ['.'],
    \   'ruby' : ['.', '::'],
    \   'lua' : ['.', ':'],
    \   'erlang' : [':'],
    \ }

코드 완성 엔진, 최근 에디터들은 대부분 가지고 있는 코드 완성 기능을 vim에서도 사용할 수 있다. 컴파일을 해야 하는 불편함이 있지만 감수할 만하다. JavaScript의 예이다.

68. vim-javascript

Plugin ‘pangloss/vim-javascript’
    let g:javascript_plugin_jsdoc = 1
    set conceallevel=1
    set concealcursor=""

    autocmd FileType javascript inoremap   @ =syntax_expand#expand("@", "this")
    autocmd FileType javascript inoremap   # =syntax_expand#expand("#", ".prototype.")
    autocmd FileType javascript inoremap   < =syntax_expand#expand_head("<", "return")
    let g:javascript_conceal_function  = "ƒ"
    let g:javascript_conceal_prototype = "#"
    let g:javascript_conceal_return    = "<"
    let g:javascript_conceal_static    = "•"
    let g:javascript_conceal_super     = "Ω"
    let g:javascript_conceal_this      = "@"
    let g:javascript_conceal_undefined = "¿"
    let g:javascript_conceal_null      = "ø"
    map l :exec &conceallevel ? "set conceallevel=0" : "set conceallevel=1"

자바스크립트 구문 하이라이트, 자바스크립트의 구문 하이라이트와 들여 쓰기를 보기 좋게 도와준다. 특별한 기능으로는 일부 키워드를 미리 정의된 문자로 대체하여 보여주는 기능이다. 예를 들면 function 키워드를 λ 로 대체하여 볼 수 있다. prototype, return, this등을 대체 문자로 볼 경우 코드가 훨씬 단순하게 보인다. 나눔고딕코딩 사용하고 있다면 D2Coding 폰트를 고려해 보길 바란다. 키워드 대체 문자가 좀더 가독성 있게 표시된다. 아래 화면의 위 아래 vim은 같은 코드를 보여주는데 커서가 위치하지 않을 때에는 function, return 키워드가 대체 문자로 보이는 것을 확인할 수 있다. 코드가 보다 간결하게 보인다.

69. vim-syntax-expand

Plugin ‘Olical/vim-syntax-expand’

문자 하나로 자바스크립트 키워드 확장, @, # 와 같은 문자 하나로 this, prototype를 대체하여 입력한다. vim-javascript와 상호 보완적인 플러그인으로 같이 사용하면 코드를 더욱 단순하게 볼 수 있다.

70. vim-js-arrow-function

Plugin ‘mvolkmann/vim-js-arrow-function’
nmap ar :JsAnonFnToArrowFn
nmap aR :call JsArrowFnBraceToggle()

자바스크립트 익명 함수를 화살표 함수로 변경, 기존의 function 키워드로 사용하는 익명 함수를 화살표 함수로 편하게 변경할 수 있다.

71. syntastic

Plugin ‘vim-syntastic/syntastic’
let g:syntastic_html_tidy_ignore_errors=[
    \'proprietary attribute "ng-',
    \'proprietary attribute "chart-',
    \'proprietary attribute "pdk-'
\]
let g:syntastic_always_populate_loc_list = 1
let g:syntastic_check_on_wq = 0
let g:syntastic_loc_list_height = 5
let g:syntastic_javascript_checkers = ['eslint']
let g:syntastic_java_checkers = ['javac', 'checkstyle']
let g:syntastic_json_checkers = ['jsonlint']
let g:syntastic_python_checkers = ['flake8']
let g:syntastic_css_checkers = ['csslint']
let g:syntastic_c_checkers = ['clang_check']
let g:syntastic_html_checkers = ['jshint']
let g:syntastic_typescript_checkers = ['tsuquyomi'] " You shouldn't use 'tsc' checker.
let g:syntastic_error_symbol = '❌ '
let g:syntastic_warning_symbol = '✗ '
let g:syntastic_style_error_symbol = '❓'
let g:syntastic_style_warning_symbol = '❔'
let g:syntastic_java_checkstyle_classpath = '~/checkstyle-7.6-all.jar'
let g:syntastic_java_checkstyle_conf_file = '~/sun_checks.xml'
highlight link SyntasticErrorSign SignColumn
highlight link SyntasticWarningSign SignColumn
highlight link SyntasticStyleErrorSign SignColumn
highlight link SyntasticStyleWarningSign SignColumn

구문 체크, 여러 언어의 구문을 체크한다. 각 언어의 구문 체크 프로그램들을 사용하여 문제가 있는 라인에 마크를 표시해 준다. 커서를 마크 라인으로 옮기면 하단 명령란에 문제점 설명을 표시한다. 설정을 통하여 사용할 구문 체크 프로그램을 선택할 수 있다. YouCompleteMe와 같이 사용하면 IDE 느낌이 난다. 아래 화면을 보면 4라인에 ; 가 없는 문제를 좌측 사인 칼럼에 표시하고 있으며 명령행 라인에 상세 설명이 보인다.

72. bad-whitespace

Plugin ‘bad-whitespace’

문자열 끝 공백 삭제, 문자열 마지막에 공백이 들어가면 붉은 색으로 표시하고 원하면 문자열 끝에 공백을 한꺼번에 삭제할 수 있다.

73. WhiteWash

Plugin ‘vim-scripts/WhiteWash’

연속 공백 삭제, bad-whitespace 비슷하지만 문자열 끝 공백과 ^M 삭제 등의 조금더 상세한 기능을 가지고 있다.

74. betterga

Plugin ‘manicmaniac/betterga’

더 좋은 :ascii 명령어, ga 명령어로 커서가 위치한 곳의 문자 정보를 자세히 알려준다.

75. unicode

Plugin ‘chrisbra/unicode.vim’

unicode와 diagraph 문자들을 처리, 커서가 위치한 문자의 유니코드 정보를 알려준다. 약 3만 라인의 유니코드 테이블도 확인할 수 있으며 입력중인 문자와 연관된 unicode, digraph을 선택할 수 있는 목록을 제공한다. 아래 화면에서 lamda를 입력하는 중에 Ctrl-X Ctrl-Z를 연속으로 입력하면 lamda로 검색된 유니코드 목록을 보여준다.

76. vim-rest-console

Plugin ‘diepm/vim-rest-console’

let g:vrc_trigger = ‘,J’

REST 서비스 콘솔, vim안에서 REST 요청을 보내고 그 결과를 다른 버퍼에 표시한다. RESTful 서비스를 사용할 경우 postman 같은 브라우저 확장 프로그램을 이용하는데 이와 비슷한 기능을 제공한다. *.rest 확장자로 끝나는 파일을 열고 RESTful 서비스의 명세를 적고 Ctrl-j를 입력하면 내부적으로 cURL을 사용하여 서버에서 읽은 결과를 다른 버퍼에 표시한다. vim을 떠나지 않고 서버 연동이 테스트가 가능하다.

77. DiffGoFile

Plugin ‘vim-scripts/DiffGoFile’
    autocmd FileType diff nnoremap   :call DiffGoFile('n')

diff 파일 내에서 해당 파일로 이동, diff 파일을 열고 수정된 부분의 라인에 커서를 두고 Ctrl-] 키를 입력하면 그 파일의 수정된 라인으로 이동한다.

78. vim-hybrid

Plugin ‘w0ng/vim-hybrid’

컬러 스킴, 최근 이 컬러 스킴을 사용하고 있다.

79. vim-dirdiff

Plugin ‘will133/vim-dirdiff’

디렉터리 비교, vim 내에서 두 디렉터리를 비교하며 변경된 여러 파일들을 수정할 수 있다. 간단한 작업에 사용한다. 주로 비주얼 툴인 meld를 같이 사용한다.

80. ferret

Plugin ‘wincent/ferret’

여러 파일 동시 검색, :Ack 명령어를 사용하여 현재 디렉토리 아래의 모든 파일을 검색하여 quickfix 형태로 표현한다. 이 명령어와 유사한 명령어를 여럿 가지고 있으며 여러 파일의 동시 문자열 치환이 가능하다.

81. vim-bufonly

Plugin ‘schickling/vim-bufonly’

현재 버퍼만 남기고 모든 버퍼 삭제, 너무 많은 버퍼는 성능 저하와 여러 종류의 파일 찾기 플러그인에서 파일 찾기를 번거롭게 만드는 원인이다. 가끔 모든 버퍼를 삭제한다.

82. gundo

Plugin ‘sjl/gundo.vim’
    nnoremap u :GundoToggle

수정 되돌리기 트리, 이전 수정 상태의 차이점을 보면서 되돌릴 수 있다.

83. sideways

Plugin ‘andrewradev/sideways.vim’
    nnoremap  g :SidewaysRight
    omap aa SidewaysArgumentTextobjA
    xmap aa SidewaysArgumentTextobjA
    omap ia SidewaysArgumentTextobjI
    xmap ia SidewaysArgumentTextobjI

단어 좌우로 이동, “,”(comma) 로 분리된 단어를 좌우로 이동한다. 끝에선 다른 끝으로 이동한다.

84. vim-windowswap

Plugin ‘wesQ3/vim-windowswonap’
    let g:windowswap_map_keys=0
    nnoremap  ,ww :call WindowSwap#EasyWindowSwap()

레이아웃 유지하고 버퍼 내용 바꾸기, 복잡한 레이아웃을 사용할 때 위치는 유지한체 버퍼만 서로 변경할 수 있다. 변경하려는 버퍼가 서로 다른 탭에 있어도 문제 없다.

vim-windowswap 에서 가져온 동작 방식 이미지
vim-windowswap 에서 가져온 동작 방식 이미지

85. incsearch

Plugin ‘haya14busa/incsearch.vim’
    map /  (incsearch-forward)
    map ?  (incsearch-backward)
    map g/ (incsearch-stay)
    set hlsearch
    let g:incsearch#auto_nohlsearch = 1
    map N  (incsearch-nohl-N)
    map *  (incsearch-nohl-*)
    map #  (incsearch-nohl-#)
    map g* (incsearch-nohl-g*)
    map g# (incsearch-nohl-g#)

    function! s:config_easyfuzzymotion(...) abort
    return extend(copy({
    \   'converters': [incsearch#config#fuzzy#converter()],
    \   'modules': [incsearch#config#easymotion#module()],
    \   'keymap': {"\": '(easymotion)'},
    \   'is_expr': 0,
    \   'is_stay': 1
    \ }), get(a:, 1, {}))
    endfunction
    noremap  z/ incsearch#go(config_easyfuzzymotion())

검색 중인 단어 모두 하이라이트, 기존 incsearch는 엔터키로 검색이 종료되기 전에는 하나의 매치된 건에 대해서만 하이라이트를 한다. 이 플러그인은 검색중에도 모든 매치건에 대해서 하이라이트 한다.

incsearch.vim 에서 가져온 동작 방식 이미지
incsearch.vim 에서 가져온 동작 방식 이미지

86. incsearch-easymotion

Plugin ‘haya14busa/incsearch-easymotion.vim’

검색 후 하이라이트 결과에 단축 마커 표시, incsearch 플러그인의 확장 기능으로 검색 결과에 이동 마커를 표시한다. vim-easymotion이 설치되어 있어야 한다.

incsearch-easymotion 에서 가져온 동작 방식 이미지
incsearch-easymotion 에서 가져온 동작 방식 이미지

87. incsearch-fuzzy

Plugin ‘haya14busa/incsearch-fuzzy.vim’

fuzzy 검색, incsearch 플러그인의 확장 기능으로 입력 값에 비슷한 결과도 검색한다.

incsearch-fuzzy 에서 가져온 동작 방식 이미지
incsearch-fuzzy 에서 가져온 동작 방식 이미지

88. vim-tmux

Plugin ‘tmux-plugins/vim-tmux’

.tmux.conf 파일을 위한 플러그인, .tmux.conf 의 구문 하이라이트 :make 를 사용한 구문 검사등을 지원한다.

89. vim-vmath

Plugin ‘nixon/vim-vmath’

숫자들의 합, 평균등을 계산, 숫자로 이루어진 영역을 블럭하고 수행하면 합계, 평균, 개수 등을 레지스터에 저장해 준다. 합의 경우 “sp 명령어로 커서 위치에 붙일수 있다.

90. vim-sneak

Plugin ‘justinmk/vim-sneak’

두 문자 입력으로 커서 이동, 문자 2개를 입력 받아 커서를 이동 이동한다. ; 혹은 , 를 사용하여 앞 뒤로 이동 가능하며 jumplist를 수정하지 않는다. vim-easymotion와 같이 사용하면 라벨을 사용하여 검색 결과로 이동할 수 있다.

vim-sneak 에서 가져온 동작 방식 이미지
vim-sneak 에서 가져온 동작 방식 이미지

91. typescript-vim

Plugin ‘leafgarland/typescript-vim’

TypeScript 언어, TypeScript의 구문 하이라이트, 들여쓰기 컴파일 설정

92. vim-js-pretty-template

Plugin ‘Quramy/vim-js-pretty-template’

JavaScript Template 구문 강조, ES6에서 지원하는 template string 내부 코드의 구문을 강조한다.

93. vim-js-indent

Plugin ‘jason0x43/vim-js-indent’

JavaScript, TypeScript 들여쓰기, JavaScript, Embedded JavaScript, TypeScript의 들여쓰기 처리

94. vim-dtsm

Plugin ‘Quramy/vim-dtsm’

DTMS 플러그인, TypeScript Definition 파일인 .d.ts 파일 관리자

95. vimproc.vim

Plugin ‘Shougo/vimproc.vim’

명령어 수행 라이브러리, 여러 다른 vim 플러그인에서 운영체제 프로그램을 수행하기 위해 사용된다. 여러 플렛폼을 지원한다.

96. tsuquyomi

Plugin ‘Quramy/tsuquyomi’
let g:tsuquyomi_disable_quickfix = 1

TSServer 클라이언트, TypeScript를 지원하는 TSServer와 통신하는 클라이언트 플러그인. Vim을 TypeScript IDE로 사용할 수 있도록 지원한다.

97. tern_for_vim

Plugin ‘ternjs/tern_for_vim’

Tern 기반 편집 지원, Tern은 JavaScript 코드 분석 엔진인데 이를 사용하여 JavaScript 편집 지원한다.

98. javascript-libraries-syntax.vim

Plugin ‘othree/javascript-libraries-syntax.vim’
    autocmd BufReadPre *.js let b:javascript_lib_use_jquery = 1
    autocmd BufReadPre *.js let b:javascript_lib_use_underscore = 1
    autocmd BufReadPre *.js let b:javascript_lib_use_backbone = 1
    autocmd BufReadPre *.js let b:javascript_lib_use_prelude = 0
    autocmd BufReadPre *.js let b:javascript_lib_use_angularjs = 0

여러 JavaScript에 대한 구문 파일, jQuery, underscore 등의 여러 라이브러리 구문 파일을 지원한다.

99. es.next.syntax.vim

Plugin ‘othree/es.next.syntax.vim’

미래의 ECMAScript 구문 지원, Decorator, Class Static Fields 등과 같은 구문 지원

100. yajs.vim

Plugin ‘othree/yajs.vim’

추가적인 JavaScript 관련 구문 지원, Web API, DOM keywords, async, arrow function 등의 추가적인 JavaScript 관련 구문 지원

마무리

100개 넘는 플러그인이 설치되어 있었지만 사용하지 않는 것들을 정리하자 대략 100개로 추려졌다. 각각의 기능을 한 줄로 정리하면서 좀 더 잘 알게 되었다. 만약 JavaScript를 사용하고 있다면 https://davidosomething.com/blog/vim-for-javascript/ 에서 잘 정리된 플러그인들을 찾을 수 있다. Vim 매뉴얼이 딱딱하게 느껴진다면 무료 온라인 매뉴얼을 확인하길 바란다. 자주 사용하는 기능이 어느 플러그인의 기능인지 가끔 헷갈렸다. 정리해 두면 깔끔하다. 당신이 사용하는 플러그인도 알고 싶다. 링크를 걸어주길 바란다.

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Google photo

Google의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중

This site uses Akismet to reduce spam. Learn how your comment data is processed.