ViEditor 를 사용할 때 알아두면 유용하지만, 기존 문서나 초보자용 가이드 등에서 언급되고 있지 않은 내용들을 모아 두는 페이지
- 1 한 화일의 여러 곳을 동시에 편집할 때
- 2 folding
- 3 backup 화일을 한 곳에 몰아서 보관하기
- 4 Copy&Paste 할 때 들여쓰기 금지
- 5 VIM Setting for Python
- 6 현재 작업중인 파일을 HTML 로 보관하기
- 7 vim에서 make시에 에러가 나는 sub directory로 자동으로 이동하기
- 8 파일 브라우저 (네비게이션, 탐색기) 열기
- 9 cmdline을 활용한 컴파일 단축키 설정 (in Linux, bash shell)
- 10 VIM 7.x 에서 파일브라우져에서 파일 열리지 않는 문제
- 11 visual block 설정 안됨
1 한 화일의 여러 곳을 동시에 편집할 때
터미널 두 개를 띄워서 vi 를 쓸 수는 없다. 일관성 유지를 위해서 하나의 화일은 하나의 vi 에서만 write 할 수 있도록 하기 때문이다. 이런 경우
:new 현재편집중인화일이름으로 화일을 열면, 하나의 화일을 분할된 두 창에서 동시에 편집할 수 있다. 한쪽 창에서 수정한 내용은 다른쪽 창에도 실시간으로 반영된다. 힘들게 화일의 이곳 저곳을 왔다갔다하느라 애쓸 필요가 없다. new 명령은 화면을 분할해서 다른 화일을 동시에 편집할 수 있게 하는 명령인데, 현재 편집 중인 화일을 다시 열 수도 있다는 점을 이용한 것이다.
약간의 차이는 있지만, :sp 하면 현재 편집중인 파일을 다른 창에서 편집하게 됩니다. :new 의 설명을 보면 This behaves like a ":split" first, and then a ":e" command.
2 folding
- 원하는 구역을 v 로 visual block 을 잡는다. (% 를 사용하여 괄호의 양끝을 블럭으로 잡으면 편하겠다)
- zf 를 하면 해당 구역에 fold 가 만들어진다.
- :set fdc=숫자 을 하면 왼쪽에 fold 의 범위를 나타내는 컬럼이 '숫자'개 너비만큼 생긴다.
- fold 를 중첩해서 만들 수도 있다. 하지만 일부만 겹치게 만들 수는 없다.
- 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 프로그램의 경우는 자동으로 주석처리까지 해줌)
- manual - 수동
- (참고) 파일이 열릴때 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 할 때 들여쓰기 금지
출처: 29886
마우스로 붙여넣기를 할 때 autoindent 나 textwidth 등이 작동해 버려서 원하지 않는 들여쓰기가 되는 것을 막으려면:
:set paste한 후에 붙여넣기를 하고
:set nopaste를 하여 계속 작업하면 된다. 한 술 더 떠서,
:set pastetoggle=<Ins>로 설정하면, Ins 를 누를 때마다 paste 와 nopaste 상태가 전환된다. (명령 모드, 입력 모드 둘 다에서 사용 가능하다) 와우~
5 VIM Setting for Python
See Also VimEditor , (링크x)VimSettingForPython, (변경)http://wiki.zeropage.org/wiki.php/VimSettingForPython
6 현재 작업중인 파일을 HTML 로 보관하기
간단하게, :TOhtml 이렇게 입력해 주면 된다. 이 기능은 에디터에 기본적으로 포함되어 있는 2html 스크립트로 동작하며, syntax/2html.vim 에서 스크립트 소스를 볼 수 있다.
8 파일 브라우저 (네비게이션, 탐색기) 열기
기본적으로 Explore command가 있다. (E까지만 적어줘도 되고 Explore라고 전부 적어줘도 된다.)
:E[xplore]Variation으로서 다음과 같이 쓸 수도 있다. width가 25이고 수직선으로 구분된 explore 창이 뜬다.
:25Ve[xplore]다음과 같이 써도 비슷한 기능을 한다. 디렉토리 경로를 적어줄 경우에만 파일 네비게이션으로서 동작한다. (그렇지 않으면 단순한 text editor 창이 하나 더 생긴다.)
:25vs[plit] [원하는 경로]Explore 창에서 j,k 또는 상,하 화살표를 이용해 파일이나 디렉토리를 선택할 수 있다. 선택된 것들은 별도의 명령어를 통해 삭제하거나 실행하는 등의 작업을 수행할 수 있다.
- o 를 누르면 새 창에서 실행
- Enter를 누르면 현재 창에서 실행.
- 파일이 너무 많은 경우 /[ 검색어 ]를 이용해 검색, 해당 파일로 빠르게 이동할 수도 있다.
9 cmdline을 활용한 컴파일 단축키 설정 (in Linux, bash shell)
터미널에서 .vimrc파일(설정파일)을 열자.
$ vi ~/.vimrc다음 구문을 추가하고 저장하면, 'g++ 컴파일러로 현재 열려있는 파일을 컴파일한뒤 실행하는 명령'이 단축키 F5로 설정된다.
map <F5> :w<CR>:!g++ -Wall "%:p" -o "%:p:r:r:r"<CR>:!"%:p:r:r:r"<CR>
- map <F5> : F5키를 누르면 뒤에 따라오는 command(cmd)를 자동으로 실행해줌
- :w<CR> : 현재 파일을 저장
- :!g++ -Wall "%:p" -o "%:p:r"<CR>
- ! : cmdline에서 !을 사용하면 뒤따라오는 쉘 명령어, 프로그램들을 (쉘에서) 실행해준다.
- g++ -Wall [ 소스파일이름 ] -o [ 결과물이름 ] : g++ 사용법을 참조하기 바란다. (터미널에서 $ man g++을 입력하면 볼 수 있다.) 가령 -Wall은 컴파일 과정에서 생기는 waring을 모두 보여주는 옵션이다. 간~혹 g++이 설치되어있지 않다면 이 명령어는 아무 짝에도 쓸모가 없으니 주의.
- <CR> : cmdline에서 여러 줄의 cmd를 한 줄에 입력하려 하는 경우, 각각을 <CR>로 구분해 준다. <CR>은 Enter키를 나타낸다고 이해하면 편하다.
- "%:p" : %는 current file name. % 뒤에 :p를 붙이면 file name이 full path를 포함하여 표시된다. 양쪽에 붙은 ""는 file name이나 path에 space(띄어쓰기)가 포함되어있는 것도 인식할 수 있게 해준다.
- "%:p:r:r:r" : :p, :r, :t 등의 옵션은 연달아 붙여 쓸 수 있다. % 뒤에 :r이 붙으면 현재 파일명에서 가장 마지막 확장자를 제외한 앞부분만 인식하게 해준다. 가령 "%:p" = /home/me/abc.tar.gz인 경우, "%:p:r" = /home/me/abc.tar 이고, "%:p:r:r" = /home/me/abc이며, "%:p:r:r:r" = /home/me/abc이다. (:r을 많이 붙이면 확장자를 제외한 파일명을 얻을 수 있다.). 이를 통해 컴파일 결과물 파일 이름을, 원본 파일과 이름은 같되 확장자가 사라진 형태로 만들 수 있다. 가령 소스파일 이름이 /home/me/abc.cpp 이었으면 컴파일 결과 생성된 파일명은 /home/me/abc가 된다.
- !"%:p:r:r:r"<CR> : 컴파일을 수행하고 (제대로 오류 없이 시행되었는지 알 수는 없지만 일단) 결과물 파일(프로그램)을 실행해보도록 한 것이다.
10 VIM 7.x 에서 파일브라우져에서 파일 열리지 않는 문제
(에러메세지 : ***netrw*** local browsing directory and current directory are identical)
http://kldp.org/node/79586
http://kldp.org/node/79586
출처>
http://wiki.kldp.org/wiki.php/ViEditorTips