"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