Câu trả lời:
Sự kết hợp M-!
cho phép bạn khởi chạy các lệnh shell. Bạn có thể sử dụng nó để khởi chạy một riêng biệt urxvt
.
M-! urxvt RET
Tôi vừa thử nó với xterm
(tôi không có urxvt
) và nó đã mở trong cùng thư mục với tệp trong bộ đệm.
Nếu bạn muốn xác định một phím tắt, hãy thêm một cái gì đó tương tự vào tệp init của bạn:
(global-set-key (kbd "C-c s") (kbd "M-! urxvt RET"))
Trong trường hợp của tôi, tôi đã ràng buộc phím tắt là: Ctrl+ C- S.
Tôi thường sử dụng M-x term
.
Bạn cũng có thể thanh toán:
M-x terminal
M-x shell
M-x term
đang khởi động một cách hiệu quả một trình giả lập thiết bị đầu cuối được viết bằng elisp. Từ sự giúp đỡ:
thuật ngữ
M-x ... RET Bắt đầu trình mô phỏng đầu cuối trong bộ đệm mới. (CHƯƠNG TRÌNH hạn)thuật ngữ là một hàm Lisp được biên dịch tương tác trong `term.el '.
Bắt đầu một trình giả lập thiết bị đầu cuối trong một bộ đệm mới. Bộ đệm ở chế độ Term; xem 'term-mode' để biết các lệnh sẽ sử dụng trong bộ đệm đó.
Gõ Cc b để chuyển sang bộ đệm khác.
multi-term
Lệnh emacs M-x shell
sẽ khởi động shell trong bộ đệm mới (hoặc chuyển sang bộ đệm shell hiện có, nếu có). Nếu đó là bộ đệm shell mới, nó sẽ được khởi động trong thư mục của tệp đang được truy cập trong bộ đệm hiện tại. Nếu nó là bộ đệm shell hiện có, nó sẽ vẫn nằm trong thư mục mà bạn đã để nó sau lần sử dụng cuối cùng. Để luôn có được hành vi bạn muốn, hãy nhớ tắt bộ đệm shell khi bạn thực hiện với nó ( C-x k
)
Nếu M-x shell
gõ quá nhiều, bạn có thể đặt khóa toàn cầu để bắt đầu trình bao cho bạn. Một cái gì đó giống như (global-set-key (kbd "C-x S") 'shell)
trong tệp khởi động của bạn nên làm điều đó (nhưng hãy cẩn thận không che dấu một lệnh hữu ích khác bằng phím tắt của bạn!)
Ngoài ra, hãy lưu ý rằng đây là một "thiết bị đầu cuối câm" để một số lệnh như git commit
cần tùy chọn như -m
và mật khẩu sẽ ở dạng bản rõ trên màn hình của bạn.
Tôi muốn chạy một ứng dụng thiết bị đầu cuối chuyên dụng konsole
,. Tôi muốn mở một tab mới trong konsole nếu nó đang chạy hoặc khởi động một tab nếu không.
Vì tôi còn trẻ nên tôi đã phân chia việc thực hiện giữa emacs và bash. Tôi gọi defun sau từ emacs:
(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 gọi bash script , 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
Hầu hết thời gian tôi sử dụng shell-mode
. Vì vậy, tôi rất nhiều sử dụng shell-đây . Nhưng khi tôi cần thiết bị đầu cuối bên ngoài. Tôi sử dụng urxvt-client với tmux bằng cách này:
urxvtc -e bash -c "tmux -q has-session && exec tmux attach-session -d || exec tmux new-session -n$USER -s$USER@$HOSTNAME"
(defun term-here ()
(interactive)
(start-process "" nil "term-here"))
Điều này sẽ mở urxvt-client (với tmux) trong thư mục hiện tại của bạn. Tôi liên kết nó trong dired-mode-map.
(use-package dired
:ensure nil
:ensure-system-package urxvt
:bind ((:map dired-mode-map
("," . term-here))))
Tôi chọn urxvt-client vì nó nhanh và đơn giản. Đừng quên chạy urxvt-daemon của bạn khi khởi động.
Nếu bạn đã helm
cài đặt khung hoàn thành, bạn có thể sử dụng helm-run-external-command (C-x c C-c C-x)
để chạy trình giả lập thiết bị đầu cuối mà bạn chọn hoặc bất kỳ chương trình bên ngoài nào khác trong thư mục của bộ đệm hiện tại.
M-x term
, nó có vẻ tốt nhưng không chính xác như tôi muốn. Tôi muốn bắt đầu không phải là shell (ví dụbash
hoặczsh
trong bộ đệm emacs mà là trình giả lập thiết bị đầu cuối (xterm
hoặcurxvt
...).