Linux - editor - vim

Similar documents
Linux - editor - vim

untitled

메뉴얼41페이지-2

Linux - editor - vim

MySQL-.. 1

vi 사용법

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

4S 1차년도 평가 발표자료

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

Microsoft PowerPoint - chap01-C언어개요.pptx

Microsoft PowerPoint - u4.pptx

작성자 : 기술지원부 김 삼 수

사용설명서를 읽기 전에 안드로이드(Android)용 아이디스 모바일은 네트워크 연결을 통해 안드로이드 플랫폼 기반의 모바일 기기에서 장치 (DVR, NVR, 네트워크 비디오 서버, 네트워크 카메라) 에 접속하여 원격으로 영상을 감시할 수 있는 프로그램입니다. 장치의 사

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

사용설명서를 읽기 전에 ios용 아이디스 모바일은 네트워크 연결을 통해 ios 플랫폼 기반의 모바일 기기(iOS 버전 6.0 이상의 ipod Touch, iphone 또는 ipad)에서 장치(DVR, 네트워크 비디오 서버 및 네트워크 카메라)에 접속하여 원격으로 영상을

PowerPoint 프레젠테이션

Lab 4. 실습문제 (Circular singly linked list)_해답.hwp

지도상 유의점 m 학생들이 어려워하는 낱말이 있으므로 자세히 설명해주도록 한다. m 버튼을 무리하게 조작하면 고장이 날 위험이 있으므로 수업 시작 부분에서 주의를 준다. m 활동지를 보고 어려워하는 학생에게는 영상자료를 접속하도록 안내한다. 평가 평가 유형 자기 평가

IRISCard Anywhere 5

Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3

Office 365 사용자 가이드

슬라이드 1

ActFax 4.31 Local Privilege Escalation Exploit

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

PowerPoint 프레젠테이션

gyuha.com/doku/doku.php?id=vim:vim_%EB%AA%85%EB%A0%B9%EC

Microsoft PowerPoint - chap13-입출력라이브러리.pptx

문서의 제목 나눔고딕B, 54pt

PowerPoint 프레젠테이션

BMP 파일 처리

아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상

tiawPlot ac 사용방법

버퍼오버플로우-왕기초편 10. 메모리를 Hex dump 뜨기 앞서우리는버퍼오버플로우로인해리턴어드레스 (return address) 가변조될수있음을알았습니다. 이제곧리턴어드레스를원하는값으로변경하는실습을해볼것인데요, 그전에앞서, 메모리에저장된값들을살펴보는방법에대해배워보겠습

Microsoft PowerPoint - [2009] 02.pptx

Lab 3. 실습문제 (Single linked list)_해답.hwp

Microsoft Word - 3부A windows 환경 IVF + visual studio.doc

WS12. Security

Microsoft PowerPoint - chap12-고급기능.pptx

리눅스설치가이드 3. 3Rabbitz Book 을리눅스에서설치하기위한절차는다음과같습니다. 설치에대한예시는우분투서버 기준으로진행됩니다. 1. Java Development Kit (JDK) 또는 Java Runtime Environment (JRE) 를설치합니다. 2.

Computer Programming (2008 Fall)

Microsoft Word - windows server 2003 수동설치_non pro support_.doc

Keil Flexlm 라이선스 설명서

Abstract View of System Components

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

EndNote X2 초급 분당차병원도서실사서최근영 ( )

2002년 2학기 자료구조

PathEye 공식 블로그 다운로드 받으세요!! 지속적으로 업그래이드 됩니다. 여러분의 의견을 주시면 개발에 반영하겠 습니다.

슬라이드 1

제1장 Unix란 무엇인가?

강의 개요

Microsoft PowerPoint - gnu-w10-c-chap11

4. #include <stdio.h> #include <stdlib.h> int main() { functiona(); } void functiona() { printf("hihi\n"); } warning: conflicting types for functiona

PowerPoint 프레젠테이션

