Mở terminal từ emacs


11

Có cách nào nhanh chóng (phím tắt bàn phím) để mở trình giả lập thiết bị đầu cuối (trong trường hợp của tôi là urxvt) trong cùng thư mục với tệp trong bộ đệm emacs hiện tại không?

Câu trả lời:


15

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.


9

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.


1
Cảm ơn, tôi không biết 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ụ bashhoặc zshtrong bộ đệm emacs mà là trình giả lập thiết bị đầu cuối ( xtermhoặc urxvt...).
sinh viên

1
@student hãy xemmulti-term
Ulrich Dangel

8

Lệnh emacs M-x shellsẽ 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 shellgõ 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 commitcần tùy chọn như -mvà mật khẩu sẽ ở dạng bản rõ trên màn hình của bạn.


3

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

1

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:

  • Tạo tệp có tên 'term-here' trong / usr / local / bin / chứa
urxvtc -e bash -c "tmux -q has-session && exec tmux attach-session -d || exec tmux new-session -n$USER -s$USER@$HOSTNAME"
  • Tạo chức năng mới trong emacs
(defun term-here ()
  (interactive)
  (start-process "" nil "term-here"))
  • Ràng buộc với khóa yêu thích của bạn

Đ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.


1

Nếu bạn đã helmcà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.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.