emacs에서 열린 터미널


11

현재 emacs 버퍼의 파일 과 같은 디렉토리 에서 터미널 에뮬레이터 (내 경우에는 urxvt)를 여는 빠른 방법 (키보드 단축키)이 있습니까?

답변:


15

이 조합을 M-!통해 쉘 명령을 시작할 수 있습니다. 당신은 별도의 시작하는 데 사용할 수 있습니다 urxvt.

M-! urxvt RET

방금 xterm( urxvt) 가 없어서 시도 했으며 버퍼의 파일과 동일한 디렉토리에서 열렸습니다.

바로 가기를 정의하려면 init 파일에 비슷한 것을 추가하십시오.

(global-set-key (kbd "C-c s") (kbd "M-! urxvt RET"))

필자의 경우 바로 가기를 Ctrl+ C-에 바인딩했습니다 S.


9

나는 보통을 사용 M-x term합니다.

체크 아웃 할 수도 있습니다.

  • M-x terminal
  • M-x shell

M-x termelisp로 작성된 터미널 에뮬레이터를 효과적으로 시작합니다. 도움에서 :

용어
M-x ... RET 새로운 버퍼에서 터미널 에뮬레이터를 시작합니다. (기간 프로그램)

term은`term.el '의 대화식 컴파일 된 Lisp 함수입니다.

새 버퍼에서 터미널 에뮬레이터를 시작하십시오. 버퍼는 용어 모드입니다. 해당 버퍼에서 사용할 명령에 대해서는 `term-mode ' 를 참조하십시오 .

다른 버퍼로 전환하려면 Cc b를 입력하십시오.


1
고마워, 나는 몰랐다 M-x term, 그것은 멋져 보이지만 정확히 내가 원하는 것이 아니다. 난 안 예를 들어 쉘 (시작하려는 bash또는 zsh버퍼하지만 터미널 에뮬레이터 (이맥스에서 xterm또는를 urxvt.) ...
학생

1
@student 살펴보기multi-term
Ulrich Dangel

8

emacs 명령 M-x shell은 새 버퍼에서 쉘을 시작합니다 (또는 기존 쉘 버퍼가있는 경우 기존 쉘 버퍼로 전환). 새로운 쉘 버퍼 인 경우 현재 버퍼에서 방문중인 파일의 디렉토리에서 시작됩니다. 기존 쉘 버퍼 인 경우, 마지막 사용 후 남은 디렉토리에 계속 남아 있습니다. 항상 원하는 동작을 얻으려면 셸 버퍼 사용을 끝내야합니다 ( C-x k)

경우 M-x shell너무 많은 입력이, 당신은 당신을 위해 쉘을 시작하는 글로벌 키를 설정할 수 있습니다. (global-set-key (kbd "C-x S") 'shell)시작 파일 과 같은 것이 그렇게해야합니다 (그러나 바로 가기로 다른 유용한 명령을 가리지 않도록주의하십시오!)

또한 이것은 "덤 터미널"이므로 git commit필요와 같은 옵션 -m및 암호와 같은 일부 명령은 화면에 일반 텍스트로 표시됩니다.


3

전용 터미널 응용 프로그램을 실행하고 싶었습니다 konsole. Konsole에서 새 탭이 실행 중이면 새 탭을 열거 나 그렇지 않으면 실행 중입니다.

내가 어렸을 때부터 구현을 emacs와 bash로 나누었습니다. 나는 이맥스에서 다음 defun을 부른다.

(defun bk-konsoles ()
  "Calls: bk_konsoles.bash -- which starts new tab in a running konsole,"
  (interactive)
  (let ((curDir default-directory))
    (shell-command (concat "bk_konsoles.bash \"" curDir "\" 2>&1 > /dev/null & disown") nil nil)
    (kill-buffer "*Shell Command Output*")))

defun은 bash 스크립트를 호출합니다 bk_konsoles.bash.

#!/bin/bash

myPath=`echo $@ | sed 's/.$//'`

runningKonsole=`ps -e | grep konsole`
if [ "$runningKonsole"!="" ]; then
    if [ "$@"!="" ]; then
        konsole --new-tab --workdir "$myPath" 2>&1 > /dev/null
    else
        konsole --new-tab 2>&1 > /dev/null
    fi
    wmctrl -a " – Konsole"
else
    konsole
fi

1

내가 사용하는 대부분의 시간 shell-mode. 그래서 나는 shell-here을 많이 사용 합니다 . 그러나 외부 터미널이 필요할 때. 나는 이것을 사용하여 tmux와 함께 urxvt-client를 사용합니다 :

  • / usr / local / bin /에 'term-here'라는 파일을 작성하십시오.
urxvtc -e bash -c "tmux -q has-session && exec tmux attach-session -d || exec tmux new-session -n$USER -s$USER@$HOSTNAME"
  • emacs에서 새로운 기능 만들기
(defun term-here ()
  (interactive)
  (start-process "" nil "term-here"))
  • 좋아하는 키에 바인딩

현재 디렉토리에 urxvt-client (tmux 포함)가 열립니다. dired-mode-map에 바인딩합니다.

(use-package dired
  :ensure nil
  :ensure-system-package urxvt
  :bind ((:map dired-mode-map
           ("," . term-here))))

빠르고 간단하기 때문에 urxvt-client를 선택합니다. 시작할 때 urxvt-daemon을 실행하는 것을 잊지 마십시오.


1

당신이있는 경우 helm완료 프레임 워크가 설치되어, 당신이 사용할 수있는 helm-run-external-command (C-x c C-c C-x)선택 또는 현재 버퍼의 디렉토리에있는 다른 외부 프로그램의 터미널 에뮬레이터를 실행합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.