반응형
    
    
    
  1. vim 단축키란?
vim은 CLI(Command Line Interface)용 편집기로 여러개의 간편한 단축키가 있고, 사용자가 원하는데로 단축키를 설정 하여 사용 할 수도있다.
현재의 블로그에서는 기존에 존재하는 단축키 사용이 아닌 사용자가 단축키를 설정하여 여태까지 추가한 플러그인의 기능을 사용자가 보다 간편하고 편리하게 사용 할 수 있는 방법을 제시한다.
2. .vimrc에 Plugin 추가
vim 단축키 설정에는 Plugin에 추가할게 없다.
3. 설정
"-----------------------------------------------------------------------"
" User Key Setting
"-----------------------------------------------------------------------"
let mapleader = ","
" 새로운 파일을 열때 사용, 경로를 입력해야 한다. 
nmap <leader>n :e
" 가로로 새로운 윈도우를 열 때 사용, 파일 경로 입력 필요
nmap <leader>s :sp
" 세로로 새로운 윈도우를 열 때 사용, 파일 경로 입력 필요
nmap <leader>v :vsp
" 다음 버퍼로 이동
nnoremap <leader>z :bp<CR>
" 이전 버퍼로 이동
nnoremap <leader>x :bn<CR>
" 현재 버퍼를 닫고 이전 버퍼로 이동
nmap <leader>bz :bp <BAR> bd #<CR>
" 모든 버퍼와 각 버퍼 상태 출력
nmap <leader>bl :ls<CR>
"fzf excute
nmap <leader>f :FZF<cr>
"Rg excute
"Input Pattern
nmap <leader>r :RG<Space>
"Input cursor location
nmap <leader>R :RG <C-R>=expand("<cword>")<CR><CR>
" Key Setting - resize windows
nnoremap <silent> <Leader>= :exe "resize +3"<CR>
nnoremap <silent> <Leader>- :exe "resize -3"<CR>
nnoremap <silent> <Leader>] :exe "vertical resize +8"<CR>
nnoremap <silent> <Leader>[ :exe "vertical resize -8"<CR>
nnoremap <silent> <Leader>+ :exe "resize " . (winheight(0) * 3/2)<CR>
nnoremap <silent> <Leader>_ :exe "resize " . (winheight(0) * 2/3)<CR>
nnoremap <silent> <Leader>} :exe "vertical resize " . (winheight(0) * 3/2)<CR>
nnoremap <silent> <Leader>{ :exe "vertical resize " . (winheight(0) * 2/3)<CR>
nnoremap K kzz
nnoremap J jzz
nnoremap <Leader>h :noh<CR>
"-----------------------------------------------------------------------"
" User  환경설정
"-----------------------------------------------------------------------"
" F2 [], {} 괄호에 대한 폴딩 실행
nmap <F2> v]}zf
nmap <F3> :Git blame<cr>
" F4 누를 경우 컴파일(Makeile 있어야 함.)
nmap <F4> :w<cr> : make<cr> : ccl<cr>  cw<cr>
" F5 누를시 현재 라인 주석, 범위 설정 후 누르면 범위 주석
nmap <F5> :norm I//<cr>
" F6 누를시 주석 해제
nmap <F6> :norm ^xx<cr>
" F7 key = Tag List Toggle
nmap <F7> :TlistToggle<CR>
" F8 key = SrcExpl Toggle
nmap <F8> :SrcExplToggle<CR>
"nmap  <F9> :NERDTreeToggle<CR>	" F9 Key = NERD Tree Toggle
"nmap <F10> :let g:view_source = 0<CR>
nmap <F10> :!rm -rf cscope.files <CR> :!find . 
		\ \( -name '*.c' -o -name '*.cpp' -o -name '*.cc'
		\ -o -name '*.h' -o -name '*.s' -o -name '*.S' \) 
		\ -print > cscope.files <CR> :!cscope -i cscope.files <CR><CR>
