emacs에서 vim 스타일로 입력하는 것에 대한 의견
글쓴이: hudoni / 작성시간: 월, 2007/07/02 - 5:07오후
저는 vim + plugin을 사용하고 있습니다.
그런데 emacs에 대한 사람들의 극찬을 듣고서, emacs에 대해서 정보를 검색해봤습니다.
vim 과 emacs 사이에 미묘한 기류(?)가 흐르더군요 ^ㅡ^;
제가 살펴본 정보와 주관적인 판단으로는
- vim은 가볍고 편집의 효율성이 굉장히 뛰어나다.
- emacs는 통합개발환경으로서의 효율성이 vim을 확실히 능가한다.
현재 vim을 사용하는 입장에서 편집은 굉장히 만족하고 있지만,
많은 분들의 의견대로 여러가지 요소를 생각한 개발환경으로는 조금 부족함을 느끼고 있습니다.
제가 잘 몰라서 올리는 질문인데;;
- 그렇다면 emacs를 사용하되 vim 입력방식을 따르면 되지 않을까?
하는 것입니다. 사용은 안해봤지만 emacs에서 vim 입력방식을 지원하는 것으로 봤습니다.
emacs를 사용하고 계시는 분의 입장에서 위의 질문에 어떻게 생각하시는지 궁금합니다.
emacs에서 vim 입력 방식을 사용하는 것이 괜찮은 방법일지? 아니라면 단점이 될만한 점은 무엇인지?
아니면 emacs의 입력방식을 따라가는 것이 훨씬 좋은 것인지 궁금합니다.
Forums:
emacs 사용자는
emacs 사용자는 아니지만, 제 생각에는 emacs로 가면, emacs 의 법을 따르는게 좋다고 봅니다.
저도 vim 쓰지만, 가장 아쉬운 건 디버거와 연동하는 것 정도입니다.
나머지 프로그램을 빌드하거나, 편집하는 거는 vim도 크게 아쉬운 점이 없습니다.
하지만, emacs 라 해도, 모든 컴파일러의 디버거와 연동이 되진 않습니다.
예를 들어, 비쥬얼 C++ 의 디버거와는 연동이 안됩니다.
그런 면에서 저는 편집기와 디버거를 따로 쓰도록 단련을 해왔고, 그래서 vim 은 무척 마음에 드는 편집기입니다...
하지만, emacs 의 광범한 기능들을 얘기하는 글을 보면서, 가끔 emacs 를 써볼까 하는 생각도 안드는 건 아닙니다. ^^
Orion Project : http://orionids.org
편집기와 디버거를 따로
편집기와 디버거를 따로 사용하는 방향으로 가는 것도 매력적이네요.
하지만 대부분은 특정 환경에 국한되어 작업하는 것을 생각해보면, 비효율적이라는 생각도 듭니다.
vim 방식의 입력을 가능하게 해주는 viper 패키지를 설치해서 잠깐 사용해봤는데
뭔가 딱히 내키지는 않네요;;
저는 개인적으로 emacs의 Caps Lock과 Alt의 압박이 심한데 .. ;
vim을 쓰다가 emacs로 넘어가신 분들이나, 둘 다 사용 하시는 분들은
두가지 툴의 [입력방식]만 생각해 볼 때, 어떤 의견을 가지고 있는지 궁금합니다.
말하시는 입력방식이
말하시는 입력방식이 무엇을 뜻하는지는 잘 모르겠지만, emacs를 주로 사용하지
않으신다고 생각하고 조금 적어보겠습니다. p.s 저는 vim의 경우(vim이 vi를 말하는게
맞는가요...) 단순히 파일을 열어서 원하는 부분을 고치고 닫는 것 밖에는 하지
못합니다.
emacs는 자체적으로 elisp(emacs lisp)이라는 언어를 지원합니다. elisp은 c로
만들어졌습니다. emacs는 c로 만들어진 elisp build-in 함수들로 구동된다고 보시면
됩니다.
이러한 빌드인 함수들은 emacs 소스의 'src' 디렉토리에 있습니다. 그리고 이러한
빌드인 함수로 만들어진 함수들은 'lisp' 디렉토리에 있습니다. 'src' 디렉토리에는
'c'확장명을 가진 파일들이 있습니다. 'lisp' 디렉토리에는 'el' 확장명을 가진
파일들이 있습니다. 'el'의 확장자는 elisp 언어로 만들어진 파일임을 뜻합니다.
emacs가 시작을 하면 빌드-인 함수를 읽어들이고 다시 'lisp' 디렉토리에 있는 'el'
파일을 읽어들일 것입니다.
이러한 빌드인 함수들을 이용하여 'next-line' 'move-beginning-of-line' 같은
함수들을 만듭니다. vi 에서는 전자는 'j' 키 후자는 모르겠군요(라인의 처음으로
이동하는 함수입니다.)의 역활을 합니다. 이 함수들은 'lisp/simple.el'에
존재합니다. 이 함수는 'lisp/bindings.el'에 다음과 같은 식으로 정의되어 있습니다.
첫줄은 'next-line' key를 C-n(control-n 키)로 정의하겠다는 뜻입니다. 마지막줄은
'move-beginning-of-line' 함수를 C-a(control-a 키)로 정의하겠다는 이야기
입니다.
이렇게 단축키들은 모두 위와 비슷한 정의에 의해서 결정됩니다. 다시말하면 원하는
함수를 만들어서 단축키를 지정하면, 원하는 단축키가 만들어 집니다.
예전에 읽어본 글에 따르면, vi는 두가지 모드가 존재한다고 알고 있습니다. 뷰모드와
편집모드. 정확히 생각이 안나지만 이 두가지 모드인 것 같습니다. 전자는 j,k,l 등을
이용하여 커서를 이동시키는 모드를 뜻하고, 후자는 입력 즉 편집을 하는 모드를
뜻합니다.
emacs 에는 여러가지 mode들이 존재합니다. C 언어를 편집할 때 사용하는 'c-mode',
python 언어를 편집할 때 사용하는 'python-mode' 등. 뿐만아니라 emacs 사용자들은
elisp 이라는 언어를 이용하여 여러가지 응용프로그램을 만들어 놓았습니다. emacs
상에서 메일을 읽을 수 있게하는 'gnus', 웹서핑을 할 수 있게하는 'w3m-emacs',
데이터베이스를 관리할 수 있게 하는 'BBDB', 'planner', 'muse' 등등 많은 사람들이
만들었고, 지금도 어디에서는 만들고 있을 것입니다.; emacs 가 편집기가 아닌
운영체제로 치부받는 것도 이러한 응용프로그램들 때문입니다. 이러한
응용프로그램들은 각각 자신의 모드를 가지고 있는 경우가 대부분입니다. 자신의
모드가 실행되면 응용프로그램은 응용프로그램의 범위 내에서 기존의 변수를
재설정합니다. 필요한 라이브러리를 불러온다던지 단축키를 재정의 한다던지 하는 일
또한 합니다. 이것의 의미는 내가 'vi-mode'를 만들어서, 혹은 기존의 만들어진 모드를
실행하면 이것을 vi의 입력방식을 택하는 것이 가능하다는 것입니다. 다시말하면,
emacs에서 뷰모드와 편집모드를 왔다 갔다 하면서 편집을 할 수 있다는 이야기입니다.
만약에 질문자께서 뷰모드와 편집모드를 왔다 갔다하면서 편집을 하는 vi의 편집방식을
emacs에 적용하겠다는 것이 아니라, 단순히 단축키를 vi식으로 쓰시겠다면, 뷰모드에서
쓰이는 여러 단축키들을 사용하시지 못하실 것입니다. 왜냐하면 기본적인 emacs에서는
vi 식의 뷰모드가 없기 때문입니다. 만약 'j' key를 'new-line'으로 정의하여 놓는다면
편집을 하는데에 'j'를 입력하지 못할 겁니다. 그래서 편집모드에서 컨트롤키를
이용하여 커서를 이동시키는 것일 겁니다.
단축키 문제는 그렇게 신경을 쓰지 않아도 좋지않을까 생각합니다. 쓰시다가 바꾸고
싶으시면 바꾸시면 되기 때문입니다. 하지만 컨트롤과 알트를 사용하는 emacs의 방식을
사용하시기를 권고합니다. 대부분의 emacs 응용프로그램들과 모드(이 또한
응용프로그램입니다)들이 컨트롤과 알트를 사용하는 방식을 따르고 있기 때문입니다.
vi를 제대로 쓸줄은 모르지만, emacs의 방식만으로도 vi에 못지않은 [입력방식]을
가지실 수 있을 것이라 생각됩니다. 동물적인 반복이 그것을 만들어 줄 것이라
생각합니다.
만약 'Caps Lock' 키를 control 키로 바로꾸어 사용하고 계시지 않으시다면, 꼭
바꾸어서 사용하시길 권유합니다.
------------------------------------------
FC5, KDE, emacs
답변메일이 오지 않는 이유가 멀까...
로그인하는게 점점 귀찮아지는군요...
------------------------------------------
emacs user
viper-mode를
viper-mode를 이용하시면 vi 입력형태로 view모드와 편집모드 왔다갔다 하면서 입력가능합니다.
심지어 ESC키 눌러서 :wq 등의 명령어모드(?)도 사용가능합니다
ptmono님께서 올려주신
ptmono님께서 올려주신 글을 보니까 또 emacs를 사용해보고 싶은
욕구가 생기게 되네요 ㅋ
저는 vim와 emacs를 둘다 활용하고 싶은 생각이 들었는데
emacs의 타이핑 방식과 vim의 타이핑 방식이 많이 다르다는 점에서 갈등을 했습니다.
emacs의 입력 방식이 익숙해지는게 쉬운일도 아닌 듯 보이고,
vim도 계속 사용하고 싶은 생각이 있어서;;
그러면 emacs에서 vim의 입력방식을 따라서 사용하면 어떨까 .. 이런 생각 들었는데
emacs는 emacs의 방식을 따라야 진짜 의미가 있어보입니다.
답변 감사드립니다. ^ㅡ^
모든 프로그래밍
모든 프로그래밍 언어는 lisp으로,
모든 편집기는 emacs로 귀결될 것입니다.
(어째 요즘 많이 본 rose...님같은 어투가 되어버린듯 ^^)
이건 저의 생각같기도... 어디선가 읽었던 같기도...
-----
오늘 나의 취미는 끝없는, 끝없는 인내다. 1973 法頂
-----
오늘 나의 취미는 끝없는, 끝없는 인내다. 1973 法頂
전 원래 vim을
전 원래 vim을 써왔는데요, 약간의 외부 압력으로 이맥스를 써야 되어서 이맥스를 써 보니
tab을 누르면 자동으로 열이 맞춰져서 편한 점은 있더군요. 하지만 단축키는 불편...
그래서 지금까지 viper-mode를 그럭저럭 써 왔습니다만, 완전히 vim과 같지는 않기
때문에 약간 불편함이 있었습니다. 그래서 그때 vim-mode는 없을까 찾아 봤었는데 못 찾았습니다.
그런데 최근에 다시 검색해 보니 vimpulse.el 이라고 있네요.
visual 모드 키가 먹더군요. 감격스러웠습니다.
http://www.emacswiki.org/cgi-bin/wiki/vimpulse.el
파일 자체에 설치방법이 있네요. 써 보세요.
댓글 달기