vim 멋지게 쓰기

Front-end/Tool | 2011/08/08 17:54 | zziuni

vim는 vi의 확장판쯤 된다. 이전에는 운영서버에 붙어서 작업할 때 간단한 작업을 위해 소스를 내려 받고 올리고 하는 작업이 귀찮아서, 혹은 여의치 않아서 vi를 잘했으면 좋겠다는 생각을 했었는데, 요즘은 이게 정말 물건이란 생각이 들어서 더 잘 다루고 싶은 생각이 든다. 얼마전 누가 신들린듯 vi로 라이브 코딩 하는걸 봐서는 아니다. ㅋ

쓸만한 기본 명령어

search

/keyword 라고 하면 현재 커서 위치 아래로 keyword란 문자를 검색 ?keyword 라고 하면 현재 커서 위치 위쪽으로 keyword란 문자를 검색. n, N 으로 다음, 이전 검색결과 이동 가능.

replace

:s/previousText/nextText/g previousText를 nextText로 몽땅 바꿔버림.

undo, redo

명령 모드에서 u 가 undo. ctrl+r 은 redo 이다.

폼나는 중급 명령어

더 잘 쓰기의 핵심은 대안이 없어서 쓰는 편집기가 아닌 메인 편집기로 쓰기 위해 알아야 할 것들이다

자동완성

ctrl + p 를 누르면 열린 파일중 입력 스트링과 시작이 같은 몰고이 뜬다. 메소드 인텔리전스 입력 대용으로 사용가능하다.

블럭 이동

{~~}로 블럭 으로 묶여있는 제어문은 [{}] 명령어로 블럭 시작과 끝을 이동할 수 있다. 블럭의 시작인 { 에서 ]}를 입력하면 블럭의 끝인 } 이동한다. 하지만 언어에 따라서 잘 안되기도 한다.

편집 중 나가기 (ctrl+z)

ctrl+z를 하면 :q나 :w류의 명령행을 실행하지 않고 컴멘트 라인으로 돌아 갈 수 있다. 장점은 편집중인 vi창을 닫은게 아니기 때문에 컴멘드 라인에서 볼일이 끝나고, fg라고 치면 언제든 다시 vim로 돌아온다. 윈도에서 alt+tab으로 탐색기 띄운 정도를 생각하면 된다.

창 나누기 (:split, :vs)

창은 가로혹은 세로로 원하는 만큼 나눌 수 있다. 세로 나누기는 :split 가로 나누기는 :vs 명령어를 쓴다. 명령어 뒤에 파일명을 적지 않으면 이미 열린 파일의 clone이 열리고 다른 파일을 열때는 :split ./readme.txt 라고 하면 된다. 파일명이 아닌 path를 적으면 파일을 고를 수 있는 ls 리스트가 뜬다. 분할된 창을 이동시에는 ctrl+ww 를, 분할창을 닫을 때는 :q를 사용한다.

탐색창 붙이기 (:20vs ./)

위의 :vs를 이용하면 UI 에디터 처럼 파일 탐색창이 붙은 에디터처럼 쓸 수 있다. :20vs ./ 라고 하면 좌측에 탐색창이 생긴다. vs앞의 숫자는 분할 창 폭을 말한다. 이렇게 열린 창에서 파일선택을 enter로 하면 해당 창에 열리지만 shift + p 로 열면 옆에 창에 열린다. (vim 7 이전버전은 shirf + o ) 같은 짓을 :split ./ 로도 할 수 있다.

Tab 기능 (:tabnew)

vim에서도 Tab으로 파일을 열 수 있다. 실행할떄 -p 옵션으로 vim -p file1, file2 로 열수 있고 빈 텝 10개로 실행하려면 vim -p 10 하면 된다. 실행중에는 :tabnew filename 으로 열 수 있다.

Tab관련 명령어

  • :tan 다음 탭으로 이동
  • :tabp 이전 탭으로 이동
  • :tabfirst 처음 탭으로 이동
  • :tablast 마지막 탭으로 이동
  • :tabs 열린 텝 목록

소스 접기 (folding)

fold라고 하며 vim 은 .vimrcfoldmethod를 설정하면 소스 접고 펴기가 된다. stackoverflow

set foldmethod=syntax
set foldlevelstart=1
let javaScript_fold=1         " JavaScript
let perl_fold=1               " Perl
let php_folding=1             " PHP
let r_syntax_folding=1        " R
let ruby_fold=1               " Ruby
let sh_fold_enabled=1         " sh
let vimsyn_folding='af'       " Vim script
let xml_syntax_folding=1      " XML

명령어 모드의 단축키 상세

  • zi - 접는기능 사용 토글
  • zv - 커서 줄 보기
  • zo - 부분 펴기
  • zc - 부분 접기
  • zM - 모두 접기
  • zR - 모두 펴기
  • zd - folding 영역 삭제

syntax로 fold가능한 언어 확인

/usr/share/vim/vim73/syntax/ 에서 해당 언어.vim 파일에 fold관련 정의가 있는지 확인. (/fold 로 검색)

2011/08/08 17:54 2011/08/08 17:54
TAG ,
Trackback address :: http://zziuni.pe.kr/zziuni/trackback/573

Comments List

Write a comment.

[로그인][오픈아이디란?]