emacs shell모드에서 파일을 여는방법

acooda의 이미지

emacs shell모드 사용하면서 궁금한점 두가지가 있습니다.

첫번째는.
emacs shell모드에서 작업 하다가 그자리에서 편집하고 싶은 파일이 있으면
C-c C-f 로 저 파일을 따로 찾아서 열어야 되나요?
emacs shell모드바로 그자리에서 여는 방법이 없을까요?

두번째는.
emacs shell모드에서 화살표 위아래 누르면 커서가 돌아당깁니다.
그냥 쉘에서 처럼 히스토리 저장된 명령어들 나오게 할수 없을까요?

putty에서 이막스 올려노쿠 쓰고 있는데 emacs shell모드가 부실해서 쉘 작업이 필요 할땐 C-z 를 눌러서 뒤에다 노쿠 씁니다. 저거만 된다면 putty창 하나만 열어도 편하게 쓸수 있을거 같네요 :roll:

정재윤의 이미지

일단 eshell이라는 순수 elisp으로 만들어진 shell이 있습니다. 최근 버젼에는 디폴트로 들어가 있습니다. zsh과 같은 강력한 glob기능이 우선 돋보이고, 대부분의 기본 명령어를 emacs lisp으로 직접 만들었기 때문에 windows같은 이 기종에서도 사용이 가능합니다.

여튼 shell모드에 대해서 한정해서 답을 드리겠습니다.
1. 파일 편집
Kai가 전에 얘기한 방식이 있습니다.

(add-hook 'shell-mode-hook  'shell-integration-hook)
(defun shell-integration-hook ()
  (make-local-variable 'comint-input-sender)
  (setq comint-input-sender 'shell-integration-sender))

(defun shell-integration-sender (process command)
  (setq command command)
  (let* ((program (comint-arguments command 0 0))
	 (func (intern (format "shell/%s" program))))
    (if (not (fboundp func))
	(comint-simple-send process command)
      (comint-simple-send process (format "# %s" command))
      (funcall func process command))))

와 같이 하시고,

(defun shell/vi (process command)
  (find-file (comint-arguments command 1 1) nil))

(defun shell/make (process command)
  (compile command))

등과 같이 하시면, shell에서 "vi filename" 하시면 filename이 emacs에서 열리고, make를 치면 알아서 compile버퍼로 넘어가서 실행이 됩니다.

2. 그에 해당하는 명령이 M-p, M-n입니다.

   (add-hook 'shell-mode-hook  'shell-custom-bindings) 
   (defun shell-custom-bindings ()
     (define-key shell-mode-map (kbd "<up>") (kbd "M-p"))
     (define-key shell-mode-map (kbd "<down>") (kbd "M-n"))
     (define-key shell-mode-map (kbd "C-p") (kbd "M-p"))
     (define-key shell-mode-map (kbd "C-n") (kbd "M-n")))
LispM의 이미지

아아 이런 이야기들은 http://emacs.kldp.org/wiki/wiki.php 에 채워졌으면 더 좋았을 텐데, 때로는 KLDP BBS가 그런 일까지 맡아하는 것이 원망스럽군요 :(

http://lisp.or.kr http://lisp.kldp.org - 한국 리습 사용자 모임

acooda의 이미지

다들 emacs가 좋다고들 하고 쓰시는 분들도 많은거 같은데
적어도 한국에는관련 emacs관련 컨텐츠가 너무 부족한거 같습니다. 일부 고수님들은 하우투에 자세하게 나왔다, emacs내의 튜토리얼을 참고해라, 말씀하시는데, 저같은 초보한테는 그게 좀처럼 쉽지만은 않습니다.
http://emacs.kldp.org 그나마 한국에 유일한 emacs관련(제갈알기로는..) 사이트인데, emacs관련 내용이 kldp보다 너무 없어서 저도 많이 아쉽네요. 적어도 emacs사용하시는분들의 .emacs설정파일만 보고 따라만 해도 emacs처음 배우시는 분들에겐 많이 도움이 될텐대..아쉽네요.

저같은 경우는
영어가 너무 딸린지라(-_-) http://www.emacswiki.org 같은곳에서는 예제 설정파일만 보고 내 설정파일에 그대로 붙여놓고 실행해보고 안되면 버리고 되면 이게 뭐하는 기능인지 모니터만 뚫어지게 쳐다보면서 설정해왔습니다.-_-

http://emacs.kldp.org 를 몇몇 고수님들게서 선동하여 처음 접하는 사람들을 위해 이끌어 주시면 주시면, 그 다음부터는 금방 활성화 될수 있을거 같은데... 쿨럭;;
쓸대없이 넉두리를 늘어 놓았군요 :oops:

오늘 정재윤님에게 정말로 감사합니다.
위의 설정으로 제가 원하는 대로 사용할수가 있었습니다. 사실 위의 설정파일의 내용은 잘 모르나 이렇게 사용해서 원할하게 작동되는거 보면 진짜 너무 기분이 좋습니다.
정재윤님 덕분에 emacs의 세계로 한걸음 더 나아가는군요 :P
감사합니다.

ps. http://jmjeong.com/index.php?display=Emacs 여기에 정재목님이라고 계시는데 혹시 정재윤님과 형제? (혹시나 해서 물어봤습니다;;; )

노트북 잃어버렸음;;

정재윤의 이미지

흑.. LispM님이 얘기 하신 것 처럼 emacs.kldp.org에 올려야 하는데... 에구 다 제가 게으른 죄입니다 ㅠ_ㅠ

흠 근데 선동이라 무신 선동을 해야할까요.
여러 한글 자료가 있는 것으로 알고 있는데요. 전에 제가 linux magazine에 5개월 정도 기고한 글도 있고. (흠 이것도 html로 변환을 하다가 지금은 계속 변환을 안하고 있네요. ㅠ_ㅠ 누가 wiki로 변환해 주실 분이 있으시면 원본 글을 보내드리겠습니다 ㅠ_ㅠ)

@ 정재목님이랑 email교환 몇번, 그리고 개인적으로 친구 실험실 선배라 한두번 실험실에 놀러 갔다가 한두번 직접 본 적이 있기는 합니다만, 저랑 친척인지는 잘 모르겠습니다 ㅠ_ㅠ

@@근데 rss feed가 왜 지속적으로 안될까요? 여기 글이 올라온 것도 rss에서는 못 본거 같은데. 제가 쓰고 있는데 aggregator가 바보라서 그런건가요 -_-a;;

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.