vi(Visual editor)는 1976년도에 UNIX 운영체제에서 사용하기 위한 오픈 소스 문서 편집기 입니다. 아직도 터미널에서 간단한 편집을 할 때 가장 많이 사용하는 편집기 입니다. 리눅스에서는 vi에 추가적 확장 기능을 추가한 vim(vi improved)을 주로 사용을 합니다. 요즘에는 우분투에서도 프로그래밍을 할 때 vim보다는 Microsoft사의 Visual Studio Code를 사용하지만 터미널로 연결 했을 때에는 어쩔 수 없이 vim을 사용하게 됩니다.
vim은 많은 플러그인(plug-in)을 지원하며 추가 패키지(package)를 설치하면 매우 유용 합니다. 먼저 다음과 같이 vim과 필수 패키지를 설치 합니다.
$ sudo apt install vim $ sudo apt install exuberant-ctags cmake curl |
다음은 잘 작성된 vim plug를 다운로드(download) 합니다.
$ curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim |
위의 plug.vim 파일이 다운로드 되었으면 다음과 같이 vi로 .vimrc 파일을 생성 합니다.
$ vi ~/.vimrc |
아래 내용을 복사하여 .vimrc 파일에 붙여넣기를 한 후에 저장을 합니다.
if has("syntax")
syntax on
endif
set bg=dark
colorscheme gruvbox
highlight Normal ctermbg=black ctermfg=white " 백그라운드의 안개낀 현상을 제거하여 더 선명 함
" =======================================================================================
set fileencodings=utf-8
set termencoding=utf-8
set encoding=utf-8
set nocompatible " 오리지날 vi 호환하지 않음
set number " 줄번호
set hlsearch " 검색어 하이라이팅
set autoindent " 자동 들여쓰기
set scrolloff=2 " scroll offset(최소 2줄 이하로는 자동 스크롤 : 개발 시 아랫줄 코드 확인 시 필요)
set wildmode=longest,list " tab 사용시 자동완성 리스트 출력
set ts=4 " tag select
set sts=4 " st select
set sw=1 " 스크롤바 너비
set autowrite " 다른 파일로 넘어갈 때 자동 저장
set bs=eol,start,indent " 줄의 끝,시작,들여쓰기 지점에서 백스페이스로 이전줄과 연결됨 허용
set history=500 " vim editor 에서 명령어 기록을 남길 갯수(vim 명령줄에서 Ctrl+p/n 으로 찾기)
set laststatus=2 " 상태바 표시 항상
set shiftwidth=3 " 자동 들여쓰기 너비 설정
set showmatch " 일치하는 괄호 하이라이팅
set softtabstop=3 " tab size
set tabstop=3 " tab size
set ruler " 현재 커서 위치 표시
set paste " 붙여넣기 시 계단현상 없애기 default 값 지정(!= set nopaste)
set noexpandtab " tab 을 space로 확장하지 않음(!= set expandtab)
set autowrite " 다른 파일로 넘어갈 때 자동 저장
set smartindent
set expandtab
set mouse=a
" =======================================================================================
" 검색 시 대소문자 on/off
function! IgnoreCase()
if(&ignorecase == 0)
set ignorecase
else
set noignorecase
endif
endfunc
nnoremap ,ic :call IgnoreCase()<cr>
" number 상대성 on/off
function! RelativeNumber()
if(&relativenumber == 1)
set norelativenumber
else
set relativenumber
endif
endfunc
nnoremap ,rn :call RelativeNumber()<cr>
" 붙여넣기 시 autoindent 에 의한 계단현상 on/off(개발환경에서 autoindent 가 필요 함)
function! Paste()
if(&paste == 0)
set paste
else
set nopaste
endif
endfunc
nnoremap ,pt :call Paste()<cr>
filetype off " required
" 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'
"" Side tab(File Tree)
Plug 'scrooloose/nerdtree'
Plug 'scrooloose/nerdcommenter'
Plug 'jistr/vim-nerdtree-tabs'
"" 파일 찾기
Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --all' }
Plug 'junegunn/fzf.vim'
" tags area
Plug 'majutsushi/tagbar'
" colors-scheme
Plug 'morhetz/gruvbox'
" Initialize plugin system
call plug#end()
filetype plugin indent on " required
let mapleader=',' " mapleader 를 [,]로 설정. default 는 [\]
"" fzf
nmap <F2> :Files<Cr>
"" scrooloose/NERDtree
nmap <F3> :NERDTreeToggle<CR>
let NERDTreeShowHidden=1
" toggle tagbar display
nmap <F4> :TagbarToggle<CR>
위 내용으로 .vimrc 파일을 저장한 후에 vi 명령창에서 다음과 같이 실행을 합니다.
:PlugInstall |
vim은 필요한 플러그인(plug-in)을 설치 합니다. 플러그인 중에 gruvbox 플러그인은 패스가 맞지 않아 vi를 종료 한 후에 터미널 창에서 수동으로 복사를 하면 마무리가 됩니다.
$ cp -pr ~/.vim/plugged/gruvbox/colors ~/.vim/ |
'컴퓨터 이야기 > 우분투' 카테고리의 다른 글
우분투에 새로운 디스크 추가하고 사용하기 (1) | 2023.02.27 |
---|---|
[팁] 깃허브 공개키 만들기 (0) | 2022.12.28 |
[팁] 우분투 파일 시스템을 윈도우즈에서 공유하기(samba) (1) | 2022.12.28 |
[팁] 우분투 ssh server 설치하기 (0) | 2022.12.28 |
[팁] 우분투 root 계정 활성화 (1) | 2022.12.28 |
댓글