====== VIM 고급 활용팁 ====== * 같이 일하시는 최책임님을 위해서 활용팁을 적어보았습니다. * 윈도우는 빠삭하신데, 리눅스와 VIM를 첨 접하셔서 나름 자세하게 적어보았습니다. ===== 메모장 내용 VI로 파일에 붙여넣기 ===== - VI로 파일을 연다. - 복사할 내용을 메모장이나 파일에서 복사한다.(**+**) \\ 아래는 복사할 내용이다. 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에서 명령모드로 가기 위해서 를 누른다. - 키를 눌러 입력모드에서, 마우스 오른쪽 버튼을 눌러 붙여넣기를 한다. - 아래처럼 한줄씩 밀린다면 어떻게 할까? 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 ? ; - **:set paste** 명령을 통해 밀리지 않고 다시 붙여넣기를 한다. :set paste - 그럼 아래처럼 깔끔하게 붙여넣기를 할 수 있다. 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 ===== 선택한 블록에 맨 앞에 글자 추가하기 ===== - +를 통하여 블록을 선택한다. - +<:>를 누른다. 그럼 화면 하단에 아래처럼 보인다. :'<,'>_ - 위 상태에서 맨앞을 의미하는 <^>와 이를 치환할 문자(**.append("**를 바꿀 명령을 수행한다. '<,'>s/^/.append(" / - 만약탭을 넣고 싶다면 탭을 의미하는 **<\t>** 문자를 넣는다. '<,'>s/^/\t\t\t.append(" / ===== 선택한 블록에 맨 뒤에 글자 추가하기 ===== - +를 통하여 블록을 선택한다. - +<:>를 누른다. 그럼 화면 하단에 아래처럼 보인다. :'<,'>_ - 위 상태에서 맨앞을 의미하는 <$>와 이를 치환할 문자(**")**를 바꿀 명령을 수행한다. '<,'>s/$/")/ ===== 필요없는 문자 제거하기 ===== - 파일 안에 아래의 내용 중에서 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 "); - 블록(+)으로 ** .append("** 까지 선택하고 아래로 내린다. - 키를 눌러 선택된 모든 ** .append("** 값을 제거한다. - 다시 블록(+)으로 SQL구문을 지정한다. - **")** 단어를 공백으로 변환시킨다. '<,'>s/")//g