손에잡히는 vim (2/4) 인사이트출판사 http://blog.insightbook.co.kr 가메출판사 http://www.kame.co.kr 저자홈페이지 http://sunyzero.tistory.com 김선영 sunyzero@gmail(dot)com 버전 : 2014-10
Ch3. 옵션, 도움말, 에러처리 RTFM(Read The Fine Manual) - 인터넷격언
명령행모드 : 옵션설정 ~/.vimrc 파일에저장가능 (MS 윈도버전의경우 ~/_vimrc) :set name[=value].vimrc 에지정할때는 : 은필요없음 명령어 설명 :set 현재옵션설정을보여줌 :set all 모든옵션설정을보여줌 (default 옵션까지출력 ) :set [no]name :set name! :set name=value name에해당하는옵션을 on/off 함 ( 앞에 prefix를 no를지정하는경우가 off) name 옵션의 on, off를 toggle 함 name 옵션에 value의값을할당함
명령행모드 : 옵션설정 (con't) :set 으로현재설정된옵션확인
명령행모드 : 옵션설정 (con't) :set all 로현재모든옵션확인
명령행모드 : 옵션설정 (con't) :set nu 행번호를표시해주는옵션
명령행모드 : 옵션설정 (con't) 주로사용하는옵션 옵션 설명 ( 괄호안은 full name) nu ai cindent ts=value sw=value fencs=value fenc=value (number) 화면에행번호표시 (autoindent) 자동들여쓰기 C 언어스타일의들여쓰기 (tabstop) 화면에표시될탭크기를 value로지정 (shiftwidth) 자동블록이동시열의너비 (fileencodings) 지원할파일인코딩방식리스트 * 복수개지정시콤마로구분합니다 ( 공백없음 ) (fileencoding) 현재파일인코딩방식을지정
명령행모드 : 옵션설정 (con't).vimrc 예시 " 이것은주석문이다 :-) set ai cindent set ts=4 sw=4 set nu " euc-kr 로인코딩된파일을읽기위한설정 ( 뒤에파일인코딩에서다룸 ) set fencs=ucs-bom,utf-8,korea set fencs=ucs-bom,utf-8,euc-kr 로사용하는경우도있다. korea 는 *nix 계열에서는 euc-kr, 윈도우계열에서는 cp949 로바뀐다. set fencs=ucs-bom,korea,utf-8 로설정하면 euc-kr, cp949 의우선권이높아진다. 따라서새로운파일은 euc-kr 이나 cp949 로저장된다.
Tip! 파일별로옵션을오버라이딩하고싶을경우 /* vim: set ts=2 sw=2: */ #include <stdio.h> int main() { printf("hello world\n"); return 0; }
colorscheme color theme 를지원 option 이아니므로 set 접두어를쓰지않는다. <CTRL-D> 로탐색가능 colorscheme 의약어인 colo 까지만입력해도된다..vimrc 에등록해두면매번자동으로설정될수있다.
colorscheme : ex colorscheme 예 다양한컬러스키마를 볼수있다.
help vim 은 online help 를지원한다. <CTRL-D> 으로 탐색을한결과
help : prefix 도움말에사용되는접두어 모드 접두어 예 일반 없음 :help x 입력 i_ :help i_ctrl-n 명령행 : :help :w 비주얼 v_ :help v_u vim 실행인수 - :help -r 옵션 ' :help 'tabstop' 명령행모드특수키 c_ :help c_ctrl-b
help (con't) :help cindent tabstop 에서 ^] 를누르면...
help (con't) ^] Jump to the definition of the keyword under the cursor. ^T Jump to older entry in the tag stack. :tags Show the contents of the tag stack. The active entry is marked with a '>'. ^W^W move cursor to window below/right of the current one.
vim error 파일을중복해서오픈한경우
vim error (con't) vim crash 로 swapfile 이제거되지못한경우
Ch4. 문자열관련기능 머리가나쁘면손발이고생한다. - 중국속담
Formatting center, right, left width 를기준으로정렬을한다. width=80 의 center 결과 :center 50 의 실행결과
find 문자 1 개를검색 명령어 fc Fc 설명 문자 c 를전방검색 문자 c 를후방검색 ; 최근검색을재검색, 최근검색을반대방향으로재검색
find (con't)
일반모드 : 검색 명령어 /string : string을전방탐색함?string : string을후방탐색함 * : 현재커서에위치한단어를전방탐색함 # : 현재커서에위치한단어를후방탐색함 n : 다음탐색결과를찾아냄 ( 전방탐색의경우는전방으로, 후방탐색의경우는후방으로이동 ) N : n과반대방향으로다음탐색 % : 괄호의짝을찾아줌
일반모드 : 검색 (con't) case-sensitive searching \c 접두어를사용하거나 ignorecase option을켜거나... (option은뒤에서다룹니다.) /\cinter 대소문자를구별하지않고, inter 를검색한다. \C 는 \c 의반대기능 = ignorecase 가켜진경우에, case-sensitive searching 을가능
일반모드 : 검색 : REGEX
Tip! 검색후밝게표시된단어를해제하고싶을때 :nohl 일회성 highlightsearch 해제 :set nohls highlightsearch 옵션해제
교체 문자열교체 (substitue) 명령어 특수문자교체와파일형식 (fileformat) 명령어
substitue 교체 : sed 의기능이 import 된것 (sed 의문법과동일하다 ) :[range]s/< 찾는문자열 >/< 교체할문자열 >/< 옵션 > separator 로 slash(/) 가주로사용되지만다른문자를사용해도무방하다. ( 예 : 콤마 ) 명령어옵션 g i c e 설명 (global) 검색된문자열모두를교체 * g옵션생략시처음 1개만교체함 (ignore case) 대소문자무시 (confirm) 교체할때마다 Yes/No 확인교체과정중에러무시
substitute (con't) separator 의 escape /home/linuxer 를 /home/unixer 로교체하고자한다면? :%s//home/linuxer//home/unixer/g :%s/\/home\/linuxer/\/home\/unixer/g 정답이지만복잡하다! :%s,/home/linuxer,/home/unixer,g separator 를 comma 로바꾸면?
substitute : fileformat : DOS/UNIX 특수문자 ( 예 : NewLine) 의교체 형식 DOS/Windows UNIX 개행문자 CR+LF LF CR 의입력 : ^V^M CTRL-V 대신에 CTRL-Q 를사용해도된다.
substitute : fileformat : DOS/UNIX CR 을삭제하는 subst 명령 %S/^M//g %s/\r//g
Special Char : ASCII ASCII 를코드값으로입력하는경우 입력방법 <CTRL-V> ### <CTRL-V> o### <CTRL-V> x## 설명 ### 에 10진수를사용하여 ASCII 입력 ### 에 8진수를사용하여 ASCII 입력 ## 에 16진수를사용하여 ASCII 입력
Tip! 숫자증감 숫자위에서 CTRL-A, CTRL-X 를누르면숫자를즉시증감시킬수있다. 숫자관련편집을할때유용한기능이다. 이기능은진수법도인식하므로 0x1c (16 진수 ), 062 (8 진수 ) 도인식. CTRL-A : 1 증가 CTRL-X : 1 감소
substitute : REGEX 정규표현식으로교체 행의맨끝에 <BR> 을추가하려면? :%s/$/<br>/g
substitute : REGEX (con't) 정규표현식으로교체 email 주소를 HTML 앵커태그로교체하는방법 : 먼저 REGEX 부터만들자! 1: 성공 [a-za-z0-9.-]\+@ 2: 성공 [a-za-z0-9.-]\+@[a-za-z0-9.-]\+ 3: 실패 ([a-za-z0-9.-]\+@[a-za-z0-9.-]\+) 4: 성공 \([a-za-z0-9.-]\+@[a-za-z0-9.-]\+\)
substitute : REGEX (con't) 정규표현식으로교체 Back-reference 를사용하기위해 ( ) 를사용했는데... = 실패!! ( ) 소괄호는 vim 에서사용하는 meta char. 이므로 escape 가필요하다.
substitute : REGEX (con't) 완성된 REGEX 를바탕으로 Subst. cmd 완성
Practice 4.1 URL 을 HTML 앵커태그로변환하기위한정규표현식패턴은?