emacsからターミナルを開く
On 2月 14, 2021 by admin同じディレクトリにターミナルエミュレータ(私の場合はurxvt)を開くための高速な方法(キーボードショートカット)はありますか / em>を現在のemacsバッファ内のファイルとして使用しますか?
回答
組み合わせM-!
を使用すると、シェルコマンドを起動できます。これを使用して、別のurxvt
を起動できます。
M-! urxvt RET
xterm
で試しました(urxvt
)そしてそれはバッファ内のファイルと同じディレクトリで開かれました。
ショートカットを定義したい場合は、initファイルに同様のものを追加してください:
(global-set-key (kbd "C-c s") (kbd "M-! urxvt RET"))
私の場合、ショートカットを Ctrl + C – S にバインドしました。
回答
私は通常M-x term
を使用します。
チェックアウト:
-
M-x terminal
-
M-x shell
M-x term
は、elispで記述されたターミナルエミュレータを効果的に起動しています。ヘルプから:
term
Mx … RET 新しいバッファでターミナルエミュレータを起動します。(termPROGRAM)termは、`のインタラクティブにコンパイルされたLisp関数です。 term.el “。
新しいバッファでターミナルエミュレータを起動します。バッファは期間モードです。そのバッファで使用するコマンドについては、 `term-mode” を参照してください。
Cc bと入力して、別のバッファに切り替えます。
コメント
回答
emacsコマンドM-x shell
は、新しいバッファでシェルを開始します(または、既存のシェルバッファがある場合は、既存のシェルバッファに切り替えます)。「新しいシェルバッファの場合」は、のディレクトリで開始されます。現在のバッファでアクセスされているファイル。既存のシェルバッファの場合は、最後に使用した後に残したディレクトリに残ります。 r常に必要な動作を取得するには、シェルバッファーが完了したら、シェルバッファーを強制終了することを忘れないでください(C-x k
)
は入力が多すぎるため、グローバルキーを設定してシェルを開始できます。スタートアップファイルの(global-set-key (kbd "C-x S") "shell)
のようなものがそれを行う必要があります(ただし、ショートカットで別の便利なコマンドをマスクしないように注意してください!)
また、これは「ダム端末」なので、git commit
などの一部のコマンドには-m
などのオプションが必要であり、パスワードは画面にプレーンテキストで表示されます。
回答
専用のターミナルアプリケーション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
回答
ほとんどの場合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"))
- お気に入りのキーにバインドする
これにより、現在のディレクトリでurxvt-client(tmuxを使用)が開きます。私はそれをdired-mode-mapでバインドします。
(use-package dired :ensure nil :ensure-system-package urxvt :bind ((:map dired-mode-map ("," . term-here))))
urxvt-clientを選択したのは、高速でシンプルだからです。起動時にurxvt-daemonを実行することを忘れないでください。
回答
完了フレームワークがインストールされている場合、helm-run-external-command (C-x c C-c C-x)
を使用して、現在のバッファーのディレクトリで任意のターミナルエミュレーターまたはその他の外部プログラムを実行できます。
M-x term
、見た目は良いですが、私が望むものとは異なります。シェルではなく開始したい(たとえば、bash
またはzsh
emacsバッファー内ですが、ターミナルエミュレーター(xterm
またはurxvt
…)。multi-term