비가 새는 집

역시나 진부한 내용

그런데 알면서도 항상 그러하지 않는가..

열심히 살자

by 이난 | 2009/12/04 11:47 | 트랙백 | 덧글(0)

[vi강좌: 03] 문자열 검색

제목 : [vi강좌: 03] 문자열 검색
글쓴이: 이원영(javaservice) 1999/05/03 09:43:15 조회수:1875 줄수:97
 제  목:[vi강좌: 03] 문자열 검색                                     올린이:iyany   (최인환  )    99/01/05 00:56    읽음:455 관련자료 없음 -----------------------------------------------------------------------------[문자열 검색]vim에서 기본적인 검색 명령은 아래의 두가지 입니다.                / , ?/은 아래방향으로 문자열을 검색하고,?은 윗방향으로 문자열을 검색합니다./은 마지막에 검색했던 문자열을 아래방향으로 검색을 하고,?은 마지막에 검색했던 문자열을 윗방향으로 검색을 합니다.n은 마지막으로 수행했던 문자열 검색을 같은 방향으로 수행하고,N은 마지막으로 수행했던 문자열 검색을 다른 방향으로 수행합니다.<예제>------------------------------------------------------------------------------1: *README.dos for version 5.0u of Vim: Vi IMproved.2:3: This file explains the installation of Vim on MS-DOS and Windows systems.4: See "README" for information about Vim.첫번째줄의 *위치에서 /Vim을 수행하면 첫번째로 나타나는 Vim의 V위치로 커서가이동하고, 그곳에서 /를 입력하면 Vim on MS-DOS의 V로 커서가 이동합니다.그 위치에서 n을 입력하면 네번째 줄의 Vim.의 V로 커서가 이동합니다.이곳에서 다시 N을 입력하면 Vim on MS-DOS의 V로 커서가 이동하고,?을 입력하면 첫번째 줄의 Vim의 V로 커서가 이동합니다.------------------------------------------------------------------------------간혹 그런 생각을 하곤합니다. 어느 단어 위에 커서가 위치하는데, 그 단어를 검색해보고 싶다는...그런 경우에 사용되는 명령은 *,#,g*,g#입니다.------------------------------------------------------------------------------* : 커서의 단어와 완벽하게 일치하는 문자열을 아래방향으로 검색합니다.# : 커서의 단어와 완벽하게 일치하는 문자열을윗방향으로 검색합니다.g* : 커서의 단어와 일치하는 문자열을 아래방향으로 검색합니다.g# : 커서의 단어와 일치하는 문자열을 윗방향으로 검색합니다.------------------------------------------------------------------------------여기 까지는 명령의 설명이었고, 문자열 검색에서 빠질 수 없는 정규표현식에 관해??간단하게설명 하겠습니다.정규표현식은 문자열 검색시 또는 치환시에 자주 사용되는 것으로 문자열에 관한 규칙을나타냅니다.vi에서 자주 사용되는 것은 아래와 같습니다.------------------------------------------------------------------------------. : 한 글자를 의미합니다. (어떤 글자이든 상관치 않습니다.)^ : 행의 처음을 뜻합니다.$ : 행의 마지막을 의미합니다.\< : 단어의 처음을 의미합니다.\> : 단어의 마지막을 의미합니다.[a-z] : a부터 z까지의 임의의 문자[^a-z] : a부터 z까지의 문자를 제외한 문자\s : 공백\S : 공백을 제외한 모든 문자\e : 키\t : 키\r : 키\b : 키* : 이전 글자가 0개 이상 나오는 모든 문자열\+ : 이전 글자가 1개 이상 나오는 모든 문자열\= : 이전 글자가 0,1개 나오는 문자열------------------------------------------------------------------------------<예제>------------------------------------------------------------------------------1: *README.dos for version 5.0u of Vim: Vi IMproved.2:3: This file explains the installation of Vim on MS-DOS and Windows systems.4: See "README" for information about Vim.*의 위치에서 /e.s를 치면 version의 e로 커서가 움직이고, 다시 /e.s를 치면systems의 e로 커서가 움직이게 됩니다.*위치에서 \^RE를 하게되면 첫번째 줄의 README는 검색되지만, 네번째 줄의README는 검색이 안됩니다.

by 이난 | 2009/11/06 15:23 | 트랙백 | 덧글(0)

[vi강좌: 02] Text Object Motion

