2017년 11월 24일 금요일

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년 후에 알 수 있겠지요.^^

감사합니다.

2017년 11월 21일 화요일

Vim의 기본; Option과 설정 파일


시작하며....


무엇이든 하나씩 차근차근 배우는 걸 좋아합니다.

그리고 그 단계에는 왜 해야 하는지를 먼저 이해 하고 앞으로 나아가는 게 재미있더라고요.

누가 시켜서 억지로 넣는다기 보다는 왜 그걸 해야 하면 좋은지를 먼저 알고 나면 더 기억에도 남고요.

그러니 이번에도 왜 필요한지 알아 가면서 계속 진행하도록 할게요.


설정 변경


Vim은 기본적인 설정을 변경할 수 있어요.

물론 기본 상태로도 간단한 편집기로는 사용할 수도 있는데 Vim을 사용하는 분들은 개발자분들이 많겠지요?

그럼 개발자에 어울리는 형태로 변경하면 좋을 거 같아서요.

물론 개발하지 않는 분들도 각자 취항대로 변경 하는 방법을 알면 좋겠죠?

여기서는 일단은 제가 사용하는 설정들을 보여 드릴게요.

제가 설명을 안 드리는거 외에는 구글에서 검색 하여 해당 Option을 찾으면 돼요~


줄 번호 출력


저는 개발을 할 때 라인에 줄 번호가 있는 게 좋더라고요.

Source Insight 같은 Tool을 사용할 적에도 항상 기본적으로 줄 번호를 추가해 두곤 하죠.

그런데 아시는 거처럼 Vim의 기본 설정은 줄 번호가 출력되지 않아요.

그렇지만 개인이 원한다면 넣을 수 있죠.

명령어는 다음과 같아요.


  • :se[t] nu[mber]          


지난 번 강좌에서 Command-line Mode에 진입한 거 기억하시죠?

그거처럼 :를 눌러서 Command-line Mode로 변경하시고 set number를 적으면 돼요.

set은 가장 흔하게 사용되는 Command 중에 하난데요.

option에 대해 Setting을 하거나 option의 값을 변경하는 역할을 하지요.

option의 종류가 궁금하신가요?

그럼 다음과 같은 명령어를 적어 보세요.


  • :help option-list


그럼 set 으로 설정할 수 있는 option의 종류들이 나와요.



위의 그림은 일부이고 아래로 쭉~~ 내려서 확인할 수 있지요.

방금 확인하니 381개 정도가 있네요.

많지요?? ㅎㅎㅎ

그러니 필요한 건 찾아가면서 알아 가야 한다고 말씀드리는 거예요.

이게 외울 수 있는 정도가 아니거든요...;;;;

그리고 위에 se[t]라고 적은 부분을 보고 이상하다고 생각하실 수 있는데요.

이건 set의 se까지만 적어도 명령어로 인식 된다는 거예요.

그러니 :se nu 까지만 적어도 :set number와 같다는 거죠.

그리고 다시 줄 번호를 보이지 않게 하는 방법은 아래와 같아요.




  • :se[t] invnumber

별로 어려운 건 없지요?? ^^


swp, un, backup 파일들


제가 폴더에 source.c라는 파일을 만들고 이걸 Vim으로 작업했다고 해 봐요.

작업이 완료되고 저장을 하면 어떻게 될까요??

당연히 저장되겠지요?? ^^

뭐.. 그런 의도로 물어 본 건 당연히 아니겠죠..;;;

일단 같은 폴더로 이동해 볼까요????



분명히 source.c 라는 파일밖에 없었는데 무료 3개의 파일이 더 생겼어요.

각각 무엇인지 알아볼까요?


.source.c.swp


swap 파일이라고 불러요.

하는 일은 혹시나 PC가 갑자기 꺼져서 저장한 파일을 날려야 할 때 있잖아요?

그때 swap 파일이 있으면 복원이 가능하데요.
(그런데 저는 지금까지 복원을 해 본 적이 없어요.ㅎㅎ)

또 복수의 사용자가 같은 파일을 수정하는 걸 막을 수 있죠.

굉장히 예전에는 개인용 컴퓨터 보다는 동시에 같이 사용하는 경우가 많았다고 해요.

