티스토리 뷰

반응형

vi editor 예쁘게 꾸미기

 

vi editor 예쁘게 꾸미기(vi editor beautify, Vundle + plugins)

 

Linux에서 가장 사랑받는 text editor, vi editor를 더욱 현대적이고 쓰기 편하게 설정하는 방법을 설명드립니다. 제가 사용하는 .vimrc 파일 역시 올려드리겠습니다.

제가 쓰는 설정대로 쉽게 만들 수 있습니다. 그럼 Linux, wsl 등 실행하시고 천천히 따라오세요.

 

Vundle 설치

 

vi editor에 다양한 패키지를 설치하고 관리하기 위해서 Vundle plugin manager를 먼저 설치합니다. Vundle plugin manager에 단순히 Plugin 이름과 Repo.를 설정해 주면 자동으로 PluginInstall 및 PluginUpdate가 가능합니다.

 

Vundle github

 

GitHub - VundleVim/Vundle.vim: Vundle, the plug-in manager for Vim

Vundle, the plug-in manager for Vim. Contribute to VundleVim/Vundle.vim development by creating an account on GitHub.

github.com

 

터미널을 실행하시고 아래 명령어를 복사 & 붙여넣기 하셔서 Vundle을 설치할 수 있습니다.

 

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

 

만약 위 코드 블록에 코드가 복사 & 붙여넣기가 안되는 경우, 제 파일을 다운로드해 사용하세요.

 

vim_꾸미기.txt
0.00MB

 

.vimrc 환경설정 파일 생성하기

 

Vundle 홈페이지에 나오는 code 또는 제가 올려드린 "vim_꾸미기.txt" 파일에서 .vimrc 환경설정 code 내용을 복사합니다.

cd ~

cat > .vimrc

#붙여넣기(ctrl + shift + v 또는 마우스 오른쪽 클릭)

#Enter 눌러서 한 줄 변경

#Ctrl+D를 눌러서 종료.

 

아래 code는 [Vundle의 기본 설정 code]

 

set nocompatible              " be iMproved, required
filetype off                  " required

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

" 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

 

아래는 [제 환경설정 파일]

 

set nocompatible              " be iMproved, required
filetype off                  " required

set nu
color koehler
filetype plugin indent on
if has("syntax")
                syntax on
endif

:se hlsearch
:se cursorline
" Enable persistent undo so that undo history persists across vim sessions
set undofile
set undodir=~/.vim/undo

set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()

Plugin 'VundleVim/Vundle.vim'
Plugin 'preservim/nerdtree'
Plugin 'junegunn/goyo.vim'
Plugin 'https://github.com/ycm-core/YouCompleteMe'
Plugin 'junegunn/limelight.vim'
Plugin 'godlygeek/tabular'
Plugin 'preservim/vim-markdown'
Plugin 'vim-airline/vim-airline'
Plugin 'vim-airline/vim-airline-themes'
Plugin 'simnalamburt/vim-mundo'
" 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'}

" 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
nnoremap <f3> :NERDTreeFocus<CR>
nnoremap <C-n> :NERDTree<CR>
nnoremap <C-t> :NERDTreeToggle<CR>
nnoremap <C-f> :NERDTreeFind<CR>
nnoremap <f2>   :MundoToggle<CR>
nnoremap <f4>   :Goyo<CR>
nnoremap <f5>   :Limelight!!<CR>

 

각종 플러그인 및 단축키까지 설정되어 있습니다.

F2는 MundoToggle
F3는 NERDTreeFocus
Ctrl+n는 NERDTree
Ctrl+f는 NERDTreeFind
F4는 Goyo
F5는 Limelight Toggle이 설정되어 있습니다.
자신에 맞게 단축키 설정도 바꾸시면 됩니다.

 

plugin 설치

 

vi editor에서 [esc]키를 누르고 :PluginInstall을 입력하고 Enter를 누릅니다.
:PluginUpdate 명령어도 사용 가능합니다. 나중에 플러그인 업데이트 시 사용하세요.

 

:PluginInstall
q
esc
:x

 

 

PluginInstall

 

Undo용 디렉터리 생성

 

mundo라는 undo의 history를 확인하고 예전 변경 내역으로 되돌릴 수 있는 기능을 사용하기 위해 ./vim/undo라는 폴더를 생성합니다.

 

mkdir -p ~/.vim/undo

 

YouCompleteMe 설치

 

sudo apt install build-essential cmake vim-nox python3-dev
sudo apt install mono-complete golang nodejs openjdk-17-jdk openjdk-17-jre npm
cd ~/.vim/bundle/YouCompleteMe/
./install.py 
#실행이 잘 안될 경우 python3 install.py

#전체 설치 옵션(Option, 용량 1~6기가 이상 필요)
python3 install.py --all

 

이제 모든 설치가 완료되었습니다. YouCompleteMe의 경우 일반적인 설치를 하였습니다. 전체 패키지를 모두 설치하려면 용량이 1기가 이상 필요합니다.

이제 모든 설치가 끝났습니다. 그럼 vi editor 즐겁게 사용하세요.

 

Plugin 소개

 

vim-airline

 

vim-airline

 

vi editor 창 아래쪽에 airline이 생성됩니다. 이쁘죠.

 

mundo

 

mundo

 

파일에서 수정한 내역을 시간 별로 확인하여 다시 되돌릴 수 있습니다.

 

Goyo

 

Goyo

 

글쓰기 모드에 적당한 Goyo로 화면의 중간으로 영역을 줄여줍니다. 주로 일기, 글쓰기 할 때 적당한 플러그인입니다.

 

NERDTree

 

NERDTree

 

vi editor에서 NERDTree를 생성하여 바로 다른 파일을 편집하거나 파일을 찾을 수 있습니다.

 

limelight

 

limelight

 

커서가 있는 라인과 근처만 하이라이트 되며 다른 여백은 회색 처리되는 기능입니다. 글쓰기 또는 코딩할 때 포커싱을 시켜줍니다.

 

YouCompleteMe

 

YouCompleteMe

 

IDE처럼 코딩 시 자동완성을 제공합니다. 많은 플러그인들이 있는데 저는 이 정도 플러그인만 사용하고 있습니다. 

 

반응형
댓글