초등학생 아들을 두고 있는 친구가 초등학생 아들과 게임처럼 하겠다고 만들어 달라고 부탁해서 만든 Anki 공부 자료입니다.

       

친구는 아이가 기본적인 사칙연산과 수개념을 아빠와 놀면서 몸에 완전히 익힐 수 있도록 하면 좋겠다고 하네요.

    

그 친구가 수포자였기 때문에 아이에게 수학을 공부시키는데 조금 열성적인 것 같습니다. 

    

여튼, 친구의 부탁을 듣고 조금 고민해보았습니다. 

     

그 결과 단계별로 난이도를 나누어서 아이가 쉽게 풀 수 있고, 스스로 잘한다는 생각을 가질 수 있도록 카드를 만드는 것이 좋겠다고 판단했습니다. 그리고 적정한 수준의 반복을 통해서 이를 숙련시킬 필요도 있다고 판단했습니다. 다행히 Anki는 적정한 수준의 반복에 특화된 프로그램이니 금상첨화인 셈입니다. 

     

그래서 우선 초급부터 만들어 봤습니다. 초급이란 아이가 잘 인지할 수 있는 1~10까지의 숫자를 이용하여 덧셈을 하고 뺄셈을 하는 것을 말합니다. 아무래도 아이들은 손가락을 이용하여 1부터 10까지의 숫자를 쓰는데 가장 익숙하니까요...

     

그리고 이 초급 덧셈과 뺄셈도 난이도에 따라서 구성하여 덧셈은 3개로 뺄셈은 2개로 구성했습니다. 

     

우선, 1~10까지의 숫자만 사용해서 덧셈을 하도록 만들었는데 덧셈의 결과가 10이 넘어가지 않는 것 위주로 덧셈의 첫 번째 카드 뭉치를 만들었습니다. 아무래도 덧셈의 결과값을 스스로 체감할 수 있게 하려면 숫자 10을 넘기지 않아야할 것이라고 판단했습니다. 그 다음 카드뭉치는 덧셈의 결과를 15보다 작은 수준으로 확장해서 사용하는 숫자의 범위를 늘린 것입니다. 그 다음 카드뭉치는 20까지 확장한 것입니다이렇게 하면 아이는 1~10까지의 숫자를 전부 더할줄 알게 됩니다.

     

뺄셈은 덧셈과 동일한 방식으로 구성하기 어려웠습니다. 빼기의 결과는 무조건 0에서 9까지 나오기 때문입니다. 그래서 사용하는 숫자의 크기에 따라서 2가지 난이도로 구성했습니다. 

    

두자리수의 덧셈과 뺄셈은 수를 세로로 배치해서 더해야 하기 때문에 조금 다르게 익혀야 합니다. 그러니 이것은 다음 기회에 포스팅 하도록 하겠습니다. 

     

초등학교 아이가 Anki로 스스로 학습하는 것은 어렵고 그 결과를 신뢰하기도 어렵기 때문에 친구는 Anki를 들고 같이 아이와 재롱을 떨면서 공부를 하고 있습니다. 옆에서 보니 육아란 힘들구나 하는 생각이 듭니다. 

     

다음과 같은 카드를 앞에 두고


2+1=?

 

아빠 손가락 2개가 여기 있네그런데 손가락 1개를 더 피면 몇 개야?

아들 : 3개요.

아빠 그럼 여기에 답은 뭘까?

아들 : 3이요.

아빠 아이쿠 잘한다.

 

이런 식으로 공부하네요..

     

아이가 조금 어렵게 답하는 것 같으면 손가락 대신 용돈이나 장난감을 이용해서 학습 의욕을 자극하기도 합니다. 하지만 제일 좋은 점은 아이가 아빠와 같이 어울리고 공감대를 형성하는 것이 아닌가 싶습니다. 아이도 아빠가 열심히 자극하니 지루하지 않게 공부를 하는 것 같습니다. 

     

아이가 아라비아 숫자와 수학기호에 익숙해지고 숙련할 수 있도록 별다른 기교 없이 카드를 만들었습니다. 어차피 중요한 것은 부모가 아이들과 눈을 마주치면서 이리저리 유도하면서 가르치는 것이니까요. 누구나 집에서 간단히 만들 수 있는 수준이지만 참고하실 분은 아래의 Anki 카드 뭉치를 첨부했으니 참고하시기 바랍니다.

 

감사합니다


초급_덧셈_1.apkg

초급_덧셈_2.apkg

초급_덧셈_3.apkg

초급_뺄셈_1.apkg

초급_뺄셈_2.apkg






명령 모드에서 레지스터의 데이터 붙여넣기


명령 모드에서 레지스터의 데이터를 붙여넣는 방법은 간단하다다음과 같은 형식으로 명령하면 된다


