从emacs打开终端


11

有没有一种快速的方法(键盘快捷键)可以在与当前emacs缓冲区中的文件相同的目录中打开终端仿真器(在我的情况下为urxvt)?

Answers:


15

该组合M-!允许您启动Shell命令。您可以使用它来启动一个单独的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 term有效地启动了用elisp编写的终端模拟器。从帮助中:

术语
M-x ... RET 在新缓冲区中启动终端仿真器。(学期课程)

term是`term.el'中的一个交互式编译的Lisp函数。

在新的缓冲区中启动终端仿真器。缓冲区处于Term模式;有关在该缓冲区中使用的命令,请参见“ term-mode”

键入Cc b切换到另一个缓冲区。


1
谢谢,我不知道M-x term,这看起来不错,但并不是我想要的。我要开始不是shell(例如bash或者zsh在Emacs的缓冲区,但终端仿真器(xtermurxvt......)。
学生

1
@学生看看multi-term
Ulrich Dangel,2012年

8

emacs命令M-x shell将在新缓冲区中启动外壳程序(如果存在,则切换到现有的外壳程序缓冲区)。如果是新的Shell缓冲区,它将在当前缓冲区中正在访问的文件的目录中启动。如果它是现有的Shell缓冲区,那么它仍将位于上次使用它后离开的目录中。为了始终获得所需的行为,请记住在完成后杀死shell缓冲区(C-x k

如果M-x shell键入过多,则可以设置一个全局密钥来为您启动一个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-。但是当我需要外部端子时。我将urxvt-client与tmux一起使用:

  • 在/ 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守护程序。


1

如果helm安装了完成框架,则可以使用它helm-run-external-command (C-x c C-c C-x)来运行您选择的终端仿真器或当前缓冲区目录中的任何其他外部程序。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.