터미널과 vim을 이용한 racket 코딩

11 Mar 2012

줄곧 DrRacket에서 코딩을 했는데 github에 코드를 올리면서 DrRacket이 자동으로 추가하는 코드의 존재를 알게 되었습니다. 별건 아니고 언어와 teachpack을 설정하는 코드들이었지요.

;; The first three lines of this file were inserted by DrRacket. They record metadata
;; about the language level of this file in a form that our tools can easily process.
#reader(lib "htdp-beginner-reader.ss" "lang")((modname test) (read-case-sensitive #t) (teachpacks ((lib "convert.ss" "teachpack" "htdp") (lib "draw.ss" "teachpack" "htdp"))) (htdp-settings #(#t constructor mixed-fraction #f #t none #f ((lib "convert.ss" "teachpack" "htdp") (lib "draw.ss" "teachpack" "htdp")))))
(define (square x)
  (* x x))

그렇긴해도 제가 코딩하지도 않은 코드를 자동을 추가하다니라는 약간 괘씸한(?) 마음이 들어 이참에 racket 명령과 제가 좋아하는 vim을 이용해서 htdp 문제를 풀어보기로 마음을 먹었습니다.

또, racket 도움말에 Command-Line Tools and Your Editor of Choice 라는 내용을 이미 제공하고 있어 어렵지 않게 시도해볼 수 있었습니다. emacs를 좋아하는 누군가가 emacs 버전을 만들어줘도 좋겠지요? ^^

터미널에서 racket 실행하기

racket이 설치된 위치의 bin 디렉토리로 들어가서 명령어를 실행하거나 아니면 명령어의 절대 경로를 입력해서 실행할 수도 있겠지만 매번 그러기는 귀찮으므로 다들 아시는 방법대로 PATH에 racket의 bin 디렉토리 경로를 추가해줍니다. 제 경우에는 bash shell을 사용하고 racket은 ~/tools에 설치되어 있습니다.

~/.bash_profile

export PATH=$PATH:~/tools/Racket\ v5.2/bin

이제 아무 위치에서나 racket을 실행할 수 있습니다.

heaven:~ god$ racket Welcome to Racket v5.2. >

vim 설정

vim 설정과 관련된 내용은 여기 설명된 내용을 참고하여 착실하게 .vimrc에 racket 관련 내용을 추가 해주면 됩니다. 또 코드의 syntax highlight를 위해 vim-racket 플러그인을 설치해줍니다.

vim-racket은 쉬운 설치를 위해 pathogen을 이용합니다.

우선 pathogen을 설치합니다.

heaven:~ god$ mkdir -p ~/.vim/autoload ~/.vim/bundle heaven:~ god$ curl -so ~/.vim/autoload/pathogen.vim https://raw.github.com/tpope/vim-pathogen/HEAD/autoload/pathogen.vim

vim-racket을 설치합니다.

heaven:~ god$ cd ~/.vim/bundle heaven:~ god$ git clone https://github.com/wlangstroth/vim-racket.git

.vimrc에 pathogen 관련 설정과 racket syntax 관련 설정을 추가합니다.

~/.vimrc

call pathogen#infect()

if has("autocmd")
    au BufReadPost *.rkt,*.rktl set filetype=scheme
endif

if has("autocmd")
    au BufReadPost *.rkt,*.rktl set filetype=racket
    au filetype racket set lisp
    au filetype racket set autoindent
endif

이러고 나면 vim에서 예쁘게 racket 코드를 작성할 수 있어요.

참 파일의 맨 처음에 언어를 지정해줘야 하는 거 잊지마세요~

#lang racket

Racket 파일 실행하기

간단히 racket 파일이름을 적어주면 됩니다.

heaven:htdp god$ racket PART-I/ex.2.2.1.rkt

racket 코드에 정의만 있는 경우 REPL을 실행해서 racket 파일을 로드합니다.

heaven:htdp god$ racket Welcome to Racket v5.2. > (enter! "PART-I/ex.2.2.1.rkt") > (Fahrenheit->Celsius 212) 100 >

참고로 터미널용 racket REPL은 좀 많이 구립니당. Up/down 키로 이전에 실행한 명령들로 이동하는 것이 안되요. ㅠㅠ falsetru님이 주신 팁을 이용하면 이 문제가 해결됩니다. racket을 실행할 때 다음과 같은 옵션을 주어 실행하거나,

heaven:htdp god$ racket -il readline

다음과 같이 관련 내용을 .racketrc에 추가해줍니다.

heaven:htdp god$ echo '(require readline)' >> ~/.racketrc

이걸로 vim에서 racket 코딩하시는데 도움이 되셨길 바라면 전 이만 총총.

설정 환경

참고자료

Based on Bootstrap. Icons from Font Awesome. Web fonts from Google. Generated by Jekyll.