사용자 도구

사이트 도구


application:vim:tip

VIM 고급 활용팁

  • 같이 일하시는 최책임님을 위해서 활용팁을 적어보았습니다.
  • 윈도우는 빠삭하신데, 리눅스와 VIM를 첨 접하셔서 나름 자세하게 적어보았습니다.

메모장 내용 VI로 파일에 붙여넣기

  1. VI로 파일을 연다.
  2. 복사할 내용을 메모장이나 파일에서 복사한다.(<ctrl>+<c>)
    아래는 복사할 내용이다.
    SELECT MB.MCode, MB.MName, COUNT(DISTINCT ItemCode)
    FROM   TB_Member MB, TB_StudyPlan SP
    WHERE   MB.TCode = ? AND MB.ACode = ? AND SP.MCode = MB.MCode
        AND MB.MCode > 0 AND MB.IsActive = 1
        AND SP.StudyPlanYMD  Between ? AND ? ;
  3. VI에서 명령모드로 가기 위해서 <ESC>를 누른다.
  4. <i> 키를 눌러 입력모드에서, 마우스 오른쪽 버튼을 눌러 붙여넣기를 한다.
  5. 아래처럼 한줄씩 밀린다면 어떻게 할까?
    SELECT MB.MCode, MB.MName, COUNT(DISTINCT ItemCode)
        FROM   TB_Member MB, TB_StudyPlan SP
        WHERE   MB.TCode = ? AND MB.ACode = ? AND SP.MCode = MB.MCode
            AND MB.MCode > 0 AND MB.IsActive = 1
                AND SP.StudyPlanYMD  Between ? AND ? ;
  6. :set paste 명령을 통해 밀리지 않고 다시 붙여넣기를 한다.
     :set paste 
  7. 그럼 아래처럼 깔끔하게 붙여넣기를 할 수 있다.
    SELECT MB.MCode, MB.MName, COUNT(DISTINCT ItemCode)
    FROM   TB_Member MB, TB_StudyPlan SP
    WHERE   MB.TCode = ? AND MB.ACode = ? AND SP.MCode = MB.MCode
        AND MB.MCode > 0 AND MB.IsActive = 1
        AND SP.StudyPlanYMD  Between ? AND ? ;

VI 치환공식

  • VI에서 치환문법은 다음와 같다.
     :s/{변환전문자}/{변환된문자}/ 
  • aaa를 bbb로 치환해보자.
     :s/aaa/bbb/ 
  • 한줄에 치환해야 하는 문자가 여러개 있다면 뒤에 g 옵션을 준다.
     :s/{변환전문자}/{변환된문자}/g 
  • 해당라인의 모든 ccc를 ddd로 치환해보자.
     :s/ccc/ddd/g 

선택한 블록에 맨 앞에 글자 추가하기

  1. <shift>+<v>를 통하여 블록을 선택한다.
  2. <shift>+<:>를 누른다. 그럼 화면 하단에 아래처럼 보인다.
     :'<,'>_ 
  3. 위 상태에서 맨앞을 의미하는 <^>와 이를 치환할 문자(.append(“를 바꿀 명령을 수행한다.
    '<,'>s/^/.append(" /
  4. 만약탭을 넣고 싶다면 탭을 의미하는 <\t> 문자를 넣는다.
    '<,'>s/^/\t\t\t.append(" /

선택한 블록에 맨 뒤에 글자 추가하기

  1. <shift>+<v>를 통하여 블록을 선택한다.
  2. <shift>+<:>를 누른다. 그럼 화면 하단에 아래처럼 보인다.
     :'<,'>_ 
  3. 위 상태에서 맨앞을 의미하는 <$>와 이를 치환할 문자(”)를 바꿀 명령을 수행한다.
    '<,'>s/$/")/

필요없는 문자 제거하기

  1. 파일 안에 아래의 내용 중에서 SQL만 추출하고 싶을 경우를 생각해 보자.
                StringBuffer SQL = new StringBuffer()
                .append(" SELECT /* study/dao/readNoStudyMemberList */ MB.MCODE AS MCODE, MB.MNAME AS MNAME ")
                .append(" FROM TB_MEMBER MB LEFT JOIN TB_STUDYPLAN ST ")
                .append("   ON MB.MCODE = ST.MCODE AND ST.STUDYPLANYMD >= TO_CHAR(SYSDATE, 'YYYY-MM-DD') ")
                .append(" WHERE MB.TCODE = ? AND MB.ACODE = ? AND MB.ISACTIVE = 1 AND ST.MCODE IS NULL ");
  2. 블록(<ctrl>+<v>)으로 .append(“ 까지 선택하고 아래로 내린다.
  3. <d> 키를 눌러 선택된 모든 .append(“ 값을 제거한다.
  4. 다시 블록(<shift>+<v>)으로 SQL구문을 지정한다.
  5. ”) 단어를 공백으로 변환시킨다.
    '<,'>s/")//g
application/vim/tip.txt · 마지막으로 수정됨: 2008/01/30 01:49 저자 starlits