그래서 동시에 한 파일에 접속 하는걸 막아야 했던거죠.

만약 위의 두 기능을 사용하지 않을 거라면 아래 명령어를 입력 하시면 돼요.


  • :set noswapfile


만약에 swp을 사용하고 싶다면 no를 뺀 :set swapfile을 입력 하면 돼요.


.source.c.un~


un이 붙은 거 보니 undo 느낌이 나지 않나요??

맞아요.

우리가 문서를 편집하고 저장 후 종료를 했어요.

그리고 다시 문서를 편집하려고 했더니 이전에 수정했던걸 다시 원복하고 싶은 거예요.

그래도 이미 Ctrl+z를 눌러도 종료를 했으니 당연히 원복되지 않겠죠.

하지만 Vim은 un~ 파일이 있기 때문에 원복을 할 수 있어요.

편집을 하고 저장한 다음에 종료하고.. 다시 열어 보세요.

u를 누르시면 이전에 편집한 게 다시 원복 될 거예요.^^

하지만 이 기능이 필요 없으면 아래 명령어를 입력 하시면 됩니다.

필요 하다면 하단 명령어를 입력하시고요.


  • :set noundofile


사실 있으면 좋겠지만...

폴더 안에 이것저것 많이 생기는 게 저는 별로 안 좋더라고요.

그래서 일단은 막아 두었지요.

다시 사용하고 싶으면 아래 명령어를 입력 하시면 되요.


  • :set undofile



source.c~


그냥 단순 백업 파일이에요.

backup 자체를 하기 싫다면 아래 두 명령어를 입력해 주세요.

:set nobackup
:set nowritebackup

writebackup은 백업을 만드는 순서를 말하는 거예요.

writebackup : 저장 후 Backup 파일 생성
unwritebackup : 저장 전의 자료로 Backup 파일 생성 후 저장

사실 writebackup의 옵션은 큰 상관이 없는데 혹시 Backup에 대해 알고 싶으신 분이 있을지 몰라 적어 두네요.


열심히 그렸는데...

한번 봐 주세요~

어려울건 없을거 같은데 모르시겠으면 알려 주세요.

다시 설명해 드릴게요.

혹시 백업 파일을 만드려면 no를 뺀 :set backup 하시면 되는 거 아시죠?? ^^


Tab 과 space


회사 마다 그리고 언어마다 각자의 코딩 스타일이 있지요.

그 중에 Tab과 Space는 가장 기본적인 스타일인 거 같아요.

그럼 Tab은 몇 칸으로 설정(기본은 8칸) 할지 그리고 Tab을 눌렀을 때 Space로 채우게는 어떻게 할지를 알려 드릴게요.


  • :set softtabstop=4 tabstop=4 shiftwidth=4 expandtab
  • :set smartindent


우선 Tab의 간격에 대한 옵션은 softtabstop과 tabstop, shiftwidth가 다 인거 같아요.

softtabstop은 Tab 키를 눌렀을 때 이동하는 정도예요.

shiftwidth는 "&gt;&gt;"나 "&lt;&lt;"를 입력했을 때의 이동 간격이고요.

tabstop은 잘 모르겠어요.;;;

설명을 읽어 봐도 잘 이해가 되지 않더라고요..;;;

일단 다른 분들도 같게 두더라고요.

expandtab은 Tab을 space로 변경하는 옵션이에요.

저는 보통 space로 적용하는 게 편하더라고요.

지금 회사에서 적용하는 코딩 스타일도 그렇고요.

smartindent는 자동으로 indent를 해주는 건데요.

엔터를 쳐서 새로운 라인으로 같을 때 위의 Tab과 같은 간격 혹은 Tab을 하나 더 나아가서 첫 글을 적도록 하는 거예요.

사용하시면서 엔터를 쳐 보시면 아실 거예요.


우선 이 정도의 설정만 하면 기본적으로 편집 관련한 옵션은 다 적용한 거 같아요.

물론 필요하시면 google에게 문의를 하면 다 나오기도 하더라고요.

정 모르시겠으면 저한테 물어보세요.

같이 찾아 드릴게요.^^


설정 파일 _vimrc


위 처럼 set을 통해 원하는 데로 설정을 하셨나요??

그런데 아세요???

