2017년 11월 28일 화요일

Vim의 기능; 검색

시작하며....


제목을 보면 어떻게 보면 이상하다는 생각이 들어요.

다른 문서 편집기 보면 가장 간단한 것 중의 하나가 검색이지요.

다른 윈도우 프로그램은 기본 적으로 Ctrl+F를 누르면 검색이 되는데...

이걸 왜 지금에서야 하는지 이상하게 여길 수 있지요.

검색만을 주제로 할 만한 게 있는지도 의아해할 테지만...

Vim이 일반 프로그램과는 차이가 난다는 것을 아실테니까 더 알아야 하는 점들이 있겠지요~

바로 진행을 해보도록 하겠습니다.


기본 검색 명령어


Command-line을 진입하는 방법은 보통은 두 가지를 많이 이야기하죠.

하나는 명령어 실행이고 하나는 검색입니다.

명령어 실행은 ":"를 입력하고 필요한 명령어를 바로 입력한 후에 엔터를 입력하면 된다는 걸 모두 알고 계시죠.

그럼 검색은 뭐가 있을까요?

보통 두 가지를 이야기하는데 아래와 같습니다.


  • / : 다음(우측 아래) 방향으로 검색
  • ? : 이전(좌측 위쪽) 방향으로 검색


"/"나 "?"를 입력한 후에 단어를 입력하게 되면 단어에 대해 검색을 하게 됩니다.

그럼 검색한 내용에 대해 highlight가 설정 되어서 검색한 단어를 쉽게 볼 수 있어요.
(원치 않는다면 설정을 변경 할 수도 있습니다.)

그리고 아래의 명령어로 검색한 단어의 다음으로 이동하게 됩니다.

  • n : 검색한 정 방향으로 이동
  • N : 검색한 역 방향으로 이동


n, N이 그것인데요.

위에 설명한 거처럼 각각 정방향과 역방향으로 이동하게 됩니다.

즉, "/"로 검색을 했을 때 n을 누르면 우측 아래 방향으로 다음 단어를 찾게 되고 N은 반대 방향이겠죠.

하지만 "?"로 검색을 했을 때는 n을 누르면 정방향인 좌측 위쪽으로 다음 단어로 이동하게 돼요.

한번 해 보시면 어렵지 않을 거예요.

하지만 자꾸 헷갈린다 싶으면.. 그냥 "/"만 알고 계세요.

그럼 n은 오른쪽 아래 방향으로, N은 왼쪽 위 방향으로만 이동하니 이해하기는 어렵지 않게 되죠.

위에 처럼 방향을 이야기하면 자꾸 어려워지니 다음부터는 방향을 제어하는 명령어는 n과 N으로만 알고 있어 주세요.

그러면 오른쪽 아래으로만 검색하는 명령어를 알면 원하는 방향으로 검색을 할 수 있을테니까요.


커서 위의 단어 검색


타자 치는 걸 힘들어하시는 분들이 많을지 모르겠네요.

저는 타자가 빠른 편이 아니라 "/"를 누르고 찾고 싶은 글자를 치는 게 귀찮더라고요.

그리고 보통 글의 내용 중에 나오는 글자를 검색하는 경우가 많으니 커서 위의 글자를 바로 검색 해주는 명령어는 없을까요??

당연히 있지요..ㅎㅎ


  • * : 커서 위의 단어를 단어 단위로 검색
  • g* : 커서 위의 단어를 검색


검색하고 싶은 단어 위에서 위의 명령어로 검색해 보세요.

특별한 타자 없이 단어를 검색할 수 있어요.

두 명령어의 차이는 *는 단어 단위로 검색을 하고 g*는 단순히 해당 단어를 검색하게 되요.


대문자 소문자 무시


기본적으로 Vim은 검색할 때 대문자와 소문자를 구분해요.

그래서 Vim 이라는 글자를 검색하는 것과 vim 이라는 글자를 검색하는 결과가 달라지죠.

그렇지만 가끔 대소문자를 구분하지 않고 검색하고 싶을 때가 있지요.

그럴 때는 옵션을 변경하는 방법이 있는데...

사실 그건 굉장히 귀찮아요.

검색할 때마다 현재 상태가 무언지 모르니 매번 옵션 설정을 주어야 하니까요.

그냥 아래와 같이 하나만 알도록 해요.


  • /\c검색할단어


위 처럼 "/\c"를 앞에 넣고 검색할 단어를 입력하게 되면 대소문자를 무시하고 검색을 해 주죠.



그림 처럼 Vim과 vim이 한번에 검색 된 것을 볼 수 있지요.


이전에 검색 단어 찾기


검색을 하다 보면 이전에 검색했던 단어를 다시 찾아야 하는 경우가 있어요.

이럴 때 다시 검색한다고 타자을 치고 있으면 너무 힘들잖아요.

그럴 때 아래와 같은 명령어로 이전에 검색했던 단어를 찾을 수 있어요.


  • CTRL-P : 이전에 검색했던 단어 찾기
  • CTRL-N : CTRL-P로 이동한 역순으로 단어 찾기


위의 명령어는 Command-line에서도 사용할 수 있어요.

이전에 적었던 명령어를 다시 적지 않아도 되는거죠.^^


마치며....


검색 부분은 사실 다음 장에서도 다시 진행해야 할 거 같아요.