" F12 tags 생성
nmap <F12> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q ./ <CR><CR>| let mapleader = "," | leader는 기본적으로 '\'를 가르키게 되어 있는데 ','를 가르키도록 수정한다. | 
| nmap <leader>r :RG<Space> | 명령어 창에 :RG 입력이 된다. | 
| nmap <leader>R :RG <C-R>=expand("<cword>")<CR><CR> | 커서가 위치한 단어를 이용하여 :RG 명령어를 실행한다. | 
| nnoremap <silent> <Leader>= :exe "resize +3"<CR> | 커서가 있는 버퍼의 세로를 +3 늘린다. | 
| nnoremap <silent> <Leader>] :exe "vertical resize +8"<CR> | 커서가 있는 버퍼의 가로를 +8 늘린다. | 
| nnoremap K kzz | 커서가 한칸 올라가면서 커서가 현재 화면 중앙에 위치하도록 화면이 이동 됨. | 
| nnoremap J jzz | 커서가 한칸 내려가면서 커서가 현재 화면 중앙에 위치하도록 화면이 이동 됨. | 
| nnoremap <Leader>h :noh<CR> | "/단어" 로 하이라이트된 단어들의 하이라트를 지운다. | 
| nmap <F7> :TlistToggle<CR> | taglist를 볼 수 있는 명령어 맵핑으로 열려있는 소스의 함수, 변수, 클래스 정보등을 알려주는 창이다. 해당 기능을 사용하기 위해서는 taglist.vim 플러그인 설치와 몇가지 .vimrc의 설정이 필요하다. 추후 블로그에서 설치 설명 예정임으로 현재 동작은 되지 않는다. | 
| "nmap <F9> :NERDTreeToggle<CR> " F9 Key = NERD Tree Toggle | NerdTree 실행시 F9를 누를 경우 실행됨. 추후 블로그에서 NerdTree에 대하여 설명예정으로 현재 동작은 되지 않는다.(현재 주석 처리 됨) | 
| "nmap <F10> :let g:view_source = 0<CR> | SrcExpl 실행시 F10을 누를 경우에만 SrcExpl 화면이 갱신되도록 함. 코스 수정이 필요 하며 추후 블로그시 추가 설명 예정(현재 주석 처리 됨). | 
| nmap <F10> :!rm -rf cscope.files <CR> :!find . \ \( -name '*.c' -o -name '*.cpp' -o -name '*.cc' \ -o -name '*.h' -o -name '*.s' -o -name '*.S' \) \ -print > cscope.files <CR> :!cscope -i cscope.files <CR><CR> | scope 실행 scope가 설치되어 있어야 한다. | 
| nmap <F12> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q ./ <CR><CR> | ctags 실행 ctags가 설치되어 있어야 한다. | 
map vs noremap
| 설명 | |
| map | recursive map으로써 키 맵핑이 이루어진 키가 또 다른 키로 맵핑되면 그 키를 찾아가 실행된다. | 
| noremap | non recursive map으로 키 맵이 이루어진 키가 또 다른 키로 맵핑되어도 처음 맵핑 된 키만 실행 한다. | 
map 예제
:map a gg
:map b a
b->a->gg 로 실행 됨
-----------------------------------------------------------------------------------------------------------------------------------------------------------
noremap 예제:map a gg
:map b a
b->a 만 실행 됨.
Mode별 map 기능 맵핑
| 모드별 map 명령어 | 설명 | 
| nmap | display normal mode maps | 
| imap | display insert mode maps | 
| vmap | display visual and select mode maps | 
| smap | display select mode maps | 
| xmap | display visual mode maps | 
| cmap | display command-line mode maps | 
| omap | display operator pending mode maps | 
map 설정을 위한 키 조합
| 키 조합 | 표기법 | 
| Shift + ${key} | <S-${key}> | 
| Ctrl + ${key} | <C-${key}> | 
| Alt + ${key} | <A-${key}> | 
map 설정 특수기호 표기법
| 키 | 표기법 | 
| Enter | <Enter> | 
| <Return> | |
| <CR> | |
| Backspace | <BS> | 
| Escape | <Esc> | 
| Space | <Space> | 
| Home | <Home> | 
| End | <End> | 
| Page Up | <PageUp> | 
| Delete | <Del> | 
| Pipe (|) | <bar> | 
| F1,F2 ... F11, F12 | <F1>, <F2> ... <F11>, <F12> | 
| Up arrow | #1, #2 ... #9, #0 | 
| Down arrow | <Down> | 
| Up arrow | <Up> | 
| Left arrow | <Left> | 
| Right | <Right> | 
| Page Down | <Page_Down> | 
4. 현재까지의 설정이 적용된 .vimrc 내용
"-----------------------------------------------------------------------"
" Vundle 환경설정
"------------------------------------------------------------------------"
filetype off                   " required!
set shell=/bin/bash
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
	" let Vundle manage Vundle
	" required!
	Plugin 'VundleVim/Vundle.vim'
	" vim 하단에 파일 정보 띄우기
	Plugin 'vim-airline/vim-airline'
	Plugin 'vim-airline/vim-airline-themes'
   
	"vim corlor/scheme 수정
	Plugin 'morhetz/gruvbox'
	
	" 파일 및 폴더 탐색
	Plugin 'ctrlpvim/ctrlp.vim'
	" vim 사용중 git 명령어 사용
	Plugin 'tpope/vim-fugitive'
	"vim 하단에 커서가 있는 함수나 변수의 정의 부분을 출력
	Plugin 'wesleyche/srcexpl'
	"명령어 자동완성 플러그인(inc + <C-a> : #include<>)
	Plugin 'SirVer/ultisnips'
	Plugin 'honza/vim-snippets'
	" [] {} 등 괄호 입력시 자동으로 닫아주는 플러그인
	Plugin 'jiangmiao/auto-pairs' 
	Plugin 'junegunn/fzf', { 'do': { -> fzf#install() } }
	Plugin 'junegunn/fzf.vim'
    " ...
call vundle#end()
filetype plugin indent on     " required!
	"
	" Brief help
	" :BundleList          - list configured bundles
	" :BundleInstall(!)    - install(update) bundles
	" :BundleSearch(!) foo - search(or refresh cache first) for foo
	" :BundleClean(!)      - confirm(or auto-approve) removal of unused bundles
	"
	" see :h vundle for more details or wiki for FAQ
	" NOTE: comments after Bundle command are not allowed..
"-----------------------------------------------------------------------"
"vim 환경설정
"-----------------------------------------------------------------------"
	" Vim 전용 기능 사용
	set nocompatible "Vim Using
	"파일 타입 설정
	set encoding=utf-8
	set fencs=utf-8,cp949,cp932,euc-jp,shift-jis,big5,ucs-2le,latin1
	" 명령어 기록 갯수
	set hi=1000
	" 백스페이스 사용
	set bs=indent,eol,start
	" 오른쪽 하단 커서 위치 항상 보이기
	set ru "same ruler
	" 줄번호 표시
	set nu
	" 줄 번호 표시 너비 설정
	set nuw=5
	" 탭 크기 설정
	set ts=4 "same tabstop
	set sw=4 "same shiftwidth
	set sts=0 "same softtabstop
	autocmd FileType make setlocal noexpandtab "Makefile은 tab 문법이기 때문에 스페이스 대체 안함.
	" 탭 >> 공백 변환 사용안함
	"set noet
	" 자동 줄바꿈 안함
	"set nowrap
	set linebreak
	set showbreak=+++\
	" 들여쓰기 설정
	set autoindent
	set cindent
	" 스마트 셋팅
	set smartcase
	set smarttab
	set smartindent
	" magic 기능 사용
	set magic
	" 이동 동작시 줄의 시작으로 자동 이동
	set sol
	" 비쥬얼 모드 동작 설정
	set sel=exclusive
	" 괄호짝 찾기에서 <> 도 찾도록 추가
	set mps+=<:>
	" 검색어 강조
	set hls
	" 검색시 파일 끝에서 되돌리기 안함
	set nows
	" 스마트한 대소문자 구별 기능 사용
	set scs
	"대소문자 구분(구분 없이 할 때 i 옵션 또는 ignorecase)
	set noignorecase
	" 항상 status 라인을 표시
	set ls=2
	"파일 형식에 따른 신택스 하이라이팅 켜기
	sy enable
	"괄호 매치
	set showmatch
	"마우스 자동
	set mouse=a
	"클립보드 복사
	"set clipboard=unnamed "use OS clipboard
	set clipboard=unnamedplus "use OS clipboard
	" 키워드 입력시 점진적 검색
	set incsearch
	set spell
"-----------------------------------------------------------------------"
" User Key Setting
"-----------------------------------------------------------------------"
let mapleader = ","
" 새로운 파일을 열때 사용, 경로를 입력해야 한다. 
nmap <leader>n :e
" 가로로 새로운 윈도우를 열 때 사용, 파일 경로 입력 필요
nmap <leader>s :sp
" 세로로 새로운 윈도우를 열 때 사용, 파일 경로 입력 필요
nmap <leader>v :vsp
" 다음 버퍼로 이동
nnoremap <leader>z :bp<CR>
" 이전 버퍼로 이동
nnoremap <leader>x :bn<CR>
" 현재 버퍼를 닫고 이전 버퍼로 이동
nmap <leader>bz :bp <BAR> bd #<CR>
" 모든 버퍼와 각 버퍼 상태 출력
nmap <leader>bl :ls<CR>
"fzf excute
nmap <leader>f :FZF<cr>
"Rg excute
"Input Pattern
nmap <leader>r :RG<Space>
"Input cursor location
nmap <leader>R :RG <C-R>=expand("<cword>")<CR><CR>
" Key Setting - resize windows
nnoremap <silent> <Leader>= :exe "resize +3"<CR>
nnoremap <silent> <Leader>- :exe "resize -3"<CR>
nnoremap <silent> <Leader>] :exe "vertical resize +8"<CR>
nnoremap <silent> <Leader>[ :exe "vertical resize -8"<CR>
nnoremap <silent> <Leader>+ :exe "resize " . (winheight(0) * 3/2)<CR>
nnoremap <silent> <Leader>_ :exe "resize " . (winheight(0) * 2/3)<CR>
nnoremap <silent> <Leader>} :exe "vertical resize " . (winheight(0) * 3/2)<CR>
nnoremap <silent> <Leader>{ :exe "vertical resize " . (winheight(0) * 2/3)<CR>
nnoremap K kzz
nnoremap J jzz
nnoremap <Leader>h :noh<CR>
"-----------------------------------------------------------------------"
" User  환경설정
"-----------------------------------------------------------------------"
" F2 [], {} 괄호에 대한 폴딩 실행
nmap <F2> v]}zf
nmap <F3> :Git blame<cr>
" F4 누를 경우 컴파일(Makeile 있어야 함.)
nmap <F4> :w<cr> : make<cr> : ccl<cr>  cw<cr>
" F5 누를시 현재 라인 주석, 범위 설정 후 누르면 범위 주석
nmap <F5> :norm I//<cr>
" F6 누를시 주석 해제
nmap <F6> :norm ^xx<cr>
" F7 key = Tag List Toggle
nmap <F7> :TlistToggle<CR>
" F8 key = SrcExpl Toggle
nmap <F8> :SrcExplToggle<CR>
"nmap <F10> :let g:view_source = 0<CR>
nmap <F10> :!rm -rf cscope.files <CR> :!find . 
			\ \( -name '*.c' -o -name '*.cpp' -o -name '*.cc'
			\ -o -name '*.h' -o -name '*.s' -o -name '*.S' \) 
			\ -print > cscope.files <CR> :!cscope -i cscope.files <CR><CR>