해당 vim을 종료하고 다시 vim을 켜면 이전에 설정했던 내용이 모두 사라져요.

그래서 다시 설정해야 하죠.ㅠㅠ

그런 일을 막기 위해서 설정 파일인 _vimrc라는게 있지요.

OS 별로 _vimrc의 위치가 달라지는데 일단은 윈도우에 대해서만 알려 드릴게요.

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

위의 파일이 설정 파일이에요.

해당 파일을 열어서 아까 위에서 설정한 내용을 아무 위치에 적어 넣으면 돼요.

어느 위치인지 걱정되시면 가장 아래에 추가해 주세요~

set noswapfile
set nobackup
set nowritebackup
set noundofile
set smartindent
set softtabstop=4 tabstop=4 shiftwidth=4 expandtab "tab to 4 spaces
set number

보시는 거처럼 앞에 ":" 부분을 빼고 추가해주시면 되지요.

이렇게 무언가 처음부터 설정을 하려면 _vimrc를 이용하시면 됩니다.

간단한 설정이지만 본인의 입맛에 수정할 수 있다는 점에서 도움이 되었으면 좋겠습니다.

감사합니다.


2017년 11월 20일 월요일

Vim과 Chrome, Firefox


시작하며....


Vim을 사용하면서 자잘한 설정을 바꾸는 것을 진행하려다가...

좀 더 재미있는 걸 하고 싶어서 Chrome과 Firefox 이야기를 하게 되네요.

사실 월급쟁이라서 주말에는 그래도 시간이 되는데 주중에는 별로 시간이 없어서 간단하게 하고 싶기도 했고요.^^

Vim의 장점을 다시 한번 이야기하면서 갑자기 왜 Chrome과 Firefox 같은 웹 브라우저 이야기가 나오게 되었는지 알려 드릴게요.


Vim의 장점


Vim의 발표된 연도는 1991년 도라네요.

쉽게 사라지고 쉽게 생겨나며 쉽게 변하는 지금 세대이긴 하지만 25년이 넘게 이어졌다는 건 무언가 좋은 점이 있었겠지요.

그리고 현시대에도 잘 어울리게 발전도 지속해서 이루어졌고요.

저에게 처음의 Vim의 장점은 "이제는 마우스와 화살표를 사용하지 않아도 된다." 였어요.
(물론 그래도 사용하는 경우는 있지요.^^;;)

GUI가 발달하며 당연히 마우스는 굉장히 발명품이라고 봐요.

그런데 사용하다 보면 조금 더 빠르게 처리 할 수 있는 부분을 마우스로 가야 하는 시간이 너무 아까운 거예요.

그렇게 생각하다 보니 단축키에 대해 더 관심이 가게 되었죠.

하지만 최종적인 문제인 화살표(이동키)는 어쩔 수가 없었어요..ㅠㅠ

그러다가 Vim이 화살표 키를 안 사용하게 된다는 걸 깨닫게 되고 Vim을 사용하게 된 거죠.

Vim은 이미 알고 있었지만, 필요성을 느끼지 않았기에 저에게는 불필요한 툴이였지만...

필요하게 되었고 그것의 진가를 알게 되니 푹 빠지게 될 수밖에 없었죠.

Vim의 장점에 빠지다 보니 다른 툴을 사용하면서도 화살표가 사용하기 귀찮더라고요..ㅎㅎ

그래서 뭐든 Vim 처럼 hjkl를 이동키로 사용하고 싶었어요.


Chrome


Chrome은 확장 프로그램을 설치할 수 있어요.

그래서 혹시나 해서 Vim 처럼 Chrome을 사용하는 방법이 있나 찾아봤죠.

역시 세상에는 대단한 사람이 많아요.

Vim 명령어로 Chrome을 조정할 수 있는 확장 프로그램이 있더라고요.^^




이전에는 Vimium을 사용하다가 최근에는 cVim을 사용하고 있어요.

특별한 이유는 아니고 최신에 나온 거라 테스트 겸 사용해 보고 있었죠.^^

서로 명령어는 거의 비슷해요.