<4D F736F F F696E74202D20C1A632C0E520C7C1B7CEB1D7B7A5B0B3B9DFB0FAC1A4>

[로플랫]표준상품소개서_(1.042)

Lab 5. 실습문제 (Double linked list)-1_해답.hwp

Data Sync Manager(DSM) Example Guide Data Sync Manager (DSM) Example Guide DSM Copyright 2003 Ari System, Inc. All Rights reserved. Data Sync Manager

고급 프로그래밍 설계

목차 1. 시스템요구사항 암호및힌트설정 ( 윈도우 ) JetFlash Vault 시작하기 ( 윈도우 ) JetFlash Vault 옵션 ( 윈도우 )... 9 JetFlash Vault 설정... 9 JetFlash Vault

목차 BUG 문법에맞지않는질의문수행시, 에러메시지에질의문의일부만보여주는문제를수정합니다... 3 BUG ROUND, TRUNC 함수에서 DATE 포맷 IW 를추가지원합니다... 5 BUG ROLLUP/CUBE 절을포함하는질의는 SUBQUE

Chapter_06

컴파일러

System Recovery 사용자 매뉴얼

강의10

Microsoft PowerPoint 웹 연동 기술.pptx

1) 인증서만들기 ssl]# cat > // 설명 : 발급받은인증서 / 개인키파일을한파일로저장합니다. ( 저장방법 : cat [ 개인키

C 프로그래밊 개요

Microsoft PowerPoint - chap06-2pointer.ppt

PowerPoint 프레젠테이션

JAVA 플랫폼 개발 환경 구축 및 활용

199

snu.pdf

b

Microsoft Word - 1. ARM Assembly 실습_xp2.doc

°ø±â¾Ð±â±â

6. 설치가시작되는동안 USB 드라이버가자동으로로드됩니다. USB 드라이버가성공적으로로드되면 Setup is starting( 설치가시작되는중 )... 화면이표시됩니다. 7. 화면지침에따라 Windows 7 설치를완료합니다. 방법 2: 수정된 Windows 7 ISO

vi 사용법

Microsoft PowerPoint - chap-02.pptx

C++ Programming

C언어 및 실습 C Language and Practice

<C3CA3520B0FAC7D0B1B3BBE7BFEB202E687770>

1) 인증서만들기 ssl]# cat > // 설명 : 발급받은인증서 / 개인키파일을한파일로저장합니다. ( 저장방법 : cat [ 개인키

중간고사

ABC 11장

Chapter 1

1.2 자료형 (data type) 프로그램에서다루는값의형태로변수나함수를정의할때주로사용하며, 컴퓨터는선언된 자료형만큼의메모리를확보하여프로그래머에게제공한다 정수 (integer) 1) int(4 bytes) 연산범위 : (-2 31 ) ~ (2 31 /2)-

Microsoft Word - ijungbo1_13_02

SBR-100S User Manual

a.ps

Microsoft PowerPoint - chap-02.pptx

1. 리눅스시작하기 man page man 명령어 - 해당명령어에대한매뉴얼페이지를보여죾다. man useradd man f printf 2

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음

/chroot/lib/ /chroot/etc/

PowerPoint 프레젠테이션

Mango-IMX6Q mfgtool을 이용한 이미지 Write하기

PowerPoint 프레젠테이션

Microsoft PowerPoint - 1장 C 프로그래밍 시작하기 pptx

PowerPoint 프레젠테이션

Transcription:

손에잡히는 vim (4/4) 인사이트출판사 http://blog.insightbook.co.kr 가메출판사 http://www.kame.co.kr 저자홈페이지 http://sunyzero.tistory.com 김선영 sunyzero@gmail(dot)com 버전 : 2014-11-07

Ch6. 편리한편집기술 쓸만한것은이미다나왔다. - 괴테

word forward/backward 단어경계이동