" F12 tags 생성
nmap <F12> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q ./ <CR><CR>
"----------------------------------------------------------------------"
" AirLine
"----------------------------------------------------------------------"
set laststatus=2
let g:airline#extensions#tabline#enabled = 1 "버퍼 목록 켜기
let g:airline#extensions#tabline#left_sep = ' '
let g:airline#extensions#tabline#left_alt_sep = '|'
" 파일명만 출력
let g:airline#extensions#tabline#fnamemod = ':t'
let g:airline_highlighting_cache = 1
let g:airline_powerline_fonts = 1
let g:airline_theme= 'minimalist'
"let g:airline_section_y = ''
"let g:airline_section_warning= '' "마지막 status창 사용 안함
" 버퍼 목록 켜기
" 이 옵션은 버퍼를 수정한 직후 버퍼를 감춰지도록 한다.
" 이 방법으로 버퍼를 사용하려면 거의 필수다.
set hidden
"----------------------------------------------------------------------"
" gruvbox 설정
"----------------------------------------------------------------------"
set background=dark
let g:gruvbox_contrast_dark = 'soft'
"let g:gruvbox_contrast_light = 'soft'
"let g:gruvbox_transparent_bg = '1'
let g:gruvbox_italic = 1
"let g:gruvbox_underline=1
"let g:gruvbox_undercurl=1
"let g:gruvbox_termcolors=16
"let g:gruvbox_number_column='aqua'
"let g:gruvbox_sign_column='aqua'
"let g:gruvbox_color_column='aqua'
" Force to use underline for spell check results
augroup SpellUnderline
  autocmd!
  autocmd ColorScheme *
    \ highlight SpellBad
    \   cterm=Underline
    \   ctermfg=NONE
    \   ctermbg=NONE
    \   term=Reverse
    \   gui=Undercurl
    \   guisp=Red
  autocmd ColorScheme *
    \ highlight SpellCap
    \   cterm=Underline
    \   ctermfg=NONE
    \   ctermbg=NONE
    \   term=Reverse
    \   gui=Undercurl
    \   guisp=Red
  autocmd ColorScheme *
    \ highlight SpellLocal
    \   cterm=Underline
    \   ctermfg=NONE
    \   ctermbg=NONE
    \   term=Reverse
    \   gui=Undercurl
    \   guisp=Red
  autocmd ColorScheme *
    \ highlight SpellRare
    \   cterm=Underline
    \   ctermfg=NONE
    \   ctermbg=NONE
    \   term=Reverse
    \   gui=Undercurl
    \   guisp=Red
  augroup END
