목차

Vim Tips

현재 파일의 인코딩 변경

:e ++enc=인코딩

Undo/Redo

Script / command 실행

빈 줄 삭제하기

아무것도 없는 줄

:g/^$/d
혹은
:v/./d

공백이 있는 줄

:g/^\s*$/d
혹은
:v/\S/d

뒤따르는 공백을 삭제하고, 세 줄 이상의 빈 줄을 하나로 합친다

# 뒤따르는 공백 삭제
:%s/\s\+$//e

# 세 줄 이상의 빈 줄을 한 줄로 합친다.
:%s/\n\{3,}/\r\r/e

매칭되는 것을 제외한 다른 줄 삭제

# 패턴에 매칭되지 않는 다른 줄들 모두 삭제
:v/pattern/d

매칭되는 줄 삭제

:g/word/d

정확히 word 가 단어로써 존재하는 경우만 삭제하려면

:g/<word>/d

첫번째 단어 삭제

:%s/^\w\+\s\+//g

그 외 줄 삭제

여러 파일(버퍼)에 걸친 텍스트 치환(replace,substitute)

파일을 연 뒤에 모든 변경 취소하기

:edit!
# 혹은
:e!

find 명령으로 찾을 파일 일괄 열기

# find 결과로 나온 파일들을 모두다 Vim으로 연다.
vim $(find . -name 파일명)
 
# 혹은 find를 먼저 실행하고, 뒤이어 vim 명령을 실행해도 된다.
find . -name 파일명
vim $(!!)

bash - open vi with passed file name - Stack Overflow 참조.

저장시 끝에 있는 공백 자동 삭제

~/.vimrc에 다음을 추가한다. *.py*로 대체하면 모든 파일에 대해 적용되며, 원하는 확장자를 지정할 수 있다.

autocmd BufWritePre *.py :%s/\s\+$//e

UTF-8 BOM 제거

:set nobomb

Copy & Paste Ctrl-C, Ctrl-X, Ctrl-V

vmap <C-c> "+yi
vmap <C-x> "+c
vmap <C-v> c<ESC>"+p
imap <C-v> <C-r><C-o>+

Ctrl-V 는 insert 모드에서만 작동한다.

명령행 문자열 replace

vi -c "%s/hello/world/g" -c "wq" test.txt
 
#혹은
vi -c "%s/8080/9090/g | wq" test.txt

정렬후 중복 제거 sort / remove duplicates

:sort u

조건적 치환

root 권한 파일 저장

숫자/알파벳 증가시키기

:set nrformats+=alpha

커서 중앙 유지

nnoremap <Leader>zz :let &scrolloff=999-&scrolloff<CR>
set scrolloff=0 " 원하는 값으로 수정
if !exists('*VCenterCursor')
  augroup VCenterCursor
  au!
  au OptionSet *,*.*
    \ if and( expand("<amatch>")=='scrolloff' ,
    \         exists('#VCenterCursor#WinEnter,WinNew,VimResized') )|
    \   au! VCenterCursor WinEnter,WinNew,VimResized|
    \ endif
  augroup END
  function VCenterCursor()
    if !exists('#VCenterCursor#WinEnter,WinNew,VimResized')
      let s:default_scrolloff=&scrolloff
      let &scrolloff=winheight(win_getid())/2
      au VCenterCursor WinEnter,WinNew,VimResized *,*.*
        \ let &scrolloff=winheight(win_getid())/2
    else
      au! VCenterCursor WinEnter,WinNew,VimResized
      let &scrolloff=s:default_scrolloff
    endif
  endfunction
endif

nnoremap <leader>zz :call VCenterCursor()<CR>

참조