티스토리 뷰


 최근에 회사를 다니기 시작했는데 리눅스에서의 순정 Vim만으로는 코드 생산성이 답이 안나오더라. 그래서 예전에 한번 실패했던 Vim 플러그인 설치에 다시 도전했고, 잘 쓰고 있다. 사용하는 플러그인과 .vimrc 설정 파일을 공유하는 취지에서 포스팅을 남긴다.

플러그인을 잘 쓰면 왠만한 GUI 에디터 부럽지 않은 성능을 뽑아낸다. 근데 난 플러그인을 잘 못쓰잖아? 난 아마 안될거야...


- Vim Plugin 매니저 'Vundle' 설치

git clone https://github.com/gmarik/Vundle.vim.git ~/.vim/bundle/Vundle.vim


- "~/.vimrc" vim 설정파일에 Vundle 스크립트 추가. ( " 은 주석으로 처리됨)

set nocompatible

" 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 'gmarik/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/'}


" 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


- 플러그인 설치정보를 .vimrc에 추가

" Vim에서 파일 탐색기를 사용할 수 있게 한다. - Nerd Tree

Plugin 'The-NERD-tree'

" Vim에서 자동완성 기능(Ctrl + P)을 키입력하지 않더라도 자동으로 나타나게 - AutoComplPop

Plugin 'AutoComplPop'

" 열려있는 소스파일의 클래스, 함수, 변수 정보 창 - Tag List

Plugin 'taglist-plus'


- Tag List는 ctag 라는 패키지를 사용하므로 설치해 준다. (이게 뭐하는 친구인지는 사실 잘 모른다.)

Ubuntu / Debian 계열 : sudo apt-get install ctags

Redhat / Centos 계열 : sudo yum install ctags


- 설치된 플러그인의 설정을 .vimrc에 추가

" NERD Tree를 왼쪽에 생성

let NERDTreeWinPos = "left"

" NERD Tree는 F7키. Tag List는 F8키에 매칭.

nmap <F7> :NERDTree<CR>

nmap <F8> :TlistToggle<CR>

filetype on

" Tag list가 사용하는 ctags의 경로 설정

let Tlist_Ctags_Cmd = "/usr/bin/ctags"

let Tlist_Inc_Winwidth = 0

let Tlist_Exit_OnlyWindow = 0

let Tlist_Auto_Open = 0

" Tag list 창을 오른쪽으로 생성

let Tlist_Use_Right_Window = 1


 그리고 Vim으로 들어가 일반모드에서 :PluginInstall 을 입력하면 vimrc에서 Plugin 명령어로 잡아놓은 플러그인들이 설치된다. 나는 처음에 vim 내에서 창이동을 어떻게 하는지 몰랐는데, Ctrl+ww 하면 다음 창으로 이동이 된다. 좀 더 자세한 기능은 구글링해보시길.


- 추가로 .vimrc에서 잡아놓으면 좋은 설정들

" vi 실행시 number line 생성

set nu

" 코딩 작업시 자동 들여쓰기

set smartindent

" 일반모드에서 / 검색시 하이라이팅

set hlsearch

" 일반모드에서 / 검색시 대소문자 구분하지 않음

set ignorecase

" Tab 관련 설정. 일반적으로 가장 많이 쓰이는 tabstop 4, shiftwidth 4

set tabstop=4

set shiftwidth=4


왼쪽 창이 Nerd-Tree. 오른쪽 창이 Tag List. 가운데 자동완성이 AutoComplPop


 참고로 Nerd Tree에서 특정 파일 실행시 창 분할로 오픈하고 싶다면 엔터가 이닌 i (수평분할), s (수직분할) 키를 사용하면 된다. 수평으로 분할된 창의 크기 조절은 Ctrl+w (숫자) + 혹은 - 로 사용가능. 수직 분할창의 크기조절 키는 구글링해도 모르겠다. 혹시 지나가시던 능력자 분께서 댓글로 알려주시면 정말로 복받으실 듯 ㅜㅜ


- 참고 포스팅

http://dreamlog.tistory.com/79 

https://dobest.io/install-vundle-and-nerdtree/



저작자 표시 비영리 변경 금지
신고
프로필사진

Yowu (Yu Yongwoo)

My MBTI type is ENTP. (Of course I do not believe it 100%, but I want to do that) I use Node.js to develop the backend. I use Ubuntu Linux as my development environment, and I love Vim. I am interested in open source and are keen to contribute. I have a bachelor's degree in computer science from Catholic University and now a software engineer at Plating Inc., I spent about 5 years developing and learning, and I am still interested in software development and culture. Recently, I am interested in React, Serverless structure, Domain Design Driven. Sometimes I play drums in the band.