일단은 최근에 사용하는 cVim으로 명령어를 알려 드릴게요.


  • hjkl : 스크롤을 좌하상우 이동
  • f : 링크된 모든 것을 보여주고 알파벳을 누르면 해당 링크 Open
  • F : 링크된 모든 것을 보여주고 알파벳을 누르면 해당 링크 다른 Tab에 Open
  • / : 검색
  • n : 다음 검색 결과로 이동
  • N : 이전 검색 결과로 이동
  • b : bookmark
  • x : 해당 탭 닫기
  • J : 이전 탭으로 이동
  • K : 다음 탭으로 이동


이 외에도 너무나 많은 명령어가 있어요.

그래서 일단 사용하기에는 불편함이 없어야 하니 가장 기본만 적었어요.


hjkl


이건 Vim에 대해 했으니까 아시죠.

스크롤을 이동하는 명령어입니다.


f F


사실 이 명령어가 가장 유용한 기능이라고 생각해요.

f를 누르기 전과 누르고 난 후의 그림을 보여드릴게요.

f를 누르기 전의 화면

f를 누른 후의 화면


위 처럼 f를 누르면 알파벳이 보이는데 해당 알파벳을 누르면 해당 링크로 이동해요.

처음에 엄청나게 신기했어요.

그리고 이제는 마우스 없이도 Web을 돌아다닐 수 있다는 것을 알게 되었죠.^^

f와 F의 차이는 f는 같은 창에 열리느냐 다른 창에 열리느냐 입니다.

f는 같은 창에 F는 다른 창에 열려요.

한번 해 보시면 제가 무슨 말을 하는지 아실 거예요.


/ n N


/를 누르면 입력할 수 있는 창이 나와요.

그리고 검색할 단어를 입력하고 엔터를 치면 검색을 하게 되는 거죠.

그리고 n과 N으로 다음과 이전에 검색 결과로 이동하게 되는 거죠.



위처럼 찾으려고 하는 단어는 노랑으로 나오고 아래 숫자는 검색된 단어의 숫자와 현재의 순번을 말하고 있어요.


b


Bookmark를 얼마나 자주 사용하시는 모르지만 저는 기억력이 별로라서 거의 모두 Bookmark에 넣어 둬요.

b를 이용하여 쉽게 입력한 Bookmark를 찾고 이동할 수 있지요.


x


현재 탭을 닫는 거죠.

이건 너무 간단해요.


J K


탭 이동이에요.

이전 탭과 이후 탭으로 이동할 수 있지요.

이것도 너무 간단해요.ㅋㅋ


이렇게 사용하다 보면 정말 마우스 없이 웹서핑할 수 있죠.

하지만 간혹...

확장 기능이 실행 되지 않을 때가 있어요..ㅠㅠ

그건 어쩔 수 없이 마우스를 이용해야 하지만요.

그래도 웹툰 볼 때는 편하니 나중에 시간 되시면 한번 써 보세요!!


Firefox


아시는 거처럼 Firefox도 확장 기능을 사용할 수가 있지요.

이전에 Firefox를 사용했을 하고..

최근에는 사용한 적이 없어서 그림을 넣을 수가 없네요.

최근에는 약 두 가지 정도를 많이 사용하나 봐요.




혹시 Firefox를 사용하시는 분들은 위에 둘 중의 하나를 사용하시면 Chrome의 cVim과 비슷한 기능을 하는 걸 볼 수 있을 거예요.^^

서서히 마우스 사용을 줄이면서 더 편한 삶을 살아 보자고요~

감사합니다.

2017년 11월 19일 일요일

UML과 Plantuml

차례


시작하며….

개발을 배우게 되면 자연스럽게 UML이란 것도 배우거나 알게 됩니다.

개발을 할 때 보통 준비 작업 없이 머릿속의 있는 것을 Code로 변환하지요.

물론 간단한 것들은 그렇게 해도 큰 문제 없이 진행 가능하지요.

하지만 다수가 함께하려면 서로의 의견을 그림으로 설명을 해야 하죠.

또한 호흡이 긴 프로젝트라고 하면 자신을 위해서라도 자료를 만들어 둘 필요가 있어요.

왜냐면… 왜 그렇게 구현을 했는지 나중에 왜 그렇게 했는지 잊어 버리게 돼요..ㅎㅎㅎㅎ
(저만 그럴 수도 있지만요..;;;))

그럴 때 UML이라는 것이 도움되곤 합니다.

