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で書かれた端末エミュレータを効果的に起動しています。ヘルプから:

term
M-x ... RET 新しいバッファーで端末エミュレーターを開始します。(学期プログラム)

termは、 `term.el 'にあるインタラクティブにコンパイルされたLisp関数です。

ターミナルエミュレータを新しいバッファで起動します。バッファは期間モードです。そのバッファで使用するコマンドについては、「term-mode」を参照してください。

Cc bと入力して、別のバッファーに切り替えます。


1
ありがとう、私は知りませんでしたM-x term、それはいいように見えますが、私が望むものではありません。シェルではなく(たとえば、bashまたはzshemacsバッファーで起動しますが、ターミナルエミュレーター(xtermまたはurxvt...)で起動します)
学生

1
@学生は見てみましょう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に分割しました。emacsから次の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"))
  • お気に入りのキーにバインド

これにより、現在のディレクトリで(tmuxを使用して)urxvt-clientが開きます。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.