중요한 부분인 정규식 부분을 하지 않았거든요. ^^;;

그리고 검색이 나왔으니 검색과 한 쌍인 "바꾸기"도 설명을 하지 않기도 했고요.

오늘 퇴근이 늦어서 원하는 만큼 적지 못했지만, 다음 장에 마무리하도록 하겠습니다.

감사합니다.

2017년 11월 27일 월요일

Vim의 확장 기능; Key Mapping

시작하며....


오늘 주제를 정한 거는 Help였는데 정리가 잘되지 않아서 갑자기 주제를 바꾸게 되었어요.

Help는 조금 더 진행을 한 다음에 나와도 괜찮을 거 같다는 생각이 들었기 때문이죠.

Key Mapping도 굉장히 중요한 Vim의 능력 중의 하나예요.

그러니 같이 알아보아요!!


Windows에서의 Ctrl+F


지난 강좌에서 Ctrl+F의 명령어는 Page Down과 같다고 했지요.

하지만 윈도우에서 Ctrl+F를 눌렀을 때는 다른 프로그램처럼 찾기가 되는 걸 볼 수 있어요.



리눅스에서 동일하게 Ctrl+F를 눌렀다면 아마 Page Down이 되었을 거예요.

그런데 윈도우에서는 그렇지 않다니 이상하지요??

그 이유는 윈도우 vim의 설정 파일을 보시면 알 수 있어요.

"C:\Program Files (x86)\Vim\_vimrc"

위의 파일을 열면 아래와 같은 설정을 볼 수 있어요.



source는 해당 파일에서 실행 가능한 명령어를 읽어서 설정을 하는 거죠.

"$VIMRUNTIME/mswin.vim"의 위치는 아래와 같아요.

"C:\Program Files (x86)\Vim\vim80\mswin.vim" 

저 파일을 열어서 보면 아래와 같은 부분을 확인할 수 있어요.

if has("gui")
  " CTRL-F is the search dialog
  noremap <C-F> :promptfind<CR>
  inoremap <C-F> <C-\><C-O>:promptfind<CR>
  cnoremap <C-F> <C-\><C-C>:promptfind<CR>

  " CTRL-H is the replace dialog
  noremap <C-H> :promptrepl<CR>
  inoremap <C-H> <C-\><C-O>:promptrepl<CR>
  cnoremap <C-H> <C-\><C-C>:promptrepl<CR>
endif


if문에서 gui라는 Feature를 가졌느냐고 물어보네요.

가졌을 때 noremap, inoremap, cnoremap 라는 명령어가 수행된다라고 볼 수 있지요.

우선 저 명령어가 무엇인지 알아보기 전에 기본형을 알려 드릴게요.

map KEY 명령어_or_KEY

대충 저 정도가 형식으로 보면 되고요.

KEY명령어나 다른 Key로 Mapping 된다고 보시면 쉬울 거 같아요.

저 map 명령어는 크게 2가지로 구분할 수 있지죠.


  • map의 적용 모드 별
  • map의 용도 별


이 구분 방법으로 각각 자세하게 볼게요.


map의 적용 모드 별 구분


Vim의 가장 기초가 모드가 나누어져 있다는 거죠?

Mapping을 할 때에도 그때 그때 필요한 모드가 나누어져야 해요.

예를 들어 Normal 모드에서만 Mapping을 하고 싶을 때가 있을 텐데 Visual Mode 일 때도 Mapping이 되어 있으면 곤란하잖아요.

그래서 적용 모드 별로 map의 명령어가 조금씩 달라져요.


  • map : Normal, Visual, Select, Operator-pending
  • nmap : Normal
  • vmap : Visual and Select
  • xmap : Visual
  • smap : Select
  • omap : Operator-pending
  • map! : Insert and Command-line
  • imap : Insert
  • lmap : Insert, Command-line, Lang-Arg
  • cmap : Command-line


사실 막~ 외울 필요는 없어요.

:help map-overview

위의 명령어를 적으면 map에 대한 모드별 정보를 언제든 알 수 있어요.

그러니 help 명령어만 아시면 특별히 외울 필요 없다는 거죠.

그리고 map이라는 명령어를 기본으로 Prefix나 Postfix가 붙어 있는 형태이고 해당 문자들이 모드의 이름과 비슷한 점이 많아서 어렵지는 않을 거예요.


map의 용도 별 구분


용도 별로 아래와 같이 3가지로 나눌 수 있지요.


  • Key Mapping : map KEY 명령어_or_KEY, noremap KEY 명령어_or_KEY
  • Key Mapping 삭제 : unmap KEY, mapclear
  • Key Mapping 출력 : map, map KEY


위의 명령어는 가장 기본이 되는 명령어를 적은 거예요.

저 명령어에 모드별로 나누었을 때의 Prefix나 Postfix를 적어 주면 모든 map 명령어가 나오게 되지요.

물론 help 명령어로 찾아볼 수 있으니 무조건적인 암기보다는 help 사용법에 더 익숙해 지시는 게 좋을거 같아요.

사실 여기서 알아봐야 하는 건 map과 noremap의 차이가 더 중요한 거 같아요.


map과 noremap


map은 recursive mapping이고 noremap은 non-recursive mapping이라고 하네요.

recursive라는 의미가 순환인데 순환을 하면서 mapping이 된다는 의미로 보면 될 거 같아요.

map d y
map j d
noremap k d

