IT

[VI/VIM] vi의 유용한 10가지 팁

마이홈주의자 2022. 3. 11. 11:04
반응형

주) 아래에서 VI의 모드는 3가지 즉 Command mode는 [C]로
     Edit mode는 [E], ex line Command mode는 [Ex]로 쓴다.
주) 아래에서 모든 명령은 대/소문자를 구별한다.  

1. [C] 현재화면의 제일위로 커서를 이동 : h
       현재화면의 가운데로 커서를 이동 : m
       현재화면의 제일아래로 커서를 이동 : l
      * VI/VIM에 익숙해지고 싶다면 오른손을 절대로 화살표로 가져가지 말아야 한다.

2. 원하는 line으로 이동하고 싶다. n번째 line으로 이동하고자 할 경우
   [C]  nG
        G  문서의 제일 끝으로 이동

3. 줄의 맨 처음에 나오는 `select'만 검색하고 싶다면 다음과 같이 입력한다. 
   [C] /^select<Enter>
       참고 : '^'는 유닉스에서 사용되는 검색Character이다.
       예) % grep "^from" *.sql  ---> *.sql에서 라인의 첫칼럼에 from이 들어간 파일 찾기

4. 현재 줄의 앞쪽에 <tab>을 입력하고 싶다.(C,java program에서 유용)
   [C] >> 현재줄
       7>> 현재줄에서 7줄을 모두 앞에 <Tab>을 입력.

5. 프로그래밍중 괄호의 짝 맞추기 : {}, (), []
   [C] 찾고자하는 괄호에서 %(Shift + 5)를 누르면 나머지 괄호로 커서가 이동한다.

6. 문서에서 'SQL'가 들어 있는 행을 delete하고 싶다.
   [Ex] :g/SQL/d
                |
                +-------> 이곳에 ex 명령을 사용
        :g/BX/ s/Esc/ESC/g    BX가 있는줄만 찾아서 Esc 를 ESC 로 바꾸기.
        :g/SQL/ nu        'SQL'이 들어있는 라인의 번호와 라인을보여주기
     주의 : 이 global명령은 한번에 죄다 바꿔버리므로 주의할 필요가있다.
            /를 이용하여 찾은다음 cw등을 이용하여 변환한후 n.을 이용하여 반복한다.

7. simple 이라는 단어가 나올때까지 지우기
   [C] d/simple

8. 현재 편집하고 있는 sample1.c를 컴파일하기
   [Ex] :!cc -o sample1 %<Enter>        현재 파일명이 %로 대체됨
   [Ex] :!javac %<Enter>

9. 파일내의 모든 라인의 끝에있는 ^M을 지우기
   이것은 도스파일을 binary형태로 서버로 전송하였을 경우에 나타나는 현상이다.
   
   [Ex] :1,$ s/^M//g
        
        설명 : 1,$        ---> 1 line부터 끝($)까지, 한라인만 원한다면 해당라인을 쓴다(:199 s/
               s            ---> Search한다.
               /old/new/ ---> old을 new로 바꾼다.
               g            ---> global(?), 한라인에 해당하는 문자열이 두개이상 나올경우 모두 바꿔라
        주의 : ^M같은 특수문자(^가 포함되어있는)는 Ctrl-V + Ctrl-M으로 입력해야한다.(^K는 Ctrl-V + Ctrl-K)
         
10. 예를 들어 모든 라인의 시작위치에 printf( 를  넣고 싶다면 보통
   I ---> printf(입력 ---> ESC ---> J ---> . ---> J ---> . ---> J와.을 반복

   너무 귀찮다. 한번에 하고 싶다. 이럴땐 매크로를 이용한다.

   1) I ---> printf(입력 ---> ESC
   2) :map #2 j$.<Enter>  #2는 F2 Key 의미, j$.은 한줄아래로가서(j) 현재작업(insert)을 다시실행(.)
   3) F2를 누른채로 가만히 있으면 된다
   4) :unmap #2  매크로 해제
   
   위에서 예를 든 매크로는 아주 유용하게 쓰일수 있기 때문에 user의 home디렉토리에 .exrc파일로 저장해
   두면 아주 편리하다.

반응형