"Basic Setting
if has ("syntax")
	syntax on
endif
set hlsearch			"검색어 하이라이트
set number              "줄번호
set autoindent          " auto indent
set smartindent         " smart indent
set cindent				" C style indent 
set tabstop=4
set shiftwidth=4
set softtabstop=4
set ruler				" 현재 커서 위치 표시
set showmatch			" 일치하는 괄호 하이라이트
set wmnu				" 자동 완성 목록 표시
set history=1000		" 명령어에 대한 히스토리를 1000개까지
set title				" 제목 표시
set ignorecase			" 검색시 대소문자 구분 해제


"WSL2 사용 설정
set clipboard=unnamed  " 시스템 클립보드 사용
"set nocompatible       " 방향키로 이동
"set paste				" 붙여넣기 계단현상 없애기 -> 괄호 자동완성 delimitMate 불가.
"set mouse=a			" 커서 이동을 마우스로 가능하도록
"set nocompatible		" 방향키로 이동
"set background=dark
colorscheme jellybeans
"set mouse=a 단축키 설정
"map <F5> <ESC>:set mouse=a<CR>  
"map <F6> <ESC>:set mouse-=a<CR> 

" Clipboard

"yank후에 마크위치로 이동하기에, 다시 커서를 이동시킴
vnoremap y y`> 
"라인단위 yank후에 마크위치로 이동하기에, 다시 커서를 이동시킴
vnoremap Y Y`>
"붙여넣기 후 붙여넣기된 끝으로 커서이동
noremap p p`]
vmap <C-c> y:call system("xclip -i -selection clipboard", getreg("\""))<CR>:call system("xclip -i", getreg("\""))<CR>



" VIM 플러그인 설치 목록

set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
Plugin 'VundleVim/Vundle.vim'			" VIM 플러그인 관리 플러그인
Plugin 'The-NERD-Tree'					" 파일 탐색기
Plugin 'terryma/vim-multiple-cursors'	" 같은 문자열 선택
Plugin 'terryma/vim-smooth-scroll'		" 페이지 이동 에니메이션
Plugin 'Raimondi/delimitMate'			" 괄호 자동 완성
Plugin 'SirVer/ultisnips'				" snippet
Plugin 'honza/vim-snippets'				" snippet
Plugin 'Syntastic'						" 저장시 문법 검사
Plugin 'scrooloose/nerdcommenter'		" 주석 플러그인
Plugin 'neoclide/coc.nvim', {'branch': 'release'}
call vundle#end()


" The-NERD-Tree

"autocmd BufEnter * lcd %:p:h
"autocmd VimEnter * if argc() | NERDTree | endif
"아무 파일도 열려있지 않은 상태에서 NERDTree만 열려 있다면, NERDTree도 자동으로 종료한다.
"autocmd BufEnter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif 
"\ne 단축키 세팅
nmap <leader>ne :NERDTreeToggle<cr>
let NERDTreeShowLineNumbers=1


" vim-multiple-cursor
let g:multi_cursor_use_default_mapping=0

" Default mapping
let g:multi_cursor_next_key='<C-j>'
let g:multi_cursor_prev_key='<C-k>'
let g:multi_cursor_skip_key='<C-l>'
let g:multi_cursor_quit_key='<Esc>'

" vim-smooth-scroll
noremap <silent> <c-b> :call smooth_scroll#up(&scroll*2, 10, 5)<CR>
noremap <silent> <c-f> :call smooth_scroll#down(&scroll*2, 10, 5)<CR>
noremap <silent> <c-u> :call smooth_scroll#up(&scroll, 10, 3)<CR>
noremap <silent> <c-d> :call smooth_scroll#down(&scroll, 10, 3)<CR>

" delimitMate
let delimitMate_expand_cr=1

" UltiSnips
"let g:UltiSnipsExpandTrigger="<tab>"
"let g:UltiSnipsJumpForwardTrigger="<tab>"
"let g:UltiSnipsJumpBackwardTrigger="<s-tab>"
"let g:UltiSnipsEditSplit="vertical"

" Syntastic
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:syntastic_cpp_compiler = 'g++'
let g:syntastic_cpp_compiler_options = "-std=c++11 -Wall -Wextra -Wpedantic"
let g:syntastic_c_compiler_options = "-std=c11 -Wall -Wextra -Wpedantic"

" NERD Commenter
let g:NERDSpaceDelims = 1
let g:NERDCompactSexyComs = 1
let g:NERDDefaultAlign = 'left'
let g:NERDAltDelims_java = 1
let g:NERDCustomDelimiters = { 'c': { 'left': '/*','right': '*/' } }
let g:NERDCommentEmptyLines = 1
let g:NERDTrimTrailingWhitespace = 1
map <Leader>cc <plug>NERDComToggleComment
map <Leader>c<space> <plug>NERDComComment
ubiquitous4g