큰따옴표(")+레지스터명+붙여넣기 명령어


큰따옴표(")레지스터 이름 앞에 항상 붙이고 그 다음에 p나 P 같은 붙여넣기 명령어를 입력하면 된다.

 

붙여넣기 명령어에서 p P의 차이는 아래와 같다. 


소문자 p → 현재 행에서 커서 다음 칸부터 붙여넣는다(put)

          붙여넣을 내용이 행 전체를 복사한 것일 경우 현재 행의 아래 행에 붙여넣는다.


대문자 P → 현재 행에서 커서 위치부터 붙여넣는다(put)

          붙여넣을 내용이 행 전체를 복사한 것일 경우 현재 행의 위쪽 행에 붙여넣는다.


, 예외적인 경우가 있다. 그것은 무명("") 레지스터의 데이터를 붙여넣기 하는 경우다. 이 경우에는 큰따옴표(")+레지스터명 없이 p나 P키로 바로 붙여넣기를 할 수 있다. 즉, 앞서 배운  p나 P키는 무명(""레지스터의 데이터를 붙여넣기 하는 키였던 것이다.



편집(insert) 모드에서 레지스터의 데이터 붙여넣기


문서 작성을 위해 새로 타이핑을 할 때, 타이핑하기 어렵거나 자주 사용하는 문자열 등을 레지스터에 저장해놓고 필요할 때마다 붙여넣기를 한다면 문서 작성에 드는 품이 많이 줄어들 것이다. 


vim에서는 이러한 상황을 위하여 편집 모드에서 레지스터의 데이터를 붙여넣기 할 수 있도록 하고 있다. 


즉, 편집 모드에서 다음과 같은 형식으로 명령어를 입력하면 된다. 


<Ctrl+r>+레지스터명


편집 모드에서 <Ctrl+r> 키를 누르면 커서에 큰따옴표(")가 표시된다. 따라서 레지스터명 앞에 큰따옴표(")를 별도로 타이핑할 필요가 없다. 그 상태에서 a를 누르면 "a 레지스터에 있는 데이터가 붙여넣기 된다.

 

가령, 다음과 같은 글을 작성하고 있다고 해보자. 끝에 현재 작성하고 있는 파일의 이름을 타이핑해야 한다. 이때, <Ctrl+r>키를 누르면 커서에 큰따옴표가 나타난다. 그 상태에서 %(<shift+5>)키를 누르면 현재 작성하고 있는 파일의 이름이 붙여넣기 된다.


다음 사례를 살펴보자.


파일의 이름은   ← 커서가 비어있다. <Ctrl+r>키를 누른다.

파일의 이름은 " ← 큰따옴표(")가 나타남. %(<shift+5>)키를 누른다.

파일의 이름은 test.txt ← 파일 이름이 나타남


Anki 파일


아래는 본 포스팅의 내용을 갈무리하기 위한 Anki 파일입니다. 참고하시기 바랍니다. 



레지스터에 데이터 저장하기


레지스터는 데이터를 저장해서 다시 사용하는 용도이므로, 레지스터에 데이터를 저장하고 저장된 데이터를 붙여넣기 하는 법을 알면 레지스터 사용법은 전부 알게 된다. 이번에는 우선 레지스터에 데이터를 저장하는 방법을 알아보자.  


레지스터에 데이터를 저장할 때는 명령 모드에서 다음과 같은 형식으로 명령어를 입력한다. 


큰따옴표(")+레지스터명+복사 및 삭제 명령어


복사 명령은 y를 이용한 복사 관련 명령어들고 삭제 명령은 dx를 이용한 삭제 관련 명령들이다. (일일이 그 많은 명령어들을 나열하진 않겠다.)


사용자 임의로 데이터를 저장할 수 있는 레지스터는 읽기 전용 "/":"."%"# 레지스터를 제외한 나머지 레지스터들이다. 


읽기 전용 레지스터를 제외한 모든 레지스터에 사용자가 임의로 데이터를 저장할 수 있지만 알파벳 레지스터("a~"z)를 사용하는 것이 바람직하다. 왜냐하면 알파벳 레지스터 말고 다른 레지스터들은 자동으로 데이터가 저장되기 때문에 편집을 하면 수시로 데이터가 변경될 수밖에 없으므로 사용자가 원하는 데이터를 계속 유지하기 어렵기 때문이다



알파벳("a~"z) 레지스터에 저장하기


알파벳("a~"z) 레지스터에 데이터를 저장할 때, 레지스터를 소문자(a~z)대문자(A~Z)로 지정할 수 있다. "a와 "A는 똑같은 레지스터를 지칭한다. 하지만 데이터를 저장하는 방식을 다르게 한다. 사례를 살펴보자.


다음과 같은 두 개의 행에 작성된 데이터로 이루어진 텍스트가 있고 커서는 첫 번째 행에 있는 문서가 있다고 해보자


aaa

AAA


첫 번째 행에 커서를 두고 명령 모드에서 "cdd 라고 입력하면 "c 레지스터에 첫 번째 행 전체가 복사되어 들어간다그리고 텍스트는 AAA만 남고 커서는 첫 글자에 위치된다. 


aaa → 명령 모드에서 "cdd 라고 입력(현재 행을 삭제해서 "c 레지스터에 저장하라는 명령어)

AAA

 

AAA → 첫 번째 행이 지워지고 AAA라고 되어 있는 한 개의 행만 남고 커서는 첫 글자에 위치함


이 상황에서 :reg 명령으로 레지스터에 저장된 내용을 살펴보면 aaa가 있었던 행이 삭제되면서 그 행의 데이터가 "c 레지스터에 다음과 같이 저장된 것을 확인할 수 있다. 


"c  aaa^J

※ ^J는 개행 문자로 레지스터에는 ^J로 표시되어 있지만 실제로 붙여넣기를 하면 줄바꿈이 일어난다.


이제 남은 행에서 "cyy라고 명령하고 :reg 명령으로 레지스터에 저장된 내용을 확인하면 기존에 "c 레지스터에 저장되어 있던 aaa^J가 삭제되고 AAA^J로 바뀐 것을 확인할 수 있다. 


AAA → 명령 모드에서 "cyy라고 명령어 입력(현재 행을 복사해서 "c 레지스터에 저장하라는 명령어)

"c  AAA^J    :reg 명령으로 확인한 "c 레지스터에 저장된 데이터


만일, 앞에서 "cyy라고 명령하지 않고 "Cyy라고 명령하고 저장된 데이터 :reg 명령으로 확인하면 기존에 "c 레지스터에 저장되어 있던 aaa^J가 삭제되지 않고 단지 그 뒤에 AAA^J가 첨가된 것을 확인할 수 있다. 


AAA → 명령 모드에서 "Cyy라고 명령어 입력(현재 행을 복사해서 "c 레지스터에 첨가하라는 명령어)