위의 예를 가지고 이야기를 해 드릴게요.

처음 map을 보니 Key d를 Key y에 Mapping을 했어요.
( d -> y(복사) )

그러니 d를 눌렀을 때 y가 입력된 효과가 일어나게 되죠.

즉, 삭제하려고 했더니 복사가 되는 거죠.

그리고 두 번째 map을 보니 Key j가 Key d에 Mapping이 된다고 나오네요.
( j -> d )

그럼 여기까지 했을 때 Key j를 누르면 Mapping된 d의 본래 기능인 삭제가 될까요?

아니에요.

recursive라는 거처럼 d가 Mapping된 y까지 연결되어요.
( j -> d -> y(복사) )

그러니 j를 누르면 d가 불리고 d와 연결된 y가 최종적으로 불리게 되는 거죠.

하지만 noremap은 map과는 달라요.

recursive를 하지 않기 때문에 k를 눌렀을 때 Mapping된 d의 본래 기능인 삭제가 호출되는 거죠.
( k -> d(삭제) )

그러니 recursive를 하면 Mapping이 되지 않은 마지막까지 찾아가서 해당 명령어의 기능을 자신이 가지는 거라고 생각하면 될 거 같아요.

그럼 여기서 하나 질문...

위의 map 설정을 하고 아래와 같은 명령어를 입력하면 어떻게 될까요??

map y j

즉, y -> j -> d -> y 식이 되는 거겠죠??

일단 map 명령어는 문제없이 진행되는데 y, j, d 중의 하나의 명령어를 입력하면 아래와 같은 재귀맵핑 이라는 에러가 나올 거예요.



다시 Windows의 Ctrl+F


그럼 윈도우의 설정 파일에 적혀 있던 noremap, inoremap, cnoremap에 대해서 다시 볼까요???

<C-F>에 대해 적혀 있던 내용은 아래와 같아요.

noremap <C-F> :promptfind<CR>
inoremap <C-F> <C-\><C-O>:promptfind<CR>
cnoremap <C-F> <C-\><C-C>:promptfind<CR>

처음 명령어를 읽어 보면 Normal, Visual, Select, Operator-pending 상태에서 non-recursive로 Mapping을 하는데 Ctrl+F(<C-F>)는 :promptfind와 엔터(<CR>)이네요.

그러니 Ctrl+F를 눌러도 찾기가 나오는 거예요.

두 번째와 세 번째의 명령어는 각각 Insert Mode와 Command-line Mode에서의 Mapping이고요.

<C-\><C-O>는 Insert Mode에서 ESC를 누르면 커서가 한칸 앞으로 이동 하는 문제를 해결 한 후에 Command-line을 진입하기 위한 준비 작업입니다.

또한 <C-\><C-C>는 Command-line을 빠져 나가는 명령어 이고요.


Windows에서 Ctrl+F를 Page Down으로 사용하기


위의 내용이 길었지만 이걸 하는 방법에 대해서는 쉽게 알 수 있겠지요???

적용된 Mapping Rule을 삭제 하면 되요.

그건 unmap 명령어를 사용하면 되겠지요?

물론 Insert와 Command-line Mode에서도 모두 삭제 하도록 해야 하고요.

그럼 다음과 같은 명령어 셋이 나오겠지요??

unmap <C-F>
iunmap <C-F>
cunmap <C-F>


마치며....


실제로 예제를 든건 Ctrl+F에 Mapping된 명령어를 제거하는거 였지만...

그걸 위해 Mapping에 대한 전반적인 내용은 보았습니다.

사실 실전이 가장 중요한데...

이 Mapping은 나중에도 엄청 나오니까 그때 다시 보면서 연습을 하도록 할게요.

그럼 또 다음에 뵙겠습니다.

감사합니다.





수상한 흥신소 연극 관람




오늘은 오랜만에 연극을 보러 갔다 왔네요.^^

거진 5~6년 만인거 같아요.

연애 할 때는 극장도 자주 가고 했었는데 결혼 후에는 극장이나 연극은 잘 안가게 되더라고요.

그래도 기회가 생겨서 어머니를 모시고 다녀 왔는데..

좋은 연극을 잘 본거 같아요~

웃길 때는 웃겨주고 울릴 때는 울게 해주고..

이상하게 저는 엄마, 부인을 주제로 슬픈 이야기만 나오면 눈물이 나더라고요.

엄마도 와이프도 잘 봤다고 하니 왠지 뿌듯 하더라고요.ㅎㅎ

다음에는 어떤걸 또 볼지...^^

12월에도 재미있는거 찾아서 보러 가야겠어요~

모두 기회 되면 수상한 흥신소 보세요~


2017년 11월 24일 금요일

왕게임 - 카나자와 노부아키



시작하며....


두 번째 책부터 만화라니..ㅎㅎ

핑계라고 하면 핑계인데 이북이라는 걸 구입 했습니다.

7.8인치의 보위에 라이크 북을 샀지요.

6인치는 만화책 보기에는 너무 화면이 작다는 것을 알기 때문에 7.8인치를 구매했어요.

그리고 실제 만화책을 보기에는 어떤지 본 거입니다.

결코 주당 독서의 양을 채우려고 한 건 아니에요.^^;;;

아참.. 이 감상문에는 스포일러가 있습니다.


왕게임


