손에잡히는 vim (3/4) 인사이트출판사 http://blog.insightbook.co.kr 가메출판사 http://www.kame.co.kr 저자홈페이지 http://sunyzero.tistory.com 김선영 sunyzero@gmail(dot)com 버전 : 2014-10
Ch5. 파일관련기능 절반은전체보다낫다 - 헤시오도스
edit, find vim 에서다른파일을편집할려고할때 명령어 :e [filename] :e #[count] :find filename 설명 filename을편집모드로오픈한다. filename이생략되면현재파일을다시오픈한다. count번째파일을오픈한다. count가생략되면바로이전파일이다. filename에해당하는파일을검색하여오픈한다. 매칭결과가복수개이면에러메시지를출력한다. CTRL-^ 명령어단축키로서 ":e #" 과동일하다. * <CTRL-^> 은 CTRL 키와 6 번키를함께누르는것을의미한다. 일반적으로 CTRL 키와함께하는키는대문자키로표기하는것을원칙으로한다.
multiple buffers vim file1 file2 file3...
quit 종료와관련된기능 명령어 :q[!] :qa[!] :wq 설명현재창 (window) 를종료! 는강제종료 ( 저장하지않고종료할때유용함 ) (quit all) 모든창을종료복수개의창을열고있을때유용함저장하면서종료 :wqa 저장하면서종료하되모든창에대해서...
write, update 파일저장 명령어 :w [filename] :sav file 설명 filename이지정되면해당파일에쓰기를지정 ( 복사본 ) filename이생략되면현재파일에쓰기를지정사본을만든경우에는편집중인파일은원래파일로... (saveas) 현재파일을다른이름으로저장한다. 편집중인파일도새로저장된파일로교체된다. :up 변경된점이있는경우만 ":w" 명령어를실행한다. :x up + quit ( 일반모드에서는 ZZ)
write, update (con't) 파일저장의예 명령어 :10,50w history :.,+10w history :10,$w history 10~ 끝까지... :%w history 설명 10~50 번행을 history 라는파일로저장 현재행에서아래로 10 번행을 history 라는파일로저장 전체를 history 파일로저장, 즉 % 는있으나없으나결과가같음
Window split, vertical split
split : horizontal <CTRL-W> s / :sp [file] 수평분할된창
split : vertical <CTRL-W> v / :vs [file] 수직분할된창
split : cmd 창분할, 생성명령 명령어 :[#]sp [ 파일명 ] [#]CTRL-W s :[#]vs [ 파일명 ] [#]CTRL-W v :[#]new [#]CTRL-W n :[#]vnew [#]CTRL-W v 설명상하로창을분할. 파일명을생략하면현재파일을의미합니다. # 는분할창의크기 ( 생략시이전창의절반크기 ) 좌우로창을분할합니다. 상하로분할하고, 위쪽에새로운창을만듭니다. 좌우로창을분할하고, 왼쪽에새로운창을만듭니다. * vim 실행옵션 : -o, -O
split : cmd (con't) 창이동관련명령 명령어 CTRL-W CTRL-방향키 CTRL-W 방향키 CTRL-W CTRL-W CTRL-W w CTRL-W CTRL-P CTRL-W p 설명방향키에는 h, j, k, l이나화살표키를사용할수있다. 현재창에서오른쪽방향으로이동. 오른쪽끝창이면아래로내려간다. 바로이전에사용한창으로이동.
split : cmd (con't) 창크기관련명령 명령어 설명 CTRL-W = 모든창의크기를동일하게조절합니다. CTRL-W [#]+ # 크기만큼크기를키웁니다. # 을생략하면 1 을키웁니다. CTRL-W [#]- # 크기만큼크기를줄입니다. # 을생략하면 1 을줄입니다.
split : diff vimd -d file1 file2 do, dp 를이용해서 get, put 가능
tabpage vim 7.x
tabpage vs split-window 분할창의단점 분할할때마다원래창의크기가줄어든다. => 탭페이지기능이필요!! 파일을닫지않고도수정된상태로여러파일을열수있다.
tabpage cmd 탭열기 vim 실행옵션 : -p e.g.) vim -p file1 file2 file3... 명령어 :[#]tabe[dit] file 설명 # 번째탭에파일을엽니다. # 을생략되면현재탭뒤에생성됩니다. 번호는 0 번부터시작합니다. :[#]tabnew file # 번째위치에비어있는탭을만듭니다. :[#]tabc[lose] # 번째탭을닫습니다. # 을생략하면현재탭을닫습니다.
tabpage cmd (con't) 탭사이이동명령 (tabnext, tabprev) 은 key map 이편하다. key mapping 은뒤에서다룸. 명령어 :[#]tabn[ext] [#]gt [#]<CTRL-PageDown> :[#]tabp[revious] [#]gt [#]<CTRL-PageUp> :tabm[ove] [#] 설명다음탭으로이동하며, 일반모드의 gt와동일합니다. # 에숫자를지정하면탭번호가지정됩니다. 이전탭으로이동하며일반모드의 gt와동일합니다. # 에숫자를지정하면반복수가지정됩니다. # 번째탭으로현재탭을이동시킵니다. (0부터시작 ) # 이생략되면가장오른쪽으로이동시킵니다.
netrw vim 으로디렉터리열기 (browsing)
netrw (con't) <F1> : help
netrw (con't) 명령어 설명 <Enter> 파일을현재창에열어줍니다. i 파일표시방법변경 ( 한줄, 파일정보도함께, 와이드형식, 트리방식 ) s 정렬방식을바꿔줍니다. ( 이름순, 시간순, 크기순 ) o 커서위치의파일을수평분할된새창으로열어줍니다. v 커서위치의파일을수직분할된새창으로열어줍니다. p 커서위치의파일을미리보기창으로열어줍니다. ( 미리보기창닫기는 <CTRL-W> z 나 :pclose 를사용합니다.) t 새로운탭으로분할하여열어줍니다. - 상위디렉터리로이동합니다.
buffers vim buffer = file 왜버퍼라고부르는가? 아직저장전이면이름이없는 (anonymous) 공간이므로... :files 혹은 :buffers 현재버퍼목록을출력한다.
buffers : flags 파일번호에상태플래그 기호 의미 % 현재편집중인버퍼 # a 바로이전에열었던버퍼혹은다음에열도록예비된버퍼 <CTRL-^> 를누르면 # 이표시된파일이열립니다. 활성된버퍼 ( 현재화면에보이는버퍼 ) 창분할기능을쓰는경우에는여러파일에 a 표시가나타납니다. + 변경된부분이있는버퍼
filename under the cursor 커서아래의파일명을인식하여오픈하는기능 : gf ( 이동 ), CTRL-^ ( 이전파일로되돌아가기 ) 이기능은특히프로그래머에게유용하다. #.bashrc # Source global definitions if [ -f /etc/bashrc ]; then. /etc/bashrc fi export TERM=xterm-256color alias vi=vim? () { echo "$*" bc -l; } 파일명위에서 gf 명령
filename under the cursor (con't) C 언어라면 #include 구문의파일도인식한다. /* helloworld.c */ #include <stdio.h> int main() { printf("hello world\n"); return 0; } stdio.h 위에서 gf 명령
filename under the cursor (con't) 커서위파일열기명령어 명령어 설명 gf 커서위치의파일명을인식해서열어줍니다. <CTRL-W> f 커서위치의파일명을분할된창에열어줍니다. <CTRL-W> gf 커서위치의파일명을탭에열어줍니다. <CTRL-^> 이전파일로되돌아갑니다.
file encoding encoding(characterset)
fileencodings (fencs) set fencs=value e.g. fencs=ucs-bom,korea,utf-8 e.g. fencs=ucs-bom,iso-2022-jp,euc-kr,utf-8 BOM (Byte Order Mark) Unicode의판별마크 주로생략하나, 관습적으로옵션설정시앞부분에...
character set : list fenc, fencs 에사용가능한문자세트 encoding-values 도움말참조 인코딩형식 설명 utf-8, utf8 ucs-bom korea UTF-8 유니코드형식 BOM 마크에의한유니코드형식한글지원 ( 별칭 ) - 유닉스에서는 euc-kr, 윈도에서는 cp949로자동변환 euc-kr 한글지원 ( 유닉스에서만사용가능 ) cp949 한글지원 ( 유닉스, 윈도모두사용가능 ) japan latin1, ansi 일본어지원 ( 별칭 ) - 유닉스에서는 euc-jp, 윈도에서 cp932 로자동변환 영문 ASCII 형식
fenc 현재인코딩형식 fenc 를변경한뒤에저장하면다른문자세트로변환할수있다. 예를들어 :set fenc=korea 로변경후저장하면? 안녕하세요 Vim user. 이것은한글입니다. $ cat hangul.txt ȳ ϼ Vim user. Linux 는 UTF-8 이기본인코딩이므로 EUC-KR 로저장하면출력이실패한다. ѱ Դϴ.