사실 필요성을 느끼지 못한다면 안 만들어도 되지요.

하지만 반대로 필요성을 느낀다면 그만큼 강력한 도구이기도 하고요.

그럼 UML을 그리기 위한 도구가 당연히 필요할 텐데요.

제가 UML이란 무언가를 간략하게 보여 드리고..

지금 사용하고 있는 Tool인 Plantuml에 대해 설명해 드리겠습니다.

UML


1. UML

Unified Modeling Language의 단축형으로 단순히 해석을 하게 되면 통합 모델링 언어쯤 되겠네요.

좀더 자세히 들어가면 소프트웨어 엔지리어링 분야에서 개발이나 모델링을 할 때 사용하는 언어라고 하더라고요.

근데 어려운 말은 다 지우고 하나만 기억하시죠.

언어!!

언어란 누군가에게 자기 생각을 전달하는 도구 아닌가요?

그러니 이 UML 역시 개발 시에 어떻게 구조를 잡을 것이고 어떤 순서로 진행되는지를 상대방에게 알려주는 도구라고 보시면 될 거 같아요.

물론 그 상대방이 미래의 자신이 될 수도 있고요.

소프트웨어 프로그램을 나타낼 때 크게 두 가지로 나눌 수 있다고 하네요.

구조와 행동으로요.

그래서 UML도 크게 Structure diagrams와 Behavior diagrams로 나누어지는데 대표적인 Diagram을 적어 볼게요.
(여기서 대표적이라고 하는 건 제가 사용한다는 거예요.^^ 굉장히 주관적이라는 거죠.ㅎㅎ)

1) Structure Diagrams

  • Class Diagram : Class와 Interface의 상관도


Component Diagram, Object Diagram도 있지만..

제가 잘 안 쓰게 되더라고요.

그리고 서로 간의 차이도 잘 모르겠기도 했고요.

더 중요한 건…. 다른 사람들도 그 차이를 잘 몰라요…ㅎㅎㅎ

그러니 특별히 구분 질 필요가 없어요.

아까도 이야기 했지만 UML은 언어예요.

본인이 아무리 고급스러운 사자성어를 쓰고 어려운 영어 단어를 쓴다고 하더라도 상대방이 모르면 우리는 서로의 생각을 이해 할 수 없잖아요.

그러니 다른 사람도 알만한 언어로 이야기 하자고요.

2) Behavior Diagrams

  • Sequence Diagram : Object 간의 함수 Call의 흐름
  • Activity Diagram : 순서도
  • State Diagram : 상태에 변화도
  • Use Case Diagram : 시스템이 수행하는 업무들


정의를 내리려고 하지만 잘 안되네요.

예제를 보여 주면서 하는 게 좋을 텐데 다음 장에 UML 도구로 간단하게 보여 드리도록 할게요.

이런 Diagram에서는 각자 사용하는 문법이 조금씩 달라요.

또한 시간에 따라 언어가 바뀌었듯 UML도 버전이 업이 되면서 새롭거나 사라진 문법들도 있고요.

여기서는 역사 이야기는 하지 않을게요.^^

그럼 저런 UML을 잘 만들어 줄 수 있는 툴이 뭐가 있는지 같이 볼게요.

Plantuml


2. UML 작성 툴 : Plantuml

현재는 UML을 작성 할 때 Plantuml만 사용하고 있어요.

그 만큼 만족한다는 거겠죠.

그렇다고 하면 저는 이전에 어떤 툴을 사용하였고 Plantuml이 무언지 아주 간단하게 알려 드릴게요.

1) 이전 Tool들의 단점

혹시 StarUML이나 Visio 같은 프로그램을 들어 보셨나요??

