vimrc set, keymap
vimrc set
vimrc set
keymap
커서 이동
key | 설명 | 응용 |
---|---|---|
h | 왼쪽으로 커서 이동 | 10h : 왼쪽으로 10칸 이동 |
j | 아래로 커서 이동 | 10j : 아래로 10줄 이동 |
k | 위로 커서 이동 | |
l | 오른쪽으로 커서 이동 | |
w | 한 단어 오른쪽으로 커서 이동 | 5w : 5 단어 오른쪽으로 이동 |
b | 한 단어 왼쪽으로 커서 이동 | |
H | 화면 맨 위로 이동 | |
M | 화면 중간으로 이동 | |
L | 화면 맨 아래로 이동 | |
CTRL + F | 한 화면 앞으로 이동(FORWARD) | |
CTRL + B | 한 화면 뒤로 이동(BACK) | |
CTRL + D | 반 화면 앞으로 이동(DOWN) | |
CTRL + U | 반 화면 뒤로 이동 (UP) | |
CTRL + E | 한 줄씩 위로 이동 | |
CTRL + Y | 한 줄씩 아래로 이동 | |
z + ENTER | 현재 행을 상단으로 | |
z. | 현재 행을 중앙으로 | |
z- | 현재 행을 하단으로 | |
^ | 행의 맨 왼쪽으로 커서 이동 | |
$ | 행의 맨 오른쪽으로 커서 이동 | |
> | 들여쓰기 | vjjj> (indent several lines) |
삽입
key | 설명 | 응용 |
---|---|---|
a | 커서 오른쪽에 문자 삽입 | |
A | 커서 오른쪽, 행의 끝에 문자 삽입 | |
i | 커서 왼쪽에 문자 삽입 | |
I | 커서 왼쪽, 행의 처음에 문자 삽입 | |
o | 커서 아래에 행 삽입 | |
O | 커서 위에 행 삽입 |
VIM 설정
call plug#begin('~/.vim/plugged')
Plug 'preservim/nerdtree'
Plug 'frazrepo/vim-rainbow'
"python code style rule
Plug 'nvie/vim-flake8'
"indent level 줄로 표시
Plug 'nathanaelkane/vim-indent-guides'
"yank로 복사한 부분 highlight
Plug 'machakann/vim-highlightedyank'
"search할 때 단어 총 개수, 해당 단어가 몇번째 단어인지 표기
Plug 'osyo-manga/vim-anzu'
"Plug 'yuttie/comfortable-motion.vim'
"커서가 놓인 단어에 밑줄
Plug 'itchyny/vim-cursorword'
"문자열 끝 공백 붉은색 표시 및 삭제
Plug 'bitc/vim-bad-whitespace'
Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes'
Plug 'preservim/nerdcommenter'
Plug 'tpope/vim-surround'
Plug 'vimwiki/vimwiki', { 'branch': 'dev' }
Plug 'mhinz/vim-startify'
Plug 'ycm-core/YouCompleteMe'
" Track the engine.
Plug 'SirVer/ultisnips'
" Snippets are separated from the engine. Add this if you want them:
Plug 'honza/vim-snippets'
call plug#end()
" 로컬 리더 키 설정은 취향이니 각자 마음에 드는 키로 설정한다
let maplocalleader = "\\"
"1번 위키(공개용)
let g:vimwiki_list = [
\{
\ 'path': '~/codingmatemoon.github.io/_wiki',
\ 'ext' : '.md',
\ 'diary_rel_path': '.',
\}
\]
" vimwiki의 conceallevel 을 끄는 쪽이 좋다
let g:vimwiki_conceallevel = 0
"let g:startify_custom_header = ['Welcome to Vim!']
let g:startify_custom_footer = ['Press <leader> n to create a new file', 'Press <leader> b to add a bookmark']
let g:startify_files_number = 10
let g:startify_bookmarks = [
\ {'w': '~/CodingMateMoon.github.io/_wiki/index.md'},
\ {'v': '~/.vimrc'},
\ {'h': '~/.hammerspoon/init.lua'},
\]
let g:startify_lists = [
\ { 'type': 'sessions', 'header': [' Saved sessions'] },
\ { 'header': [' Bookmarks'], 'type': 'bookmarks' },
\ { 'header': [' MRU'], 'type': 'files' },
\ { 'header': [' MRU'. getcwd()], 'type': 'dir' },
\ ]
" delete vimwiki ignore in YouCompleteMe blacklist
let g:ycm_filetype_blacklist = {}
" Trigger configuration. You need to change this to something other than <tab> if you use one of the following:
" - https://github.com/Valloric/YouCompleteMe
" - https://github.com/nvim-lua/completion-nvim
let g:UltiSnipsExpandTrigger="<tab>"
let g:UltiSnipsJumpForwardTrigger="<c-b>"
let g:UltiSnipsJumpBackwardTrigger="<c-z>"
" If you want :UltiSnipsEdit to split your window.
let g:UltiSnipsEditSplit="vertical"
function! LastModified()
if g:md_modify_disabled
return
endif
if &modified
" echo('markdown updated time modified')
let save_cursor = getpos(".")
let n = min([10, line("$")])
keepjumps exe '1,' . n . 's#^\(.\{,10}updated\s*: \).*#\1' .
\ strftime('%Y-%m-%d %H:%M:%S +0900') . '#e'
call histdel('search', -1)
call setpos('.', save_cursor)
endif
endfun
function! NewTemplate()
let l:wiki_directory = v:false
for wiki in g:vimwiki_list
if expand('%:p:h') =~ expand(wiki.path)
let l:wiki_directory = v:true
break
endif
endfor
if !l:wiki_directory
return
endif
if line("$") > 1
return
endif
let l:template = []
call add(l:template, '---')
call add(l:template, 'layout : wiki')
call add(l:template, 'title : ')
call add(l:template, 'summary : ')
call add(l:template, 'date : ' . strftime('%Y-%m-%d %H:%M:%S +0900'))
call add(l:template, 'updated : ' . strftime('%Y-%m-%d %H:%M:%S +0900'))
call add(l:template, 'tag : ')
call add(l:template, 'toc : true')
call add(l:template, 'public : true')
call add(l:template, 'parent : ')
call add(l:template, 'latex : false')
call add(l:template, 'resource: ' . substitute(system("uuidgen"), '\n', '', ''))
call add(l:template, '---')
call add(l:template, '* TOC')
call add(l:template, '{:toc}')
call add(l:template, '')
call add(l:template, '# ')
call setline(1, l:template)
execute 'normal! G'
execute 'normal! $'
echom 'new wiki page has created'
endfunction
augroup vimwikiauto
autocmd BufWritePre *wiki/*.md call LastModified()
autocmd BufRead,BufNewFile *wiki/*.md call NewTemplate()
augroup END
"autocmd BufWritePre *.md call LastModified()
"autocmd BufRead,BufNewFile *.md call NewTemplate()
" 자주 사용하는 vimwiki 명령어에 단축키를 취향대로 매핑해둔다
command! WikiIndex :VimwikiIndex
nmap <LocalLeader>ww <Plug>VimwikiIndex
nmap <LocalLeader>wi <Plug>VimwikiDiaryIndex
nmap <LocalLeader>w<LocalLeader>w <Plug>VimwikiMakeDiaryNote
nmap <LocalLeader>wt :VimwikiTable<CR>
" F4 키를 누르면 커서가 놓인 단어를 위키에서 검색한다.
nnoremap <F4> :execute "VWS /" . expand("<cword>") . "/" <Bar> :lopen<CR>
" Shift F4 키를 누르면 현재 문서를 링크한 모든 문서를 검색한다
nnoremap <S-F4> :execute "VWB" <Bar> :lopen<CR>
" let g:vimwiki_global_ext = 0
nmap <F7> :NERDTreeToggle<CR>
"nnoremap <LocalLeader>t :Startify<CR>
nmap <c-n> :Startify<cr>
"map <LocalLeader>t <ESC><ESC>:Startify<CR>
" Vimwiki의 테이블 단축키를 사용하지 않도록 한다
let g:vimwiki_table_mappings = 0
augroup vimwikiauto
" <C-s> 로 테이블에서 오른쪽 컬럼으로 이동한다.
autocmd FileType vimwiki inoremap <C-s> <C-r>=vimwiki#tbl#kbd_tab()<CR>
" <C-a> 로 테이블에서 왼쪽 컬럼으로 이동한다.
autocmd FileType vimwiki inoremap <C-a> <Left><C-r>=vimwiki#tbl#kbd_shift_tab()<CR>
augroup END
" `SPC l s` - save current session
nnoremap <leader>ls :SSave<CR>
" `SPC l l` - list sessions / switch to different project
nnoremap <leader>ll :SClose<CR>
nnoremap <leader>lh :h startify<CR>
set history=500
" Show current position at bottom-right
set ruler
set lazyredraw
set magic
" Show matching brackets when text indicator is over them
set showmatch
" How many tenths of a second to blink when matching brackets
set mat=2
" Show line number
"set number
" Set line number relative
"set relativenumber
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Search Setting
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Ignore case when searching
set ignorecase
" Be smart when searching
set smartcase
" Highlight search last result
set hlsearch
" Move cursor when searching
set incsearch
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Color Setting
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Syntax Enable
syntax on
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Indent Setting
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" tab == 2 space
set tabstop=2
set shiftwidth=2
set softtabstop=2
" Using tab like 2 space
set expandtab
set smarttab
" Auto Indent
set ai
" Smart Indent
set si
set relativenumber!
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Key Mapping
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" ,vi => Show edit tab .vimrc
nnoremap <leader>vi :tabe ~/.vimrc<CR>
" ,src => Reload .vimrc
nnoremap <leader>src :source ~/.vimrc<CR>
" ,q => Quit
map <leader>q <ESC><ESC>:q<CR>
" F2 => Save File
"imap <F2> <ESC><ESC>:w<CR>
map <F2> <ESC><ESC>:w<CR>
" F3 => Toggle line number
" map <F3> <ESC>:set nu! relativenumber!<CR>
map <F3> <ESC>:set nu! rnu!<CR>
" jk => esc, Escape insert mode
inoremap jk <ESC>