왕게임이라는 말을 들으면 사실 대부분 남자들은 부끄부끄한 생각이 들지 않나요??

미팅 같은 곳에서 술을 마시면 하는 게임 중 하나지요.

게임 중 한 명이 왕이 되어 나머지 인원들에게 아무거나 시키는 거죠.

처음에는 간단한 벌칙이 나오지만, 후반부가 되면 야릇한 걸 하곤 하죠.

저도 별로 못 해 봐서 어디까지 가능한지는 잘 모릅니다!!! ㅎㅎ;;

어찌되었든 만화책에서의 제목처럼 이 역시 왕이 지시한 모든 명령을 지켜야 합니다.

당일 왕의 명령을 어기게 되면 큰 벌칙을 받게 됩니다.

그것이 죽음으로 이어지기까지 하죠.


잔인성, 선정성


일본 만화에서나 가능한 선정성과 잔인성 모두 가지고 있습니다.

초반에는 간단한 명령이었지만 왕의 명령은 점점 선정성으로 넘어가죠.

A양와 B군은 잠자리를 가져라.

하지만 A양은 이미 남자친구가 있고 A양의 남친은 B군에게 끔찍한 짓을 하게 되죠.

그렇게 명령이 나날이 내려질수록 반의 학생들은 하나씩 죽게 되는데...

그 죽는 장면이 굉장히 사실적으로 잔인하게 그려져요.

그런 점에 거부감을 가지신 분들에게는 추천하고 싶지 않네요.


왕은 누구인가??


책을 읽는 중에 가장 궁금한 것은 도대체 왕은 누구인가죠.

누군데 간단한 명령만으로 사람을 죽게 하는 건지...

책의 주인공들도 왕을 찾고 왕의 명령으로부터 자유로워지려고 하죠.

하지만 결말에 다가가면서 밝혀지는 왕에 대해서 많이 실망을 하신 거 같아요.

작가가 처음부터 왕에 대해 생각하고 글을 쓴 것인지는 모르겠지만...

저에게는 나쁘지는 않았어요.

어차피 읽다 보면 보이지 않는 존재일 것이라는 생각을 했을 텐데...

그 때 귀신 같은 영적 존재였어도 누군가는 반드시 실망감을 느꼈을 테니까요.
(음.. 어쩌면 영적인 존재 일 수 있겠네요..;;;)

왕을 찾기 위해 다가가는 방식 자체는 다른 일본 영화나 책에서의 방식과 큰 차이가 없었어요.

링이라는 영화에서도 자꾸 살인 사건이 나오니 귀신이 나온 근원을 찾으러 가고 원인을 해결하려고 하잖아요.

제 입장에서는 그 흐름이 거의 비슷했던 거 같아요.

네이버에 검색해 보니 여러 외전이 나왔는데 다른 책에서는 어떻게 다가갈지 궁금하네요.


마치며....


물론 왕의 정체를 알고 나서의 허탈감을 받은 분들도 많았을 텐데 그래도 신선한 소재였다고 생각해요.

만화적인 요소로 과장 되긴 했지만 고장 난 냉동칸에 갇힌 사람이 얼어 죽은 이야기처럼 마음만 먹으면 어느 정도는 가능하다고 볼 수 있지 않을까요?

최근의 광고에는 마음을 준다는 게 모두 준다거나 마음을 먹으면 무엇이든 할 수 있다고 하기도 하고요.

그렇게 끼어 맞춘다면 작가의 결론도 나쁘지 않았던 거 같았습니다.

지금도 열심히 읽고 있는 책이 있으니 다음 주에는 다른 책으로 찾아뵙겠습니다.

감사합니다.

Plantuml의 설치와 사용법

차례


시작하며….

지난 번에 UML과 UML을 그릴 수 있는 도구인 Plantuml에 대해 간단하게 알아보았지요.

이번에는 그 Plantuml를 어떻게 사용하는지에 대해 알아보는 시간을 가지려고 합니다.

그 전에 무얼 할 수 있는지에 대해서 조금 이야기한 다음에 하겠습니다.

Plantuml로 할 수 있는 것들

지난 번에도 말씀드렸듯 UML의 여러 Diagram을 을 그릴 수 있는 Tool이에요.

현재 그릴 수 있는 Diagram의 종류는 다음과 같아요.

  • Sequence Diagram
  • Usecase Diagram
  • Class Diagram
  • Activity Diagram
  • Component Diagram
  • State Diagram
  • Object Diagram
  • Deployment Diagram
  • Timing Diagram