StarUML은 대표적인 무료 툴이었고(최근에 홈페이지 들어가니 유료로 바뀌었더라고요.)
(과거의 무료 버전은 http://staruml.sourceforge.net/v1/ 에서 받을 수 있는거 같아요.)

Visio는 MS의 툴인데 잘 쓰는 분들은 기가 막히게 사용하시더라고요.

그렇지만 저에게는 둘 다 큰 장점을 느낄 수 없었어요.

회사 입사 초반에는 StarUML을 사용하였습니다.

해당 툴로 Diagram 그리는 건 큰 문제 없었지만 몇몇 가지가 너무 힘들었어요.

  • 수정(Edit)
  • 재사용성
  • Viewer의 부재


수정

예를 들어 A와 B Object의 Sequence Diagram을 완벽히 그려 놨어요.

그런데 A와 B 사이에 C라는 Object가 생겼어요.

그럼 지금까지 A와 B 사이의 함수 Call들을 모두 이동을 해줘야 해요.

아시는 분은 아시겠지만 그런 추가 사항들이 나중에는 점점 더 많아진다는 거죠..;;;

그 쯤 되면 이제 개발을 하는 것이 아니라 UML 만들다가 시간이 다 가게 돼요.

그러다 보니 UML은 개발이 완료된 시점에서야 그리게 되는 거죠.

개발 다 했다고 하면 쉬어야 하는데 숙제가 남은 느낌이 되서 오히려 귀찮은 작업이 되는 악순환에 빠지고 안 하게 되는 문제가 있어요.

재사용성

수정 하기가 어려우니 비슷한 Diagram을 만들려고 하더라도 이전에 만들었던 UML은 거의 재사용이 안 되죠.

매번 신규로 만들어야 한다고 보시면 되죠.

그럼 위와 같은 문제가 또 발생하게 되는 거죠.

Viewer의 부재

Visio의 경우는 모르겠지만 제가 사용하던 당시의 StarUML은 Viewer가 없었어요.

그러니 만들어 두더라도 다른 PC에서는 보기가 어려웠죠.

제가 StarUML을 설치를 다시 해야 했으니까요.

처음에는 팀원 분들 모두 설치하게 하려고 했지만….

거의 막내였던 저의 힘은 한없이 초라하니…ㅎㅎ


물론 지금의 StarUML이 위의 단점들이 모두 해결 되었을 수도 있으니 원하시는 분들은 다운 받아 보셔서 사용해 보는 것도 좋을거 같아요.

하지만 그 당시에는 그냥 혼자만 가지고 놀다가 StarUML을 접게 되었습니다.

그렇지만 UML에 목마름은 지속 되었고 저에게 적합한 툴을 찾게 되었어요.

2) PlantUML

우선 주소는 아래와 같아요.

http://plantuml.com/

이름이 굉장히 마음에 들었어요.

UML 공장이라고 보면 되잖아요.^^

간단하게 설명을 하면 Script 방식으로 UML을 작성하고 Generater를 통해 그림 형태로 만드는 거예요.

예를 들어…

@startuml
Bob->Alice : hello
@enduml

라고 적기만 하면 아래와 같은 그림이 나오게 되죠.


더 자세한 문법은 사이트에서 확인할 수 있어요.

그리고 저 역시 다음 장에 사용법에 대해 알려 드리겠습니다.

이 Plantuml의 장점은 위에서 말한 단점을 모두 해결했다는 거예요.

수정도 쉽고 재사용도 쉽고 많은 Generater를 통해 쉽게 변환할 수 있죠.

그리고 상대방에게는 png 형태로 전달하면 되니 특별히 Viewer를 설치할 필요가 없어요.^^

물론 단점도 있어요.

스크립트 대로 그림을 그리는건데 어쩔 때는 제가 원하는 형태가 나오지는 않아요..;;

또한 몇몇가지의 제한 사항들도 있고요.

그래도 장점이 너무 크니 아직도 사용하는 중이겠죠?? ㅎㅎ

마치며….

Plantuml을 사용하면서 UML에 대한 장점들을 많이 느끼고 있었어요.

그렇지만 주변 분들 중에는 UML에 대한 관심을 가지지 않으시는 분들이 많기도 하고요.

그래서 이렇게 글을 쓰는거고요.^^

다음 강좌에서 Diagram을 그리면서 Plantuml에 더 자세히 알아보도록 하겠습니다~!

Vim의 기본; 편집 및 종료



시작하며....


MS Word나 한글 같은 프로그램을 이용하여 글을 쓸 때 입력 이외에 가장 많이 하는 것 무엇일까요?

개인차가 있기는 하겠지만 저 같은 경우는 수정을 위해 이동, 삭제, 복사, 붙여넣기, 저장이 될거 같습니다.