"c  aaa^JAAA^J    :reg 명령으로 확인한 "c 레지스터에 저장된 데이터


, 알파벳 레지스터에 데이터를 저장할 때, 소문자로 지칭하면 기존의 레지스터에 저장된 데이터를 지우고 새로운 데이터를 저장하고 대문자로 지칭하면 해당 레지스터에 들어있는 데이터 뒤에 새로운 데이터가 첨가(append)된다


Anki 파일


아래는 본 포스팅의 내용을 갈무리하기 위한 Anki 파일입니다. 참고하시기 바랍니다. 



레지스터의 종류


vim에서 레지스터는 무명(Unnamed) 레지스터숫자 레지스터, 특수키 레지스터, 알파벳 레지스터로 대략 세 가지로 나눌 수 있다.


다시 한 번 강조하지만 레지스터 앞에는 반드시 큰따옴표(")가 붙는다.

 


무명(Unnamed) 및 숫자 레지스터


무명 레지스터큰따옴표(") 두개를 연속으로 붙여넣은 글자로 표시한 레지스터이다. 


숫자 레지스터는 0부터 9까지의 숫자의 앞에 큰따옴표(")를 붙여넣은 글자로 표시한 레지스터들을 말한다. 


우리가 vim에서 편집을 할 때 삭제하거나 복사하는 내용들이 자동으로 레지스터에 저장되는데 주로 무명(Unnamed) 레지스터숫자 레지스터에 저장된다. 


다음이 무명(Unnamed) 레지스터다. 


""  →  가장 최근복사(yank)되거나 삭제(delete)된 데이터 저장


다음은 "0부터 "9까지 10개의 숫자 레지스터다.


"0  →  가장 최근복사(yank)된 데이터만 저장

"1 ~ "9 → "1부터 "9까지 레지스터는 삭제된 데이터가 큐 형식으로 들어간다

즉 "1 레지스터는 가장 최근에 삭제된 데이터가 "2는 2번째로 최근, "9는 9번째로 최근에 삭제된 데이터가 기록된다



특수키 레지스터


특수키 앞에 큰따옴표(")가 붙은 형식으로 표시된 레지스터들이 특수키 레지스터들이다. 


이 레지스터들에는 주로 vim에서 사용한 각종 명령어나 인수 입력한 내용들, 파일 관련 정보 등이 자동으로 저장된다. 


"/ 가장 최근검색한 문자열 저장

": 가장 최근명령 라인에서 실행한 명령어 저장

". 가장 최근에 입력한 데이터(편집 모드에서 입력한 내용들) 저장

"% vim에서 현재 편집하고 있는 파일명 저장

"# 이전에 열었던 파일의 이름 저장

"- 가장 최근한 라인 이내로 삭제한 데이터 저장(하나의 라인을 전부 삭제하지 않고 x나 dw 키 등을 이용하여 일부만 삭제한 경우)



알파벳 레지스터


26개의 알파벳 소문자 a~z에 큰따옴표(")를 붙여 표시한 레지스터들이 알파벳 레지스터들이다. 


알파벳 레지스터는 자동으로 저장이 이루어지지 않고 사용자가 임의로 데이터를 저장하는 용도의 레지스터들이다


"a ~ "z

 


Anki 파일


아래는 본 포스팅의 내용을 갈무리하기 위한 Anki 파일입니다. 참고하시기 바랍니다. 



+ Recent posts