이렇다고 홈페이지(http://plantuml.com)에 나와 있어요.

그 외에도 non-UML Diagram도 지원하고 있는데 그건 직접 확인해 보셔도 될 거 같아요.

현재도 새로운 기능이 계속 나오는 중이니 직접 확인하시는 게 더 편할 거 같아서요.

저런 용도로 사용된다고 알아 두고 그럼 이제 본격적으로 어떻게 해야 하는지를 알려 드릴게요.

설치는 사용법을 보고 알려드릴게요!!

Diagram 그리는 방법과 확인 방법

보통 UML을 그리는 Tool은 이것저것 복잡하지요.

아래 그림은 StarUML의 ScreenShot 중 일부입니다.

StarUML ScreenShot

출처 : https://sourceforge.net/projects/staruml/#screenshots


하지만 이것과 다르게 Plantuml을 그리기 위해서는 메모장과 Chrome 같은 웹 브라우저만 있으면 돼요.

그러니 우선 메모장 같은 프로그램을 실행해 주세요.
(우리는 이미 Vim에 대한 기본을 배웠으니.. Vim을 실행해 주면 좋겠지요??^^)

사실 초반에는 메모장도 필요가 없지만, 저장을 하고 싶은 분들이 있을 수 있으니 이렇게 진행하도록 하겠습니다.

@startuml
엄마 -> 아들 : 일어나()
엄마 <-- 아들 : 알았어()
@enduml

위처럼 적어 보시겠어요???

“엄마_아들_Sequence_Diagram.puml”로 저장을 하시고 크롬을 실행시켜 보세요.

https://www.planttext.com

위의 사이트를 들어가시면 아래와 같은 화면을 볼 수 있지요.

planttext

오른쪽에 메모장처럼 글을 적을 수 있는 부분이 있어요.

그 곳에 방금 적었던 내용을 복사해서 붙여 넣기 해 주세요.

그리고 하단의 Refresh 를 클릭하시면….

아래 처럼 그림이 나오는 것을 확인할 수 있어요.^^

planttext ex

PNG라고 적혀 있는 부분을 누르거나 이미지의 우클릭을 하면 Link를 얻을 수 있어요.

물론 이미지를 내려받을 수도 있고요.

그러면 필요한 곳에 업데이트하시면 되는 거고요.

어렵지 않지요???

PC의 설치 방법

사이트를 접속해서 사용하는 건 쉬운 방법이지만 혹시나 본인 PC에 직접 설정을 하고 싶으신 분들이 있을지 몰라서 사용법을 알려 드릴게요.

만약에 설치하기 싫다면 이 부분은 넘기시면 됩니다.

그리고 plantuml 사이트에 들어가면 모두 적혀 있는 내용이기도 합니다.

그것이 귀찮을 수 있으니 적어 드리는 거고요.

Graphviz 설치

Sequence Diagram이나 Activity Diagram은 필요가 없다지만 그 외의 Diagram을 그리기 위해서는 위의 툴이 반드시 필요하더라고요.

http://www.graphviz.org/Download.php

위에서 다운을 받아서 설치하시면 됩니다.

palntuml.jar 다운로드 및 설정

아래 링크를 통해 내려받을 수 있습니다.

http://sourceforge.net/projects/plantuml/files/plantuml.jar/download

위의 파일을 받아서 아무 폴더에 저장해 주세요.

저 같은 경우는 “C:\UserPrograms” 라는 폴더에 복사해 두었다고 가정할게요.

그리고 아래와 같이 Path에 대한 환경변수 설정을 해 주세요.
(점점 복잡해지네요…. 그러니 싫으신 분들은 패스하시면 돼요.ㅎㅎ)

경로 환경설정

그리고 아래와 같은 내용을 입력하여 bat 파일을 만들어서 같은 폴더(“C:\UserPrograms”)에 저장해주세요.

파일의 이름은 runPlantuml.bat가 좋겠네요.

java -jar C:\UserPrograms\plantuml.jar -gui .\

그리고 puml이 있는 폴더에 명령어 창에 runPlantuml.bat라고 입력세요.

runPlantuml.bat 실행

그러면 GUI 프로그램이 동작하면서 자동으로 png 파일이 생성되는 걸 확인하실 수 있을 거예요.

아래 그림처럼요.

png 파일 생성

이거 외에도 그림을 그리는 방법이 매우 많아요.

사이트 가면 확인이 가능한데…

우선 제가 봤을 때는 이렇게 하는 게 가장 편한 거 같아서 소개해 드립니다.

당연히 인터넷으로 접속해서 하는 게 가장 편하고요.

고급 사용

http://www.planttext.com을 통해 png 파일을 하나 만들어 봐요.

그리고 이미지 링크를 얻어 보겠습니다.

https://www.planttext.com/plantuml/img/SyfFKj2rKqZCoKnEjLB8ICt9oGS0

위와 같은 링크의 그림은 아래와 같아요.

그런데 저 링크의 뒷부분은 무엇일까요????(그림의 빨간색 상자 부분)

뒤 부분은 script가 압축된 형태라고 하네요.

그래서 저 뒷부분만 알고 있으면 원본 Script로 얻을 수 있다고 하네요.

만약에 글을 개시할 때 link 형태로 이미지를 넣어 두었어요.

그런데 나중에 이 부분이 잘못된 것을 알게 되었죠.

그럼 어떻게 수정을 할 수 있을까요????

위에 다 이야기는 했지만…

링크된 뒤쪽만 있으면 가능해요.^^

뒷 부분을 때서 아래의 링크 뒤에 넣어 보세요.

http://www.planttext.com/?text=SyfFKj2rKqZCoKnEjLB8ICt9oGS0

그럼 원본 글이 나오게 되지요.

그럼 언제 어디서든 링크 주소만 알면 해당 글을 수정해서 다시 링크를 걸 수 있겠지요.

마치며….

생각보다 쉽게 UML이 그려지는 것을 확인하셨죠??

그리고 인터넷만 되면 사용법은 더 쉽고요.

물론 다음에 배울 내용이지만 여러 종류의 Diagram이 존재하여서 각각의 Diagram을 그리는 문법에 대해 자꾸 잊게 되기도 해요.

하지만 사용법의 문서가 너무 잘 정리 되어 있으니 사용법에 대해서는 문서를 켜 놓고 문서를 작성하면 되니까 어렵지는 않을 거예요.

기본적인 사용법에 대해서는 저도 이야기 드릴게요.

다음에 또 뵙겠습니다.

감사합니다.

2017년 11월 23일 목요일

Vim의 확장 기능; 이동

시작하며....


Vim의 기본 이동은 이전 강좌에서 이야기를 드렸습니다.

그렇지만 이동이 단순히 상하 좌우 였으니 빠르게 이동하기에는 어려웠을 거예요.

위로 5칸을 이동 하기 위해서는 k를 5번이나 눌러야 했으니까요.

이번에는 조금더 빠르게 이동하기 위한 추가 명령어를 배워 보도록 하겠습니다.


단어(word, WORD) 이동


단어 단위로 이동하는 방법을 가장 먼저 알려 드릴게요.

명령어 자체는 어렵지 않습니다.

그런데 여기서 알아야 하는 게 word와 WORD라는 개념이 있어요.

단순히 적혀 있는 내용만 보면...

대문자와 소문자로 같은 의미이긴 하지만 Vim에서는 다른 의미로 사용 된다는 거죠.


  • WORD : White space(스페이스바, 탭, 엔터)로 나누어진 모든 글자들의 모임
  • word : White space로 나누어진 글자, 숫자와 underscores 또는모든 글자들의 모임


음... 영어의 내용을 번역하려니 어렵네요.ㅎㅎ

그냥 예제로 진행할게요.

ex) vim에서 word/WORD는 다른 의미입니다. 
위의 문장을 WORD와 word로 나눠지면 다음과 같아요. 
  • WORD : vim에서, word/WORD는, 다른, 의미입니다.
  • word : vim, 에서, word, /, WORD, 는, 다른, 의미입니다, .