아마 이 정도만 알아도 편집기로서의 능력은 충분할거라 생각을 해요.

그러다가 Vim에 대한 관심이 생긴다면 그 후에 더 많은 것을 해도 되겠지요.


0. 준비


배울 때는 단순하게 외운다고 해서 되는건 아니라고 봐요.

실제로 해 보는 것이 가장 좋겠지요.

그래서 저도 해보자고 하고 싶습니다.

시간이 괜찮으신 분들은 아래의 내용을 미리 vim_basic.c로 만들어 주세요.
(아래에는 오류가 있으니 일단 만들어만 두세요~)

#include <stdio.hh>

int main()
{
    printf("Hello World");
   
    int i;
    int sum;

    for ( i = 0; i < 10; i++ ) {
        sum = sum + i;
    }
   
    printf("sum = %d", sum);

    return 0;
}

그리고 Vim으로 열어서 진행 하도록 하겠습니다.

여는 방법은 해당 파일 위에 마우스 커서를 두고 우 클릭을 하면 "Edit With Vim"이 보일거예요.

그걸 클릭하시면 아래와 같은 창을 보실 수 있을거예요.




1. 이동


키보드에 손을 올려 보세요.

그럼 왼손의 집게손가락이 키보드 F에 올려지고 오른손의 집게손가락은 J에 올려지게 되죠.

이 상태에서 사람이 가장 편하게 누를 수 있는 키보드가 무엇일까요??

움직이지 않는 상태니까.

아마 asdf jkl; 중에 하나의 키보드가 될거예요.

그래서일까요? Vim은 가장 편한 키보드 중 j를 아래로 이동하라는 명령어로 설정해 두었어요.

그리고 왼쪽 옆에 있는 키인 h를 왼쪽 이동, k는 위로 이동, l은 오른쪽 이동으로 설정 되어 있어요.



그럼 이동을 하셔서 아래 그림의 h까지 커서를 이동해 보세요.
(이동은 Normal Mode에서만 가능해서 혹시 글자가 입력 되신다면 Esc키를 누르시고 이동하시면 됩니다. 대신... 절대 화살표는 사용하지 마세요. 연습 중이잖아요~)



조금더 편하게 이동하는 방법이 있는데 그건 다른 편에 또 이야기 하겠습니다.


2. 삭제


글자를 삭제 하는 방법은 여러가지가 있어요.

그 중에서 제가 자주 사용하는 것만 알려 드릴게요.
(그 외의 명령은 필요하시면 찾으시면 나올 것이고 없다면 직접 만드셔도 되요.^^)


  • x : 커서 위의 글자 하나를 삭제
  • dd : 한 줄 삭제
  • diw : 한 단어 삭제
  • v[영역선택]d : 영역을 선택하여 삭제
  • V[영역선택]d : 줄 단위를 선택하여 삭제

  • u : 수정 취소
  • Ctrl+r : 수정된거 재복구


위의 명령어는 모두 Noraml Mode에서 사용되어 집니다.

지금은 h를 하나 삭제하려고 하는 것이니 x만 눌러서 삭제를 하도록 하겠습니다.

그럼 아래 처럼 되겠지요.



아래 보니 "printf("Hello World");" 부분이 있는데 이건 삭제를 하죠.

해당 줄에 커서를 두고 dd를 눌러 보세요.

그럼 삭제가 될거예요.



diw는 아무 곳에 가서 한번 테스트를 해 보세요.

만약에 잘못 삭제를 하였다면 u를 누르시면 복원이 되고요.
(윈도우의 Ctrl+z와 같은 효과입니다.)

그리고 u를 너무 많이 눌렀거나 실수로 눌렀다면 Ctrl+r을 누르세요.

복구 버튼 입니다.

다음은 v와 V인데요.

모드 중에 v와 V에 대해 이야기 한 적 있죠.

v나 V를 누르게 되면 Visual Mode가 되는데...

한번 눌러 보세요.

그리고 hjkl(이동키)로 이곳 저곳으로 이동을 해 보세요.

그럼 선택 영역을 지정 할 수 있지요.

아래 그림 처럼 선택을 한 후에....



d를 누르시면 삭제가 되지요.

다시 u를 눌러서 원복을 해 보세요.

