Windows 7에서 Emacs 23.3.1을 사용하고 있습니다. Mx 쉘을 사용하여 emacs에서 쉘을 실행할 수 있다는 것을 알고 있습니다. 동시에 여러 개의 셸 창을 갖고 싶지만 Mx 셸을 두 번 입력하면 동일한 셸 창이 열립니다.
다른 쉘 윈도우를 가질 수있는 방법이 있습니까?
답변
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에서는).
답변
쉘 버퍼의 이름을로 바꿀 수 있습니다 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을 사용하여 다시 쓰기를 권장하는 필 덕분에 많은 감사를드립니다 … : \
답변
함수를 호출 할 때마다 새 쉘이 열리고 필요한 경우 자동으로 이름이 바뀝니다. 추가 된 것은 원격으로 파일을 편집하는 경우 (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)
))