現在のemacsバッファー内のファイルと同じ同じディレクトリでターミナルエミュレーター(私の場合はurxvt)を開く高速な方法(キーボードショートカット)はありますか?
組み合わせ 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で記述された端末エミュレータを効果的に起動しています。ヘルプから:
用語
M-x ... RET新しいバッファでターミナルエミュレータを起動します。 (期間プログラム)termは、 `term.el '内のインタラクティブにコンパイルされたLISP関数です。
ターミナルエミュレータを新しいバッファで起動します。バッファは期間モードです。そのバッファーで使用するコマンドについては、 `term-mode 'を参照してください。
C-c bと入力して、別のバッファーに切り替えます。
EmacsコマンドM-x Shell
は、新しいバッファーでシェルを開始します(または、既存のシェルバッファーがある場合はそれに切り替えます)。新しいシェルバッファの場合は、現在のバッファでアクセスされているファイルのディレクトリから開始されます。それが既存のシェルバッファである場合は、最後に使用した後に残したディレクトリに残ります。常に希望する動作を得るには、シェルバッファーを使い終わったら、必ずキルしてください(C-x k
)
M-x Shell
の入力が多すぎる場合は、グローバルキーを設定してシェルを起動できます。スタートアップファイルの(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を使用します:
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"))
これにより、現在のディレクトリで(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を実行することを忘れないでください。
helm
完了フレームワークがインストールされている場合は、helm-run-external-command (C-x c C-c C-x)
を使用して、選択したターミナルエミュレーターまたは現在のバッファーのディレクトリにある他の外部プログラムを実行できます。