위 처럼 WORD는 스페이스바나 tab, 엔터로 나뉜 덩어리를 말하는 거예요.

쉽게 나눌 수 있지요.

하지만 word는 WORD에서 같은 분류 끼리 또 나뉘죠.

글자는 같은 글자끼리, 숫자는 숫자끼리, 도형은 도형끼리요.

뭔가 많이 어렵지요.;;;

그럼 그냥 WORD만 알고 계세요. ㅎㅎ

그러다가 더 알고 싶다면 word에 대해 알아 가면 되지요.

그럼 이런 word/WORD의 이동에 대한 명령어를 보겠습니다.


  • w : 다음 word의 맨 앞으로 이동
  • W : 다음 WORD의 맨 앞으로 이동
  • e : 다음 word의 맨 뒤로 이동
  • E : 다음 WORD의 맨 뒤로 이동
  • b : 이전 word의 맨 앞으로 이동
  • B : 이전 WORD의 맨 앞으로 이동
  • ge : 이전 word의 맨 뒤로 이동
  • gE : 이전 WORD의 맨 뒤로 이동


단어 이동의 명령어는 위에 8가지가 모두입니다.

처음 부터 8개를 모두 알고 사용하기는 어려운 거 같아요.

그래서 저도 대부분 사용하는 명령어는 w, b 정도가 되더라고요.

언제나 이야기했듯..

우선은 편하게 사용하다가 조금 더 활용이 필요하면 그 때 알아 가도 돼요. ^^


문장, 문단의 이동


사실 저도 이 명령어는 자주 사용하는 편은 아니에요.

문서 편집으로 사용하기보다는 프로그램할 때 사용하니까 그런 거 같아요.

그래도 알면 혹시나 사용하시는 분들이 있을지 몰라서 적도록 하겠습니다.


  • ( : 문장의 맨 앞으로 이동
  • ) : 문장의 맨 뒤로 이동
  • { : 문단의 맨 앞으로 이동
  • } : 문단의 맨 뒤로 이동


어렵지는 않지요??


라인에서의 이동


한 라인에서 맨 뒤로, 맨 앞으로 이동하는 방법입니다.


  • ^ : 라인의 맨 앞으로 이동
  • $ : 라인의 맨 뒤로 이동


간단하니 후룩~ 지나갈게요.

다음에 매크로 할 때 다시 한번 나오기도 하고요.^^


라인의 이동



  • gg : 첫 줄로 이동
  • G : 마지막 줄로 이동
  • (숫자)gg 또는 (숫자)G: 입력한 숫자의 줄로 이동


gg와 G는 간단하지요??

문서의 첫 줄, 마지막 줄로 이동하는 명령어에요.

세번 째에 말한 숫자는 말 그대로 숫자를 입력 하는 거예요.

100이면 100이라고 키보드라고 입력한 후에 gg 또는 G를 입력 하는거죠.

그럼 100줄로 이동을 해요.

goto의 약자 인거 같아요.


Scroll UP/DOWN


보통 키보드에는 Pg UP, Pg Down 이라는 키보드가 있어요.

말 그대로 하나의 Page를 올라 가거나 내려 가는 거죠.

그런데 Vim에서는 오른손이 최대 엔터까지만 가야 편함을 느끼게 되요.

해당 키를 누른다고 많이 움직인다면 Vim을 사용하는 이유가 없어지게 되지요.

그리고 당연히 그에 해당되는 명령어가 있고요.^^


  • CTRL + f : Page Down과 동일
  • CTRL + b : Page Up과 동일
  • CTRL + d : Scroll을 반만 내림
  • CTRL + u : Scroll을 반만 올림

