사용자 도구

사이트 도구


vim:tips

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
vim:tips [2020/04/30 10:23]
kwon37xi
vim:tips [2021/05/13 08:39] (현재)
kwon37xi [커서 중앙 유지]
줄 136: 줄 136:
 ===== 명령행 문자열 replace ===== ===== 명령행 문자열 replace =====
   * command line / shell script 로 vim 명령을 실행하려면 ''-c'' 옵션 사용   * command line / shell script 로 vim 명령을 실행하려면 ''-c'' 옵션 사용
-  * ''%%--%%not-a-term'' 옵션을 주면 terminal 이 아닌 경우에도 문제 없이 실행되는 듯. [[:packer|Packer]] 등에서 사용시 옵션 필요.+  * ''%%--%%not-a-term'' 옵션을 주면 terminal 이 아닌 경우에도 문제 없이 실행되는 듯. [[devops:packer|Packer]] 등에서 사용시 옵션 필요.
 <code sh> <code sh>
 vi -c "%s/hello/world/g" -c "wq" test.txt vi -c "%s/hello/world/g" -c "wq" test.txt
줄 151: 줄 151:
 ===== 조건적 치환 ===== ===== 조건적 치환 =====
   * [[https://stackoverflow.com/questions/17337979/conditional-replace-in-vim|vi - Conditional replace in vim - Stack Overflow]]   * [[https://stackoverflow.com/questions/17337979/conditional-replace-in-vim|vi - Conditional replace in vim - Stack Overflow]]
-  * 아래 치환문은 ''%%"'%%'' 를 찾아서 ''"'' <-> ''%%'%%'' 상호 치환한다. +  * [[https://www.popit.kr/vim-%EC%B9%98%ED%99%98-%EA%BC%BC%EC%88%98/|VIM 치환 꼼수? | Popit]] 
-<code>+  * ''submatch(0)''은 검색결과의 전체를 의미함 
 +  * 아래 치환문은 ''%%"'%%'' 를 찾아서 ''"'' <-> ''%%'%%'' 상호 치환한다.<code>
 :s/["']/\=submatch(0) == '"' ? "'" : '"'/g :s/["']/\=submatch(0) == '"' ? "'" : '"'/g
 </code> </code>
 +  * 산술 연산<code>
 +:%s/[01]$/\=submatch(0) == '0' ? submatch(0) + 100 : submatch(0) * 10/g
 +</code>
 +
 +===== root 권한 파일 저장 =====
 +  * 일반 사용자로 root 권한 디렉토리의 파일을 편집하고 저장할 때 에러가 나면
 +  * '':w !sudo tee %'' 명령으로 강제 저장이 가능하다.
 +
 +===== 숫자/알파벳 증가시키기 =====
 +  * [[https://www.youtube.com/channel/UCa0tJguRNbU6I8OO3nUvXxQ|(1) Incrementing a Sequence | Vim 🔥 Tips and Tricks - YouTube]]
 +  * ''Ctrl+A'' 숫자/문자를 1씩 증가시킴
 +  * ''Ctrl+X'' 숫자/문자를 1씩 감소시킴
 +  * vertical block(''Ctrl+V 혹은 Ctrl+Q'') 상태에서 ''g'', ''Ctrl+A/X'' 누르면 세로 블럭의 숫자나 문자가 증가함
 +  * 알파벳도 증가시키기
 +<code sh>
 +:set nrformats+=alpha
 +</code>
 +
 +===== 커서 중앙 유지 =====
 +  * 화면상에서 커서 위치가 항상 화면 중앙에 오게 하는 방법
 +  * [[https://vim.fandom.com/wiki/Keep_your_cursor_centered_vertically_on_the_screen|Keep your cursor centered vertically on the screen | Vim Tips Wiki | Fandom]]
 +  * ''set scroloff=5'', ''set so=5 : 커서의 위 아래로 5줄씩 보이라는 의미. 기본값 0.
 +  * ''set so=999'' : 되도록 중앙에 위치하게 함.
 +  * ''<Leader>zz'' 누르면 커서 중앙 위치 toggle
 +<code vim>
 +nnoremap <Leader>zz :let &scrolloff=999-&scrolloff<CR>
 +</code>
 +  * 최종
 +
 +<code>
 +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>
 +</code>
 +
 +===== 참조 =====
 +  * [[http://zzapper.co.uk/vimtips.html|Best of VIM Tips, gVIM's Key Features zzapper]]
 +
  
vim/tips.1588209793.txt.gz · 마지막으로 수정됨: 2020/04/30 10:23 저자 kwon37xi