set termguicolors
colorscheme gruvbox
"----------------------------------------------------------------------"
" ctrlp.vim 설정(파일 탐색 속도 향상)
"----------------------------------------------------------------------"
set wildignore+=*/tmp/*,*.so,*.a,*.swp,*.zip,*.obj  " MacOSX/Linux
set wildignore+=*\\tmp\\*,*.swp,*.zip,*.exe  		" Windows
let g:ctrlp_custom_ignore = '\v[\/]\.(git|hg|svn)$'
let g:ctrlp_custom_ignore = {
  \ 'dir':  '\.git$\|public$\|log$\|tmp$\|vendor$',
  \ 'file': '\v\.(exe|so|dll|a)$',
  \ 'link': 'some_bad_symbolic_links'
\ }
let g:ctrlp_max_files = 10000
let g:ctrlp_max_depth = 30
let g:ctrlp_follow_symlinks = 1
"let g:ctrlp_user_command = ['.git', 'cd %s && git ls-files -co --exclude-standard']
"let g:ctrlp_use_readdir = 0
let g:ctrlp_root_markers = ['ctrlp-marker']
" <c-f>, <c-b> 모드 변환(MRU(Most Recently Used)내 검색, file 전체 검색, buffers내 검색)
" <c-d> path내 검색어가 포함되어 검색 또는 오직 파일내 검색어만 포함 검색 
" <c-r> 정규 표현식 모드 전환(검색어와 완전히 일치한 파일만 보여 줌)
" <c-j>, <c-k> 검색결과내 커서 위아래 이동
" <c-t>, <c-v>, <c-x> 파일을 새로운 tab으로 열거나 창을 분활하여 파일을 염.
" <c-n>, <n-p> 검색 history의 next/previous 문자열 선택
" <c-z>, <c-o> 검색된 결과물에 <c-z>로 마크를 하고 <c-o>로 오픈(멀티마크 가능) 
" <c-y> 검색입력어로 된 파일을 만든다. 파일 위치는 검색 폴더의 최상위 위치
" :help ctrlp-mappings 키 맵핑에 관한 설명
"-----------------------------------------------------------------------"
" Source Explorer 환경설정
"-----------------------------------------------------------------------"
nmap <F8> :SrcExplToggle<CR>		" F8 key = SrcExpl TOggle
let g:SrcExpl_winHeight = 12		" SrcExpl 윈도우 높이 지정
let g:SrcExpl_refreshTime = 100		" refreshing time = 100ms
let g:SrcExpl_jumpKey = "<ENTER>"		" 해당 definition으로 jump
let g:SrcExpl_gobackKey = "<SPACE>"		" back
let g:SrcExpl_pluginList = [
        \ "__Tag_List__",
        \ "_NERD_tree_",
        \ "Source_Explorer"
        \ ]
" // The color schemes used by Source Explorer. There are five color schemes
" // supported for now - Red, Cyan, Green, Yellow and Magenta. Source Explorer
let g:SrcExpl_colorSchemeList = [
        \ "Cyan",
    \ ]
" // Enable/Disable the local definition searching, and note that this is not
" // guaranteed to work, the Source Explorer doesn't check the syntax for now.
" // It only searches for a match with the keyword according to command 'gd'
let g:SrcExpl_searchLocalDef = 1 
" // Workaround for Vim bug @https://goo.gl/TLPK4K as any plugins using autocmd for
" // BufReadPre might have conflicts with Source Explorer. e.g. YCM, Syntastic etc.
let g:SrcExpl_nestedAutoCmd = 1
" // Do not let the Source Explorer update the tags file when opening
let g:SrcExpl_isUpdateTags = 0
" // Use 'Exuberant Ctags' with '--sort=foldcase -R .' or '-L cscope.files' to
" // create/update the tags file
let g:SrcExpl_updateTagsCmd = "ctags --sort=foldcase -R ."
" // Set "<F12>" key for updating the tags file artificially
let g:SrcExpl_updateTagsKey = "<F12>"
" // Set "<F3>" key for displaying the previous definition in the jump list
let g:SrcExpl_prevDefKey = "<S-J>"
" // Set "<F4>" key for displaying the next definition in the jump list
let g:SrcExpl_nextDefKey = "<S-K>"
"-----------------------------------------------------------------------"
" ultisnips&vim-snippets Trigger Configuration
"-----------------------------------------------------------------------"
" 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="<C-a>"
let g:UltiSnipsJumpForwardTrigger="<tab>"
let g:UltiSnipsJumpBackwardTrigger="<s-tab>"
" If you want :UltiSnipsEdit to split your window.
let g:UltiSnipsEditSplit="vertical"
" let g:UltiSnipsSnippetDirectories = ['~/.vim/UltiSnips']
"-----------------------------------------------------------------------"
" fzf layout
"-----------------------------------------------------------------------"
" An action can be a reference to a function that processes selected lines
function! s:build_quickfix_list(lines)
  call setqflist(map(copy(a:lines), '{ "filename": v:val, "lnum": 1 }'))
  copen
  cc
endfunction
let g:fzf_action = {
  \ 'ctrl-q': function('s:build_quickfix_list'),
  \ 'ctrl-t': 'tab split',
  \ 'ctrl-x': 'split',
  \ 'ctrl-v': 'vsplit' }
"let g:fzf_layout = { 'window': { 'width': 0.9, 'height': 0.9,'yoffset':0.5,'xoffset': 0.5 } }
" - down / up / left / right
"let g:fzf_layout = { 'left': '50%' }
let $FZF_DEFAULT_OPTS = '--layout=reverse --inline-info'
let $FZF_DEFAULT_COMMAND="rg --files --hidden --glob '!.git/**'"
" Customize fzf colors to match your color scheme
" - fzf#wrap translates this to a set of `--color` options
let g:fzf_colors =
\ { 'fg':      ['fg', 'Normal'],
  \ 'bg':      ['bg', 'Normal'],
  \ 'hl':      ['fg', 'Comment'],
  \ 'fg+':     ['fg', 'CursorLine', 'CursorColumn', 'Normal'],
  \ 'bg+':     ['bg', 'CursorLine', 'CursorColumn'],
  \ 'hl+':     ['fg', 'Statement'],
  \ 'info':    ['fg', 'PreProc'],
  \ 'border':  ['fg', 'Ignore'],
  \ 'prompt':  ['fg', 'Conditional'],
  \ 'pointer': ['fg', 'Exception'],
  \ 'marker':  ['fg', 'Keyword'],
  \ 'spinner': ['fg', 'Label'],
  \ 'header':  ['fg', 'Comment'] }
"Get Files
command! -bang -nargs=? -complete=dir Files
    \ call fzf#vim#files(<q-args>, fzf#vim#with_preview({'options': ['--layout=reverse', '--inline-info']}), <bang>0)
" Get text in files with Rg
" Make Ripgrep ONLY search file contents and not filenames
" Ripgrep advanced
function! RipgrepFzf(query, fullscreen)
  let command_fmt = "rg --column --line-number --no-heading --color=always --glob '!tags' --smart-case --case-sensitive %s || true"
  let initial_command = printf(command_fmt, shellescape(a:query))
  let reload_command = printf(command_fmt, '{q}')
  let spec = {'options': ['--phony', '--query', a:query, '--bind', 'change:reload:'.reload_command]}
  call fzf#vim#grep(initial_command, 1, fzf#vim#with_preview(spec), a:fullscreen)
endfunction
command! -nargs=* -bang RG call RipgrepFzf(<q-args>, <bang>0)
5. 현재까지의 설정이 적용된 vim 코드 뷰



반응형
    
    
    
  'Linux > VIM' 카테고리의 다른 글
| vim 코드 자동 완성 coc.nvim (0) | 2024.01.15 | 
|---|---|
| vim The NERD Tree (0) | 2023.04.25 | 
| vim rg 사용법(vim 사용 여러 파일들 내 문자열 검색) (0) | 2023.04.06 | 
| vim 파일 탐색 플러그인 fzf (0) | 2023.04.04 | 
| vim 괄호 자동으로 닫아주는 플러그인 (0) | 2023.03.19 | 
 
										
									 
										
									 
										
									 
										
									
댓글