word forward/backward (con't) 명령어 설명 0 0 번째열 ^ 공백이아닌실제내용이있는시작열 $ 마지막열 ( 행의끝 ) w e b 단어의시작위치혹은문장부호의경계를따라서이동 (words forward) w 와같으나, 단어의끝부분에위치합니다. (end of word) w 와비슷하나진행방향이역방향입니다. (words backward) W, E, B w, e, b 와비슷하지만단어가가진의미를따져서이동합니다. * ^ 와 $ 는정규표현식을생각해보면좀더쉽게이해할수있다.

block, paragraph 괄호, 문단, 블록단위이동 % 가장가까운괄호짝으로이동 ( 프로그래밍시유용한기능 ) (, ) 문장단위의시작위치, 끝위치로이동 {, } 문단단위의시작위치, 끝위치로이동 [[, ]] 블록단위의시작위치, 끝위치로이동

abbreviation 특정단어입력시대체입력하는기능 입력모드에서... " 내멜 " 을입력하면 sunyzero@gmail.com이입력되도록, "prjsrc" 를입력하면 /export/2/local/pjr2/mds/1.294/src가입력되도록, " 시간0" 을입력하면현재날짜와시간이입력되도록, " 시간1" 이라고입력하면로케일 (locale) 에맞는시간이입력되도록하고싶다면

abbreviation (con't) ab, ia 기능을이용 ia는 insert mode에서만작동하는기능 ca는 commandline mode에서만작동하는기능 ab 내멜 sunyzero@gmail.com ab Prjsrc /export/2/local/pjr2/mds/1.294/src ia 시간0 <C-R>=strftime("%Y.%m.%d-%H:%M:%S")<CR> ia tlrks0 <C-R>=strftime("%Y.%m.%d-%H:%M:%S")<CR> ia 시간1 <C-R>=strftime("%c")<CR> ia tlrks1 <C-R>=strftime("%c")<CR>

abbreviation (con't) ca 기능을이용하면한글상태오타를변환할수있다. ca ㅈ ca ㅈㅂ ca ㅂ ca ㅌ w wq q x 한글약어매크로사용시주의점.vimrc 파일의인코딩형식에주의!! 간혹.vimrc 파일이 EUC-KR 로되어있으면 UTF-8 문서편집시작동하지않을수있다.

abbreviation : cmds :ab [lhs] 명령어 설명 현재설정된모든약어목록을출력합니다. lhs 에약어를지정하면해당약어의정보만출력합니다. :ab {lhs} {rhs} 약어 lhs를 rhs로변환합니다. :unab {lhs} 약어 lhs를해제합니다. :abclear 설정된모든약어를해제합니다. :ia {lhs} {rhs} ab와기능은같지만입력모드에서만작동합니다. :ca {lhs} {rhs} ab와기능은같지만명령행모드에서만작동합니다.

register register = vim temp. storage

vim register vim 에서사용하는임시버퍼

vim register : list 레지스터이름 설명 "" 가장최근에복사, 삭제된데이터 "0 가장최근에복사 (yank) 된데이터 "1 ~ "9 가장최근에삭제된데이터 ( 시간순, 1 번이가장최근데이터 ) a~z 사용자지정레지스터

vim register : list (con't) 레지스터이름 설명 "- 가장최근에한라인이내로삭제한데이터 "/ 가장최근에검색한데이터 ": 가장최근에명령행모드에서내린명령어데이터 ( 읽기전용 ) ". 가장최근에입력한데이터 ( 읽기전용 ) 레지스터이름 설명 "% 현재편집중인파일명 ( 읽기전용 ) "# 이전에열었던파일명. <CTRL-^> 을누르면열게될파일. ( 읽기전용 )

register : cmd 레지스터명령어요약 명령어 설명 "{reg}y{motion} {reg} 레지스터에 {motion} 에해당하는부분을복사합니다. "{reg}p "{reg}p "{reg}d{motion} {reg} 레지스터의내용을현재커서뒷부분에넣습니다. ( 레지스터에개행문자가포함된경우는커서의아래행에넣습니다.) {reg} 레지스터의내용을현재커서의앞부분에넣습니다. ( 레지스터에개행문자가포함된경우는커서의윗행에넣습니다.) {reg} 레지스터에 {motion} 에해당하는부분을잘라넣습니다. * 참고 : vim에서삭제하는모든행위는잘라내기로작동합니다. CTRL-R{reg} 입력모드에서만사용하는명령으로 {reg} 레지스터를붙여넣습니다. * 참고 : "{reg} 를생략하면 "" 레지스터를가리킵니다.

Tip! vim register 는 vim 이종료하면? vim register 는.viminfo 파일에저장해두므로, 다음번실행할때도불러오게된다. 윈도용은 _viminfo 파일에기록된다.

Ch7. 자동화 반복은연구의어머니다 - 쇼펜하우어, 문장론

key map nmap < 단축키 > < 명령 > normal mode 에서만작동 imap < 단축키 > < 명령 > insert mode 에서만작동 map < 단축키 > < 명령 > e.g. nmap <F2> :up<cr> e.g. imap <F4> sunyzero@gmail.com

key map : list 명령어 설명 nmap key command 일반모드에서 key를누르면 command를실행합니다. imap key command 입력모드에서 key를누르면 command를실행합니다. vmap key command 비주얼모드에서 key를누르면 command를실행합니다. cmap key command 명령행모드에서 key를누르면 command를실행합니다.

map : example.vimrc 파일 "[ map ] nmap <F2> nmap <F3> nmap <F4> :up<cr> :tabnext<enter> :tabprev<enter>

autocmd 특정상황에서자동으로실행할명령 예를들어 *.c 파일을열때자동으로실행되어야하는명령 autocmd BufRead,BufNewFile *.txt colo evening autocmd BufRead,BufNewFile *.java colo morning set ts=2 sw=2 au SwapExists * let v:swapchoice = 'o' v:swapchoice 스왑파일이존재하는경우의선택 (o : readonly) v:swapchoice 에는 e, q 등등을넣을수있다.

vimrc 의예시 #2.vimrc 예시의발전된형태 " example : vim runtime configuration set ai cindent set ts=4 sw=4 " set nu set fencs=ucs-bom,utf-8,korea colorscheme desert nmap <F2> :w!<enter> nmap <F3> :e.<cr> 현재디렉토리를열어준다. 즉파일선택창이제공된다.

Recording q (recording) @ (execute)

Recording 매크로작업 : 반복작업을녹화후실행 매크로이름은 {register} 를의미한다. q{register} vim register 에작업을녹화 @{register} vim register에기록된작업을실행 @@ 는이전실행을 repeat register 는 a-z 를사용한다.

Practice clientlist.txt 와 clientmail.txt 를준비 1304, Yona Yahav, M, 42, MP1 1294, Kebin Robinson, M, 41, CP1 1601, Steven Choi, M, 34, CP3 1314, TW Yoon, F, 46, CP1 1315, Rina Suzuki, F, 36, MP1 1600, Robert Kim, M, 32, CP3 1297, Rarry Robinson, M, 38, CP2 1600, optiger22@ibn.com 1314, teawooy1@boggle.com 1315, rinzzang@yohoo.co.jp 1601, schoi74@idontcare.net 1304, yoyohave@vimvim.co.kr 1294, braverobb@bettervi.com 1297, rrjr4624@orakle.com

Practice (con't) 분할창으로열기 vim -o clientlist.txt clientmail.txt

Practice (con't) 녹화시작 : a 레지스터에녹화

Practice (con't) 고객번호복사

Practice (con't) clientmail.txt 에서고객번호검색

Practice (con't) 메일주소부분복사

Practice (con't) clientlist.txt 에복사한메일주소붙여넣기

Practice (con't) 녹화된매크로재생

순서Practice 명령어 (fin) 설명 0. qa a 레지스터에녹화를시작합니다. 1. ^ 행의맨앞으로이동합니다. 2. yiw 숫자부분을복사합니다. 3. CTRL-W CTRL-W clientemail.txt 파일로이동합니다. 4. / 검색기능을사용합니다. 5. CTRL-R " 최근에복사한레지스터를검색어로사용합니다. 6. <ENTER> 검색을시작합니다. 7. 2w 문장부호를 2 개를뛰어넘어메일주소부분으로이동합니다. 8. y$ 메일주소를복사합니다. 9. CTRL-W CTRL-W clientlist.txt 파일로돌아갑니다. 10. A 행의맨끝으로이동하면서입력모드로변경합니다. 11., 쉼표를입력합니다. 12. <ESC> 입력모드를종료합니다 ( 레지스터에는 ^[ 로표시됩니다 ). 13. p 앞에서복사한메일주소를붙여넣습니다. 14. q 녹화를종료합니다.

Practice #2 녹화된내용확인

Practice #2 (fin) clientlist.txt 파일을열고 : :%normal! ^^X ^^X : ^ + <CTRL-V><CTRL-X> 어떤일이발생하는가? 이번 5 씩감소시키려면?

Practice #3 녹화된내용의수정 다시녹화를하는것은비효율적이다. 예를들어 clientlist.txt 의매크로에서메일주소부분을 "..." 으로감싸달라고한다. 어떻게해야하는가? 변환전상태에서...

Practice #3 (con't) 녹화된내용을불러온다. ^[ : <ESC> p : put ( 붙여넣기 ) 변경전 : ^[p 변경후 : "^[pa"^[ 수정후행의맨앞에서 "ay$

Practice #3 (con't) 녹화된내용을수정한다.

Tip! 재생할작업이 1,000 개라면? 수동으로 @a 나 @@ 을천번눌러야하나? 두가지방법이존재한다. 반복수지정 1000@a 일반모드의명령을수행하는 :normal 명령을수행 :2,$normal! @a

Recording : cmd 레코딩관련명령어정리 명령어 설명 q{ 매크로이름 } 녹화를시작합니다. 매크로이름은 {a-za-z} 중선택해야합니다. @{ 매크로이름 } 매크로를실행합니다. 매크로이름은 {a-z} 중선택해야합니다. @@ 바로이전에실행된매크로를재실행합니다. :{range}norm! @{ 매크로이름 } {range} 에해당하는범위에매크로를실행한다.

Practice #4 현재디렉터리에있는모든 *.txt 파일에서 유닉스 라는단어를찾아서 리눅스 로바꾸는기능을녹화기능을이용해서완성해봅시다. 순서명령어설명 1. :n *.txt 현재디렉터리의 *.txt 파일을파일목록에등록합니다. 2. qb b 레지스터에녹화합니다. 3. 빈칸유닉스를리눅스로바꿉니다. ( 에러발생시무시합니다.) 4. 빈칸저장합니다. 5. 빈칸다음파일로이동합니다. 6. q 녹화를종료합니다. 7. 999@b b 레지스터를 999 번재생합니다. ( 현재디렉터리의 *.txt 파일이 999 개미만이라고가정합니다.)

Ch8. 프로그래머에게유용 한기능 추가요금없이난자네에게자연의역사에관한많은부분을가르쳐주겠네 - 루이스캐럴

re-indenting 들여쓰기를다시하기 들여쓰기가안되어있거나들여쓰기가밀린경우... 수동으로한땀한땀한다면얼마나걸릴까?

re-indenting (con't) ={motion} motion 에는이동관련키 gg, G, )), ]] 등등을사용할수있다. visualmode + = 비주얼모드로라인선택후 = 키를눌러도된다.

tab vs whitespace tab 문자의가변적인길이때문에공백 # 칸을대신사용 다양한플랫폼에서개발되는프로젝트의경우 일반적으로 tab 대신에공백 4칸을사용하는경우 : ".vimrc (vim runtime config.) set et ts=4 et : expandtab, 탭대신공백사용 ts : tabstop, 탭크기 expandtab 환경에서진짜탭문자를입력하려면 <CTRL-V><TAB> 혹은 <CTRL-V><CTRL-I> 를사용한다.

tab vs whitespace (con't) 기존에작성된탭문자를공백 4 칸으로전환하고싶다면? :set et ts=4 :ret ret (retab) 대신에 re-indenting 기능을사용하는편이좋다. 예제프로그램 int main(int argc, char *argv[]) { if (argc == 1) { printf("argc == 1\n"); } return 0; }

tab vs whitespace (con't) 반대로공백 4 칸을탭문자로변환하려면? :set noet ts=4 :ret!

insert-completion 자동완성기능 /* hellomonkey.c by sunyzero@gmail.com */ #include <stdio.h> #include <stdlib.h> int main() { } printf("hello. Mr. monkey\n"); return 0; mo 까지만입력한뒤에 <CTRL-N> 을누르면?

insert-completion (con't) vim 은 #include 구문도이해한다. <CTRL-N> : 단어완성을위해서현재문서와관련파일을전방탐색 <CTRL-P> : <CTRL-N> 과반대방향으로탐색 <CTRL-N> 으로 단어완성을한결과 = stdlib.h 를탐색한다. 자동완성탐색결과로 "2 개中첫번째 " 임을보여줌

insert-completion (con't) 자동완성기능 ( 특수문자가포함된경우라면?) /* hellomonkey.c by sunyzero@gmail.com */ #include <stdio.h> #include <stdlib.h> int main() { } printf("hello. Mr. monkey\n"); return 0; sunyzero@gmail.com 을검색하려면? suny<ctrl-n><ctrl-x><ctrl-n>...

insert-completion (con't) 사전기반검색, 파일명검색 <CTRL-X> <CTRL-N> 더하기낱말모드로작동하여추가검색을합니다. 원하는낱말이아닌경우에는 <CTRL-N> 을계속누르면됩니다. <CTRL-X> <CTRL-K> <CTRL-N> 사전검색모드로작동합니다. 파일명을몇글자타이핑후에 <CTRL-X><CTRL-F> 을누르면? 파일명검색을할수있다.( 파일명타이핑시오타방지 ) ~/.ba 까지만입력한상태에서파일명검색

Ch9. 플러그인 태양아래새로운것은없나니 - 솔로몬

vim plugin vim 의플러그인은 ~/.vim 디렉터리에넣어두면되는데... 최근에는 plugin 관리툴을사용한다. 예 ) Vundle Vundle 설치법 http://sunyzero.tistory.com/212

유용한플러그인 Vundle : http://sunyzero.tistory.com/212 플러그인을관리하는플러그인 Airline 상태바와화면을예쁘게꾸며주는플러그인 예전에사용되던 powerline 의업그레이드버전 AutoComplPop 자동완성창을띄워주는플러그인 : 프로그래밍시유용

단축키 #1 http://sunyzero.tistory.com/131

단축키 #2 http://sunyzero.tistory.com/131

Practice #4 : solution 현재디렉터리에있는모든 *.txt 파일에서 유닉스 라는단어를찾아서 리눅스 로바꾸는기능을녹화기능을이용해서완성해봅시다. 순서명령어설명 1. :n *.txt 현재디렉터리의 *.txt 파일을파일목록에등록합니다. 2. qb b 레지스터에녹화합니다. 3. :s/unix/linux/ge 유닉스를리눅스로바꿉니다. ( 에러발생시무시합니다.) 4. :w 저장합니다. 5. :n 다음파일로이동합니다. 6. q 녹화를종료합니다. 7. 999@b b 레지스터를 999 번재생합니다. ( 현재디렉터리의 *.txt 파일이 999 개미만이라고가정합니다.) 주의사항 : 유닉스란단어가하나도등장하지않는텍스트파일이있다면에러가발생하고, 매크로실행이즉시중단된다. 이를방지하기위해서교체명령어에에러를무시하도록 플래그를추가한것입니다.