답변:
C-u M-x shell 할 것입니다.
새 쉘의 이름을 묻는 메시지가 표시되고 기본값으로 return 키를 누르십시오 *shell*<2>
.
eshell 과도 작동합니다.
eshell을 사용하는 또 다른 요령 : 새 eshell을 시작하지 않고 M-x eshell다시 돌아가는 *eshell*
것처럼 숫자 접두사 인수를 사용하면 해당 eshell 버퍼로 이동합니다. 예를 들어 C-3M-xeshell로 이동 *eshell*<3>
합니다. 슬프게도 (eshell 대신) 쉘을 사용하면이 트릭이 작동하지 않는 것 같습니다 (적어도 내 Emacs 24.0.50.1에서는).
C-u
명령을 실행합니다 universal-argument
. 다음 명령에 인수를 삽입하는 방법입니다. 그것에 대해 더 자세히 읽을 수 있습니다. C-h k C-u
( C-h k
run describe-key
, very handy!)
C-h f eshell
( C-h f
runs describe-function
)은 함수 eshell
가 선택적 인수를 취하는 것을 보여줍니다 . Quote : 숫자 접두사 arg (에서와 같이 C-u 42 M-x eshell RET
)는 해당 숫자의 세션으로 전환하여 필요한 경우 만듭니다. 숫자가 아닌 접두사 arg는 새 세션을 만드는 것을 의미합니다.
쉘 버퍼의 이름을로 바꿀 수 있습니다 M-x rename-buffer. 그런 다음 두 번째 쉘을 시작할 수 있습니다.
쉘과 같은 화면 인터페이스를 사용하는 것도 유용 할 수 있습니다. 나는 내 자신을 작성했지만 EmacsScreen 과 같은 다른 것들이 있습니다.
4 년이 지난 후에도 일부 사람들이 여전히이 문제를보고 있다는 것을 알게되었으므로 쉘을로드하고 이름을 묻는 빠른 기능을 게시 할 것입니다. 그렇게하면 파일 정렬 전용 쉘인 "sort-files"와 하이브 쿼리 실행 전용 인 다른 "하이브"의 이름을 지정할 수 있습니다. 나는 매일 그것을 사용합니다 (emacs 24에서).
(defun create-shell ()
"creates a shell with a given name"
(interactive);; "Prompt\n shell name:")
(let ((shell-name (read-string "shell name: " nil)))
(shell (concat "*" shell-name "*"))))
이렇게하면 사용중인 버퍼에서 새 셸 인스턴스가 자동 생성됩니다. 그것을 MS 또는 그와 비슷한 것에 묶고 순간적인 기쁨 :
(defun new-shell ()
(interactive)
(let (
(currentbuf (get-buffer-window (current-buffer)))
(newbuf (generate-new-buffer-name "*shell*"))
)
(generate-new-buffer newbuf)
(set-window-dedicated-p currentbuf nil)
(set-window-buffer currentbuf newbuf)
(shell newbuf)
)
)
결과가 훨씬 끔찍한 괄호에도 불구하고 let을 사용하여 다시 쓰기를 권장하는 필 덕분에 많은 감사를드립니다 ... : \
let
변수를 로컬로 사용하려면 변수 를 바인딩 해야 합니다. 현재 currentbuf
및에 대한 전역 값이 있습니다 newbuf
.
함수를 호출 할 때마다 새 쉘이 열리고 필요한 경우 자동으로 이름이 바뀝니다. 추가 된 것은 원격으로 파일을 편집하는 경우 (dird / tramp ...) 원격 호스트에서 쉘을 열고 원격 호스트 이름으로 자동으로 이름을 바꿉니다.
(defun ggshell (&optional buffer)
(interactive)
(let* (
(tramp-path (when (tramp-tramp-file-p default-directory)
(tramp-dissect-file-name default-directory)))
(host (tramp-file-name-real-host tramp-path))
(user (if (tramp-file-name-user tramp-path)
(format "%s@" (tramp-file-name-user tramp-path)) ""))
(new-buffer-nameA (format "*shell:%s*" host))
(new-buffer-nameB (generate-new-buffer-name new-buffer-nameA))
(currentbuf (get-buffer-window (current-buffer)))
)
(generate-new-buffer new-buffer-nameB)
(set-window-dedicated-p currentbuf nil)
(set-window-buffer currentbuf new-buffer-nameB)
(shell new-buffer-nameB)
))