우선 위의 명령어를 입력 하면 Scroll이 이동 되는데...

Ctrl + f를 누르면 Scroll이 움직이는게 아니라 "찾기" 창이 나오지요??

그건 다른 이유가 있는데 일단 이건 다른 장에 설명해 드릴게요.^^

우선 위와 같은 명령어로 Scroll을 이동 할 수 있다는 것만 기억해 두세요~



점프 모션


jump라고 하니까 무얼 이야기하는지 잘 모르겠지요?? ^^

간단하게 설명해 드리면 우리가 찾기나 gg로 커서를 갑자기 이동할 수 있잖아요?

그렇게 이동을 했을 때 이전에 위치한 커서의 좌표가 jumplist 라는 곳에 저장이 돼요.


  • :jumps


위 처럼 명령어를 적어 보세요.

그럼 지금까지 커서의 이동 경로가 나오게 되죠.


  • Ctrl + o : 이전 jumplist로 이동
  • Ctrl + i : Ctrl + o 로 이동한 역방향으로 이동


위의 말이 어렵다면.. 일단 한번 눌러 보세요. ^^

그럼 제가 무슨 말을 하는지 아실 수 있을 거예요.

사실 이 Jump 명령이 개발 할 때 가장 중요하다고 생각해요.

나중에 나오겠지만 함수에서 함수의 정의로 이동 하고 특정 String을 검색하여 그리로 이동할 수 있어요.

그런데 Jump 명령어를 모르면 도저히 다시 돌아오기 어렵겠지요.

일단 이건 그 때 다시 이야기 나누기로 해요.


숫자 후 명령어


여기서 처음으로 (숫자)gg라는 명령을 보셨어요.

그런데 숫자 다음에 명령어(Normal Mode에서 입력 가능한 명령어)를 입력해 보세요.

예를 들어 10j를 눌러 보세요.

j는 아래로 이동인데 10이 이전에 눌렸다고 10칸 아래로 내려가져요.

다른 명령어 들도 똑같이 숫자를 입력한 후에 명령어를 입력하면 숫자 만큼 반복되어 진다는걸 알 수 있을거예요.

지금까지 배웠던 명령어와 숫자를 잘 활용 하시면 더 빠른 이동을 하실 수 있을거예요.^^


마치며....


간단하게 끝날거 같았는데 또 길게 글을 적네요.

사실 위에 언급한 명령어 이외에도 상당히 많은 이동 명령어 들이 있어요.

하지만.. 필요한걸 아는게 더 중요하니까 일단 제가 주로 사용하는 명령어를 나열해 보았습니다.

일단 다음 장은 Help를 이용해서 원하는 명령어를 찾는 연습을 해 볼게요.

오늘은 그림이 하나도 없었는데..

Help 할 때는 그림이 많을거 같은 생각이 드네요.

글 하나 쓰는데 시간이 더 걸릴까 두렵습니다...;;;;;

그래도 오늘도 감사합니다.


2017년 11월 22일 수요일

48분 기적의 독서법 - 김병완 작가



시작하며....


처음에 블로그를 시작하겠다고 마음을 먹었던 이유는 사실 독후감을 쓰고 싶어서였어요.

과거에는 그래도 한 주에 한 권씩은 책을 읽었던 거 같아요.
(뭐 적다면 적지만 년 간 한 권도 안 읽는 분도 있으니..^^;;)

그런데 어느 순간.. 뭐랄까.. 더는 발전할 필요도 없고 현재 상황에 안주해도 된다는 생각이 들었는지 그냥 독서 없는  삶을 보낸거 같아요.

친구들과 술 마시고 수다 떨고..

우리는 참 힘들다.. 우리 애들도 참 힘들겠다..
살아 남으려면 주식을 해야 한다..
집은 언제 사느냐.. 아이는 언제 키우느냐..

뭐 대부분 이런 이야기들인데..

저렇게 수다를 떤다고 나쁘지는 않지만 그래도 안주 하면서 사는게 싫었던거 같아요.

다시 조금 더 맘을 부여잡고 열심히 살고 싶었어요.

그 중에 하나가 책을 좀 읽자였고요.

다음으로는 정리 좀 하면서 살자였고요.

그렇잖아요.

어제도 어떻게 살았는지 매번 잊어 버리는데 어떻게 살고 있고 있는지는 정리를 해야 한다고 생각한거죠.

그래서 책도 읽고 블로그를 시작 하기로 마음 먹은거죠.

이 책은 몇 년 전에 사 둔 책이었는데 인제야 읽어 보네요.^^

간단한 감상문 시작합니다.


독서란??


독서에 관련된 이야기니... 그럼 독서란 무얼까요?

책은 왜 읽을까요?

저도 22살까지도 만화책 이외로는 독서라는 거를 안 하면서 살았는데..

군대에서 후반기 교육을 갔는데 너무 할 일이 없더라고요.
(후반기 교육은 그래도 저녁에는 자유시간이 있었어요.)

그래서 읽었어요.

근데 이게 진짜 재미있는 거예요.

그렇게 군대 있는 동안은 꽤 많은 책을 읽었던 거 같아요.

기억은 나지 않지만 그래도 100권은 읽었던 거 같네요.