V(대문자)는 한 줄 단위로 선택영역을 지정하는거예요.

원하는 만큼 선택하고 d를 누르면 선택한 모든 줄이 삭제 되지요.


3. 복사와 붙여넣기


삭제를 했으니 복사를 해 볼까요??

제가 자주 사용하는 복사 명령어는 다음과 같아요.


  • yy : 한 줄 복사
  • yiw : 한 단어 복사
  • v[영역선택]y : 선택된 영역 복사
  • V[영역선택]y : 선택된 줄 복사



  • p : 복사된 부분 붙여넣기


삭제인 d 명령어 대신 y 명령어를 사용해요.

다른 편집기에서 사용하는 Ctrl+c는 copy의 약자인데... y는 yank라고 잡아 채다의 느낌이라네요.

그럼 붙여넣기는 무엇일까요.

paste인 p를 사용하면 됩니다.

그리고 하나 더 이야기 해 드리고 싶은 것이 있는데요.

d 입니다.

d는 위에서 삭제 하기로 알려 드렸지만..

단순 삭제 보다는 자르기라고 보시는게 더 좋아요.

그러니 d로 삭제 하고 p를 누르면 삭제된 내용이 붙여 넣어지는 것을 볼 수 있을거예요.

d와 p를 이용해서 테스트 해 보고 u로 원복해 보세요.


4. 입력


입력 하려면 어떻게 하면 될까요?

굉장히 단순한데...

Input Mode로 진입하면 됩니다.

Input Mode로 진입을 할 때 제가 자주 사용하는 명령어는 다음과 같아요.


  • i : 현재 커서 앞에서 입력 가능 <= 가장 사용 빈도 높음
  • a : 현재 커서 뒤에서 입력 가능
  • I : 현재 라인 맨 앞에서 입력 가능
  • A : 현재 라인 맨 뒤에서 부터 입력 가능
  • o : 다음 라인 맨 앞에서 입력 가능
  • O : 이전 라인 맨 앞에서 입력 가능


보통은 i를 가장 많이 사용하는데 조금 익숙해 지면 다른 경우로도 연습을 해 보세요.

키보드를 하나라도 적게 입력 하고 사용하는게 좋으니 익숙 해 지면 더 편하게 입력을 할 수 있게 되겠죠.^^

그리고 여기서 하나를 말씀을 드리면 Input Mode에서는 hjkl로 이동할 수가 없어요.

그러니 Input Mode 일 때는 어쩔 수 없이 화살표로 이동을 해야 하는데...

화살표 사용이 너무 싫다면 Esc 키를 눌러 Normal Mode로 빠져 나가 이동 후 다시 i를 눌러 Input Mode로 오시면 되지요.^^

그럼 마무리를 위해 입력을 하나 하죠.

함수 시작 전 첫 줄에 printf("Hello Vim\n"); 이라고 입력해 보시겠어요?

최종 결과물은 다음과 같겠네요.




5. 저장 및 종료


이렇게 수정을 한 후에 저장을 해보겠습니다.


  • :w : 저장
  • :q : 종료
  • :wq : 저장 후 종료
  • :w! : 강제 저장
  • :q! : 강제 종료



":" 글자 기억하시나요??

바로 Command-line Mode로 진입할 수 있는 명령어 입니다.

:를 누르면 아래 부분에 글을 입력 할 수 있게 커서가 나와요.

그림....

여기에 w를 입력하고 Enter를 누르면 저장이 된거예요.

그리고 w 대신에 q를 누르면 종료가 되어요.

w를 누르고 q를 입력해 보시면 Vim이 종료 되는 것을 확인 할 수 있지요.

명령어 뒤에 !를 누른다면 강제라는 의미인데....

예를 들어 저장하지 않고 종료를 하려고 할 때 :q만 입력 하면 Vim은 저장이 되어 있지 않다고 종료를 거부해요.

그럴 때 !를 뒤에 붙여주면 강제로 종료를 하게 되는거죠.


이제 Mode는 모두 배우게 되었고 가장 기본 적인 편집 능력까지 가지게 되었습니다.

남은건...

익숙해 지는거죠!!

그리고 설정을 조금씩 바꾸는 방법에 대해서 배워 볼게요.

감사합니다.^^