Vi Editor Tip

2012. 10. 27. 18:43Programming/Linux


1 한 화일의 여러 곳을 동시에 편집할 때 

터미널 두 개를 띄워서 vi 를 쓸 수는 없다. 일관성 유지를 위해서 하나의 화일은 하나의 vi 에서만 write 할 수 있도록 하기 때문이다. 이런 경우
:new 현재편집중인화일이름 
으로 화일을 열면, 하나의 화일을 분할된 두 창에서 동시에 편집할 수 있다. 한쪽 창에서 수정한 내용은 다른쪽 창에도 실시간으로 반영된다. 힘들게 화일의 이곳 저곳을 왔다갔다하느라 애쓸 필요가 없다. new 명령은 화면을 분할해서 다른 화일을 동시에 편집할 수 있게 하는 명령인데, 현재 편집 중인 화일을 다시 열 수도 있다는 점을 이용한 것이다.
약간의 차이는 있지만, :sp 하면 현재 편집중인 파일을 다른 창에서 편집하게 됩니다. :new 의 설명을 보면 This behaves like a ":split" first, and then a ":e" command.
 
화면간 이동 : Ctrl + W,W (w 두번) 

2 folding 

  • 원하는 구역을 v 로 visual block 을 잡는다. (% 를 사용하여 괄호의 양끝을 블럭으로 잡으면 편하겠다)
    vi_folding_1.png
  • zf 를 하면 해당 구역에 fold 가 만들어진다.
    vi_folding_2.png
  • :set fdc=숫자 을 하면 왼쪽에 fold 의 범위를 나타내는 컬럼이 '숫자'개 너비만큼 생긴다.
    vi_folding_3.png
  • fold 를 중첩해서 만들 수도 있다. 하지만 일부만 겹치게 만들 수는 없다.
    vi_folding_4.png
  • fold 를 펼치는 것은
    • zo - 현재 커서가 위치한 곳의 가장 바깥쪽의 fold
    • zO - 현재 커서가 위치한 곳에 중첩된 모든 fold
    • zr - 전체적으로 제일 바깥쪽에 위치한 모든 fold
    • zR - 모든 fold
  • fold 를 접는 것은
    • zc - 현재 커서가 위치한 곳의 가장 안쪽의 fold
    • zC - 현재 커서가 위치한 곳에 중첩된 모든 fold
    • zm - 전체적으로 제일 안쪽에 위치한 모든 fold
    • zM - 모든 fold
  • za 는 fold 의 상태를 토글
  • zd 는 fold 를 제거
    • zE 는 모든 fold 를 제거
  • :set foldmethod=방법 으로 fold 를 생성하는 방법을 결정한다
    • manual - 수동
      • 사용자가 수동으로 fold 를 지정, 해제한다.
      • 화일 편집을 종료하면 fold 정보를 잃어버린다. 그게 싫으면 종료전에 :mkview 로 정보를 저장하고 새로 열 때 :loadview 로 불러올 것
    • indent - 들여쓰기
      • 들여쓰기 상태에 따라 자동으로 fold 가 설정된다.
    • marker - 표식
      • 사용자가 수동으로 fold 를 지정, 해제한다.
      • fold 가 생성될 때 범위의 양끝에 특정한 표식 ( { { { 와 } } } ) 을 추가한다. (C 프로그램의 경우는 자동으로 주석처리까지 해줌) 

  • (참고) 파일이 열릴때 vim 설정 유지하기
    • 주석문에 vim: 설정.... 형태로 기술한다
<?php /* vim: set expandtab tabstop=4 shiftwidth=4 foldmethod=marker: */ //탭스페이스는 4로 맞춰지고 // {{{ 여기는 폴딩되는구역 //여기는 열릴때 폴딩되어보입니다. // } }} ?> 


3 backup 화일을 한 곳에 몰아서 보관하기 

set backupdir=~/.vim/backup 
이미 존재하는 화일을 수정하여 저장할 때 생성되는 백업화일 (화일명 뒤에 ~가 붙는다) 이 지저분하므로, 이런 백업화일들을 지정한 디렉토리에 생성하도록 한다.

또한 backup 화일을 생성하고 싶지 않을 경우 ~/.vimrc 파일에 다음과 같이 한 줄 추가 수정하여 사용할 수 있다.
:set nobackup 


4 Copy&Paste 할 때 들여쓰기 금지 

출처: KLDPBBS:29886

마우스로 붙여넣기를 할 때 autoindent 나 textwidth 등이 작동해 버려서 원하지 않는 들여쓰기가 되는 것을 막으려면:
:set paste 
한 후에 붙여넣기를 하고
:set nopaste 
를 하여 계속 작업하면 된다. 한 술 더 떠서,
:set pastetoggle=<Ins> 
로 설정하면, Ins 를 누를 때마다 paste 와 nopaste 상태가 전환된다. (명령 모드, 입력 모드 둘 다에서 사용 가능하다) 와우~

5 VIM Setting for Python 


6 현재 작업중인 파일을 HTML 로 보관하기 

간단하게, :TOhtml 이렇게 입력해 주면 된다. 이 기능은 에디터에 기본적으로 포함되어 있는 2html 스크립트로 동작하며, syntax/2html.vim 에서 스크립트 소스를 볼 수 있다.

2html.png

'Programming > Linux' 카테고리의 다른 글

[Ubuntu] Youtube 동영상 Download툴 (youtube-dl)사용법  (0) 2020.01.23
Vi 명령어  (0) 2012.10.22