그렇게 책을 읽었다고 제가 크게 달라지지는 않았지만...

그래도 읽지 않았을 때보다는 내면에서는 무언가 변한걸 느낀 거 같아요.

그걸 뭐라 표현하기는 그렇지만요.

일단은 재미 있으니까 읽으면 되는거 잖아요.^^

저자 분에게 독서란 꼭 필요한 거라고 이야기해요.

책 한 권에는 한 사람의 생이 적혀 있는데 가장 쉽게 그분의 인생을 배우는 방법 이라는 거죠.

저도 그런 점에서 독서를 했던 거 같아요.

몸이 좋지 않은 분들도 여행 관련 책을 읽으면 저자와 같이 여행을 배울 수 있고..

음악적 재능이 없는 분들도 음악 관련 책을 읽으면서 음악의 가치와 마음을 들을 수 있게 되죠.

그렇게 그분들의 이야기를 듣는 거.. 그런 게 독서 아닐까요?

가장 중요한건 재미일 수 있다고 보지만요..ㅎㅎ

물론 재미라는게 웃는 재미 뿐만이 아니라 알아 가는 재미, 감동 받는 재미, 울컥 하는 재미..

다 이런걸 말하는 거예요~


독서.. 꼭 해야 하나??


주변에 독서를 하는 분이 많이 없어요.

끼리 끼리 모여서 그런가요?? ㅎㅎ

그래도 그 친구들 잘~ 살아요!

그럼 독서를 하면 뭐가 좋을까요??

독서를 하면 더 자~~~~~~알 살 수 있다고 저자분은 이야기해요.

역사 속 혹은 주변에 높은 자리에 오르신 분들, 훌륭하신 분들 모두 독서 덕분에 본인들이 그 자리까지 올라갔다고 알려주죠.

무엇을 하고 싶든.. 무엇을 원하든 상관없다고 해요.

장사를 잘하고 싶으면 독서를 해야 하고, 발명하고 싶으면 독서를 해야 하고, 대통령이 되려면 독서를 해야 한다는 거죠. ^^

그러니 가장 기본이 된다는 거예요.

그 기본이 되어 있으면 자신이 무얼 하든 망하지 않는다는 거죠.

성공이라는 결과를(성공이 무엇인지 각자의 정의가 있겠지만..) 얻는 건 아니더라도 옳은 길로 가기 위해서는 독서가 필요하다는 거죠.

물론 주위에 책 읽지 않고도 성공하신 분이 있을 수 있죠??

위에 이야기 한거 처럼 저자는 그분들에게 이야기한대요..

만약에 책을 읽었으면 더더욱 성공했을 거라고요. 


얼마나 무엇을 어떻게 읽어야 하나??


책의 제목에는 48분이 나와 있는데 이건 오전과 오후의 각각의 독서 시간을 말해요.

총 48 분 * 2 인거죠.

중요한 건 48분의 시간을 내는 건데요.

출퇴근 시간, 점심시간, 엘리베이터 타는 시간, 잠자기 전의 시간 등등을 모아서 그 시간에 독서를 하는 거죠.

그렇게 3년 정도를 꾸준히 읽어서 1,000권을 읽자는 게 저자의 요구 사항이예요.

꾸준히도 좋지만 3년에 1,000권을 읽으면 지혜라고 해야 하나, 한계라고 해야 하나.. 그런 임계점을 넘을 수 있다고 본데요.

물이 끓는건 100도 인데 그 100도를 넘기 위해 많은 열량을 소비해야 하는 거 처럼 말이죠.

그리고 위인이라고 칭해지는 분들도 그들 삶의 일부 중에 독서에만 빠진 적이 있다고들 하네요.

특정 기간동안 어마어마한 양의 책을 읽어서 그런 자리에 까지 올랐다는거죠.

그럼 어떤 책을 읽을까요??

만약에 10권을 읽으라고 하면 지정해 줄 수 있겠지요.

그렇지만 1,000권 이잖아요.

이건 그냥 아무거나 읽으라는 거예요.

읽고 읽고 또 읽고 아무 책이나 모두...

그 중에는 시간 낭비 같은 책도 있을 수 있지만, 그 책조차 저자의 삶이 있으니 배울 게 있다는 거죠.

그러니 중요한 건 읽는 속도를 높여서 최대한 많이 읽자고 하네요.

처음에는 느리겠지만 빠르게 읽자고 마음 먹고 읽어 나가면 책이 그림처럼 읽혀 진다고 해요.

사실 이 부분은 잘 모르겠어요.

저는 아직까지 꽤나 느리게 읽는 편이라...;;;

뭐 그래도 많이 읽자는 거에는 공감을 하고 있어요.


마치며....


책을 읽기 위해 책을 읽는 방법인 책을 읽어 보았네요.

최근에 웹툰 말고 책을 읽은 건 진짜 오랜만인 거 같아요.^^

첫 숟가락에 배가 부를 수는 없겠지만..

그래도 시작이 반이라고 하니..

최대한 많이 읽어 보고 정리하면서 지내보려고 합니다.

그래도 제가 워낙 읽는 게 느려서 저는 1년에 100권씩 해서(만화책 포함입니다.ㅋㅋㅋ) 3년 간 300권만 채워 보려고요.

3년 후에 이 Blog에 그 정도의 독후감이 올라올지는 3년 후에 알 수 있겠지요.^^

감사합니다.