제목 : [vi강좌: 02] Text Object Motion
글쓴이: 이원영(javaservice) 1999/05/03 09:40:51 조회수:1176 줄수:140
 제  목:[vi강좌: 02] Text Object Motion                              올린이:fantasia(최인환  )    98/11/29 23:33    읽음:478 관련자료 없음 -----------------------------------------------------------------------------|Text Object Motion|이번 강좌에서는 단어 또는 문장에 따른 커서의 움직임에 대해서 설명하겠습니다.단어사이를 움직이는 키는 'w'입니다. 단어를 나누는 표시는 보통 공백이 사용되는데공백뿐만 아니라 '.'','':',';'등도 단어를 나누는 표시입니다.이런 표시로 구분되는 단어사이를 움직이는 키가 'w'이고, 공백만을 기준으로 움직이는 키는 'W'입니다.예를 들면,------------------------------------------------------------------------------README.dos for version 5.0u of Vim: Vi IMproved.This file explains the installation of Vim on MS-DOS and Windows systems.See "README" for information about Vim.1. Go to the directory where you want to put the Vim files.  Examples:        cd C:\        cd D:\editors2. Unpack the zip archive.  This will create a new directory, in which all the   Vim files are placed.  Examples:        pkunzip -d gvim50.zip        unzip vim50w32.zip3. Add the Vim directory to your path.  The simplest is to add a line to your   autoexec.bat.  Examples:       set path=%path%;C:\vim-5.0        set path=%path%;D:\editors\vim-5.0That's it!------------------------------------------------------------------------------위의 글에서 첫줄의 README의 'R'에 커서가 있을 경우 'w'를 누르면 커서는 dos 앞의 '.'로옮겨가고 'W'를 누르면 for의 'f'로 옮겨 갑니다.'w'키는 다음 단어의 첫 글자로 커서를 옮기게 합니다. 하지만, 빈번하게 다음 단어의 마지막단어로 커서를 옮기고자 하는 욕구(?)가 생깁니다. 이런 경우에는 'e'를 누르면 됩니다.------------------------------------------------------------------------------w : 단어 사이 이동 (forward 방향)W : 공백으로 구분되는 단어 사이 이동 (forward 방향)e : 단어의 마지막 글자로 이동. (forward 방향)E : 공백으로 구분되는 단어의 마지막 글자로 이동 (forward 방향)b : 단어 사이 이동 (backward 방향)B : 공백으로 구분되는 단어 사이 이동 (backward 방향)ge : 단어의 마지막 글자로 이동. (backward 방향)gE : 공백으로 구분되는 단어의 마지막 글자로 이동 (backward 방향)------------------------------------------------------------------------------그럼 이번에는 문장 사이의 커서 이동에 관해서 알아봅시다.------------------------------------------------------------------------------) : 문장사이 이동. 다음 문장의 첫번째 글자로 이동 (forward 방향)( : 문장사이 이동. 다음 문장의 첫번째 글자로 이동 (backward 방향)} : paragraph 사이 이동. 다음 paragraph의 첫번째 단어로 이동 (forward 방향){ : paragraph 사이 이동. 다음 paragraph의 첫번째 단어로 이동(backward 방향)------------------------------------------------------------------------------다음에 설명할 내용은 프로그래밍을 할 경우에 도움이 되는 커맨드 입니다.c 프로그램을 짜는 경우에 자주 하는 실수가 괄호 (, { 등을 제대로 못 닫거나#if과 #else #endif 등의 패어를 제대로 사용 못하거나, 주석을 제대로 못닫는경우의일입니다.괄호를 열었는데 안 닫았을 경우 닫히지 않은 '('로 움직이는 명령은 '[('입니다.------------------------------------------------------------------------------#include "run.h"void main(int argc,char *argv[]){        unsigned short int ch;        unsigned short int count=0;        unsigned short int one,two,thr,foR,fiv,six,sev,eig;        unsigned short int flag = ZERO; unsigned short int bit = HIGH;        unsigned short int outcount = 0;        if ( (fpin = fopen(argv[1],"rt")) == NULL) {                printf("File open error \n");                exit(-1);        }        while( ( ch = fgetc(fpin) ) != EOF){                one = ( ch & ONEB ) & ONEB ;                two = ( ( ch & TWOB) >> 1 ) & ONEB;                thr = ( ( ch & THRB) >> 2 ) & ONEB;                foR = ( ( ch & FORB) >> 3 ) & ONEB;                fiv = ( ( ch & FIVB) >> 4 ) & ONEB;                six = ( ( ch & SIXB) >> 5 ) & ONEB;                sev = ( ( ch & SEVB) >> 6 ) & ONEB;                eig = ( ( ch & EIGB) >> 7 ) & ONEB;                                                if ( eig ==flag )                        count++;                else {                        if ( bit == HIGH ) {                                outcount = count << 8;                                bit = LOW;                        }              else {                                outcount = outcount | count;                                printf("%d",outcount);                                outcount = 0;                                bit = HIGH ;          }                                count = 1;                                flag = !flag;                }------------------------------------------------------------------------------위와 같은 프로그램이 있는 경우에, int argc의 a에서 '[('을 치면 main(의 (로 커서가 움직이고'])'을 치면 argr[])의 )로 커서가 움직입니다.------------------------------------------------------------------------------[( : 닫히지 않은 (로 이동 (backward)]) : 닫히지 않은 ])로 이동 (forward)[{ : 닫히지 않은 {로 이동 (backward)]} : 닫히지 않은 }로 이동 (forward)[# : 닫히지 않은 #if 또는 #else로 이동 (backward)]# : 닫히지 않은 #else 또는 #endif로 이동 (forward)[* : 닫히지 않은 /*로 이동 (backward)]* : 닫히지 않은 */로 이동 (forward)-------------------------------------------------------------------------------지금까지 2회에 걸쳐서 커서의 움직임에 관해서 강좌를 했습니다.다음에는 pattern searching에 관해서 설명을 하도록 하겠습니다.

by 이난 | 2009/11/06 15:22 | 컴터 | 트랙백 | 덧글(0)

VI강좌(1)

우연히 예전에 내가 썼던 글을 퍼가서 게시판에 있는 거를 발견했다.

VI에디터에 관한건데 지금도 유용해서 다시 퍼온다.

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

제목 : [vi강좌: 01] 입력과 문자 단위 커서 이동
글쓴이: 이원영(javaservice) 1999/05/03 09:39:34 조회수:1658 줄수:176
 제  목:[vi강좌: 01] 입력과 문자 단위 커서 이동                      올린이:fantasia(최인환  )    98/11/24 00:28    읽음:599 관련자료 없음 -----------------------------------------------------------------------------vim (1)제가 vi를 쓰게 된것은 우습게도 windows 덕분 이었습니다.주로 유닉스를 쓰다가- X-windos가 아닌 더미 터미날이 었습니다.-제 PC를 갖게되어 windows95를 깔았는데, 상당히 귀찮더군요.키보드도 만지다가, 마우스 만지다가..짜증..그러다가 알게된게 alt-tab등 여러가지 hot-key였지요. 이렇게 해서 윈도우즈 자체의 불편함은 해소(?)했는데,vi만큼 제 게으름을 채워주는 에디터는 없더군요.그래서 다시 vi로 돌아오게 되었답니다.회사에서 선배가 vi에 관한 글을 써달라고 해서 짬짬이 적고 있는데,이곳에서 함께 올리도록 하겠습니다.그럼 강좌를 시작합니다.vi에 관해서 다룬 대부분의 책을 보면 insert mode(vi mode)와ex mode에 관해서 먼저 이야기를 하는데, 물론 이 개념이 vi에서상당히 중요하기는 하지만, 처음에는 그냥 생각없이 명령을 쓰는 것이더 좋을 듯해서 이것에 관한 설명은 뒤로 미룹니다.지금은 그냥 글자를 쳐 넣을 수 있는 상태와 커서를 옮기기위한 상태두가지를 생각하시기 바랍니다.커서를 움직이기 위한 상태를 만들기 위해서는 esc를 눌러야하고,글자를 처 넣기 위한 상태를 만들기 위해서는 'i'키를눌러야한다고생각하시기 바랍니다.에디터에서 가장 중요한 기능은 글을 쳐 넣는 방법입니다.vi에서 글을 넣기 위해서 사용하는 키는 아래와 같습니다.---------------------------------------------------------i : 현재 커서위치에 글을 삽입I : 현재커서가 위치한 줄의 맨 앞문자의 위치에 글을 삽입a : 현재 커서위치의 다음에 글을 삽입A : 현재 커서가 위치한 줄의 맨끝에 글을 삽입o : 현재 커서가 위치한 줄의 다음줄에 글을 삽입O : 현재 커서가 위치한 줄의 윗줄에 글을 삽입----------------------------------------------------------어느 에디터나 그렇듯이 글을 쳐 넣는것 외에 가장 필요한것은 커서의 이동 입니다.최근의 대부분의 vi clone들에서는 커서키를 사용하는 것을 허용(?)하지만 원래의 vi 커서 이동키는 hjkl입니다.------------------------h : 왼쪽으로 한칸 이동j : 아래로 한칸 이동k : 위로 한칸 이동l : 오른쪽으로 한칸 이동-------------------------그런데 긴 문장의 중간에 있을때 맨 앞으로 가야할 일이 있다면,과연 h를 한참 눌러서 가야하는가?윈도우즈의 에디터에서도한번에 갈 수 있는데, 게으른 사람을 위한에디터인 vi에서 없을리는 당연히 없겠죠..^^'0'을 누르면 맨 앞으로 가고, 만일 tab이나 white space가 있는 경우맨처음 나타나는 문자의 처음으로 가려면 '^'을 누르면 됩니다.그럼 당연히 한 줄의 맨 끝으로 가는 명령도 있겠죠, '$'를 누르면한 줄의 맨 끝으로 갑니다.----------------------------------------0 : 커서가 있는 줄의 맨 앞으로 이동^ : 커서가 있는 줄의 맨 처음 글자로 이동$ : 커서가 있는 줄의 맨 끝으로 이동----------------------------------------vi에서는 enter를 치기 전까지는 한 줄로 인식을 합니다.하지만, 엔터를 치기 전까지 많은 글을 쳐 넣는다면 화면에는 여러줄로보일 수도 있겠죠. 이런 경우 화면에 보이는 줄로 커서를 움직이려면 어떻게해야 할까요? 화면을 기준으로 명령을 쳐 넣으려면 'g'를 먼저 쳐야합니다.즉, 화면에서 보이는 줄의 맨 앞으로 커서를 움직이려면 'g0'을 치면 됩니다.예를 하나 들겠습니다.-------------------------1   abcdefghijklmnopqrstuvwxyz0123452   .........-------------------------위와 같은 글이 있다고 생각할 때 첫번째 줄은 많은 글을 쳐 넣어서vi에서는 한줄로 생각하는 줄이 화면상에서는 두 줄로 보이게 됩니다.커서가 0의 위치에 있을 때, '^'을 치면 어떻게 될까요?a의 위치로 가게 됩니다. 하지만 'g^'을 치게되면 0의 위치에서 o의 위치로가게 됩니다.-----------------------------------------------------------------------g0 : 화면에서 보이는 커서가 위치한 줄의 맨 앞으로 이동g^ : 화면에서 보이는 커서가 위치한 줄의 공백으로 제외한 첫 글자로 이동g$ : 화면에서 보이는 커서가 위치한 줄의 맨 끝으로 이동gk : 화면에서 보이는 커서가 위치한 줄에서 한줄 위로 이동gj : 화면에서 보이는 커서가 위치한 줄에서 한줄 밑으로 이동-----------------------------------------------------------------------'gh', 'gl'은 왜 없을까요??다른 에디터에서는 보기 힘든 기능-최소한 제가 써본 에디터에서는- 중에 vi에서 지원하는 기능은 원하는 줄 또는 원하는 컬럼으로 커서를 이동 시킬 수 있다는 것입니다.ex mode, 즉 ':'을 친 상태에서 번호는 치면 번호에 해당하는 줄로 커서가 이동합니다.숫자를 치고 '|'-pipe입니다.-을 입력하면 숫자에 해당하는 컬럼으로 커서가 이동합니다.----------------------------------:N : N에 해당하는 줄로 이동N| : N에 해당하는 컬럼으로 이동----------------------------------위에서 설명한 커서 이동 명령으로만으로 vi를 자유자재(?)로 사용할 수 있습니다.하지만, 위의 명령만으로 사용하다보면 또 불편함을 느끼게 됩니다.예를 들면 N번째 줄의 첫번째 문자로 이동하는 경우에는 :N^을 연속해서 쳐야 합니다.세번이나 줄을 쳐야하는 불편함을 해소하기위해 vi에서는 NG라는 명령을 지원합니다.이 명령이 설명하는 것은 N번줄의 첫번째 문자로 커서를 이동시키라는 뜻입니다.------------------------------------------------G : 마지막줄의 첫번째 문자로 이동gg : 첫번째 줄의 첫번째 문자로 이동NG or Ngg : N번째 줄의 첫번째 문자로 이동- : 현재 커서 위치의 윗줄의 첫번째 문자로 이동+ : 현재 커서 위치의 다음줄의 첫번째 문자로 이동-------------------------------------------------지금 까지는 문서의 내용과는 전혀 상관없이 커서를 이동하는 방법에 관해서 설명했습니다.이번에는 문서의 내용과 관련되서 커서를 움직이는 방법에 관해서 설명하겠습니다.------------------------------------------------------------------------------1. Go to the directory where you want to put the Vimfiles.  Examples:        cd C:\        cd D:\editors2. Unpack the zip archive.  This will create a new directory, in which all the   Vim files are placed.  Examples:        pkunzip -d gvim50.zip        unzip vim50w32.zip3. Add the Vim directory to your path.  The simplest is to add a line to your   autoexec.bat.  Examples:        set path=%path%;C:\vim-5.0        set path=%path%;D:\editors\vim-5.0That's it!------------------------------------------------------------------------------위와 같은 문서가 있을 때 '1' 글자에 커서가 위치했을 때 Examples의 'E'로 커서를 이동하기위해서 가장 쉬운 방법은 무엇일까요?현재 배운 방법에서는 $hhhhhhhh입니다. 하지만 vi에서는 이것도 불편해서 fE만 치면 가능하게기능을지원합니다. fE가 무엇일까요??f는 현재 커서 위치에서 오른쪽으로 처음 가 나오는 문자로 이동하라는 내용입니다.그럼 왼쪽으로 처음 나오는 문자로 이동하는 것은 무슨 명령일까요?'F'입니다.-------------------------------------------------------------------------------f : 현재 커서가 위치하는 곳에서 오른쪽으로 처음으로 이 나오는 곳으로 커서 이동F : 현재 커서가 위치하는 곳에서 왼쪽으로 처음으로 이 나오는 곳으로 커서 이동t : 현재 커서가 위치하는 곳에서 오른쪽으로 처음으로 이 나오는 곳의 바로 앞으로 커서 이동T : 현재 커서가 위치하는 곳에서 왼쪽으로 처음으로 이 나오는 곳의 바로 앞으로 커서 이동-------------------------------------------------------------------------------(*) vi에서의 상식vi에서 대부분의 명령은 숫자를 친후 명령을 치면 그 명령을 N번 반복합니다.예를 들면 위의 f을 Nf로 치면 가 N번째 나오는 곳으로 커서를 이동 합니다. Nl의 경우는 커서를 N번 오른쪽으로 이동 하겠죠.이상으로 첫번째 강좌를 마감합니다.첫 강좌에서는 단어의 삽입방법과 문자단위의 커서 이동에 관해서 설명했는데, 다음 강좌에서는 단어 단위의 커서 이동에 관해서 설명하겠습니다.

by 이난 | 2009/11/06 15:22 | 컴터 | 트랙백 | 덧글(0)

똑똑한 거북이


속아넘어가는 게 너무나도 단순해서 웃기지도 않는 이야기..

그런데 내가 지금 저런 상황은 아닐까?

by 이난 | 2009/11/06 08:59 | 잡념들 | 트랙백 | 덧글(0)

사이언스 키드의 생애

1994년에 -내가 대학 3학년 때- 그다지 인상 깊게 보지 않았던,

그리고, 4년 후 회사에 가서, 그 1년 후 다시 이 글을 보게 되었을 때

참으로 인상 깊었다.

많은 공돌이들이 인상 깊게 보아서인지 여기 저기 많이 옮겨져 있다. 그 중에 한 곳이

http://kldp.org/node/67733 이다.

그리고, 오늘 어쩌다 다시 이 글을 보게 되었고, 그 글에 딸린 많은 반응들...

난 이제 전적으로 이 글에 공감을 할 수 없게 된다.


왜? 자신의 인생에서 engineering-전문용어로는 미싱질;;;;-을 인생의 목적으로 여기는 것 처럼 느껴질까?

자신의 인생에서 짧게는 4년 길게는 11년을 배운 엔지니어링 또는 사이언스를, 자신의 인생의 목적에 맞게 사용할 수 있는 수단으로

여겨야 하는 게 아닐까?


엔지니어링이 반드시 지켜야할 절대 가치가 아닐 것이다. 이 것을 가지고 어떻게 좀 더 나은 삶을 살지,

후배들은 고민했으면 좋겠다.


by 이난 | 2008/06/16 23:18 | 잡념들 | 트랙백 | 덧글(0)

화물파업

화물연대 파업이 나에게 영향을 줄지는 생각도 못했는데,

영향이 생겼다.T_T

오늘 부터 2주간 세번에 걸쳐서 선적을 해야하는데, 화물연대 파업으로 인해서 육상운송이 불가능하단다.


파업을 나쁘게 보는 성향은 아닌데, 내 일과 연관이 생기니 살짝 갈등이 생긴다.;;;

by 이난 | 2008/06/13 18:18 | 잡념들 | 트랙백 | 덧글(0)

첫글

웬지 글이 쓰고 싶어 졌다.

그다지 잘 쓰는 글도 아니지만...

하나를 해결하면 왜 골치 아픈 일이 또 하나가 생기는지...


인생도 "문제의 개수는 동일하다"는 법칙이 적용되는건가...

by 이난 | 2008/06/12 16:10 | 트랙백 | 덧글(0)

◀ 이전 페이지          다음 페이지 ▶