问题标签 [eshell]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
448 浏览

emacs - eshell 上 irb 中的 irb 命令历史击键

在 emacs eshell 中运行 irb 时如何访问命令历史记录?

当我在 emacs 之外的命令行上运行 irb 时,我可以使用向上箭头来获取最后一个命令或使用 ctrl-r 来搜索命令历史记录。在 eshell 内部的 irb 中,向上箭头什么都不做(即它运行eshell-previous-matching-input-from-input而在 irb 中什么也不做),并且 ctrl-r 使用缓冲区的 emacs 反向搜索而不是搜索命令历史记录。我猜 irb 永远不会收到向上箭头键击,因为它绑定到eshell-previous-matching-input-from-input,但我不知道如何修复它。运行(global-unset-key (kbd "<up>"))不会取消绑定 eshell 中的向上箭头,而且我不确定这是否是可取的。

我知道 inf-ruby,但我更喜欢在 eshell 中使用 irb,此外up-arrow也不ctrl-r使用它。

irb中的readline可能有问题,但我不这么认为。conf.use_readline在 irb 命令历史工作正常的命令行上为零。在 eshell 中运行 irb --readline 会切换conf.use_readline为 true,但不会修复向上箭头或 ctrl-r。

0 投票
1 回答
1088 浏览

emacs - 从 eslip 向 eshell 发送命令

我正在编写一个 elisp 函数,它将命令发送到现有的 eshell 缓冲区,等待命令完成,然后发送另一个命令。例如,我想发送:

到目前为止,我尝试了以下方法,但均未成功:

1.让eshell进程使用process-send-stringaccept-process-output

但是我一直无法获得eshell进程。当前缓冲区为 eshell 时(get-buffer-process (current-buffer))返回。nil

2.在缓冲区中插入命令,使用(eshell-send-input),并在发送下一个命令之前休眠一会儿:

这种方法的问题是在 python 子进程启动之前发送了“2+3”。无论我睡觉的时间长短,都会发生这种情况。似乎睡眠冻结了所有 emacs 的子进程?

3.eshell-gather-process-output使用:如果我使用:

或者

我明白了Debugger entered--Lisp error: (wrong-type-argument arrayp nil)

但如果我使用:

我明白了Debugger entered--Lisp error: (wrong-type-argument listp ["somearg"])

所以我真的很困惑这个命令需要什么类型的参数。我还没有找到一个使用这个命令的例子。

为什么这么简单的事情会变得这么复杂?感谢您的任何输入

0 投票
2 回答
245 浏览

emacs - 如何向 eshell 添加新的 shell 命令?

请帮我调试以下简单eshell函数的定义。是的,我知道我可以定义l为别名,但我需要学习如何编写 eshell 函数。

这几乎是正确的。错误是 ls 命令的输出是在新提示之后插入的。

0 投票
1 回答
120 浏览

emacs - Eshell 历史操作(快速字符串替换)不起作用

我在 emacs 中使用 eshell。

在 bash 中,当我执行时:

它再次执行最后一个命令,将 ls 更改为 ll,如下所示:

我怎样才能在eshell中做到这一点?当我这样做时:

或者:

eshell 报错:

怎么了?谢谢。

0 投票
3 回答
3629 浏览

emacs - 使 eshell 选项卡完成的行为类似于 Bash

我如何才能使 eshell 自动完成功能表现得像 Bash 和 Emacs 一样,即它提供了一个选择列表,而不是为你任意选择一个?

例如,如果我有两个目录“Download”和“Downloads”,当我键入“Down”并点击 TAB 时,我希望会弹出另一个缓冲区并向我显示选择。但是eshell只是为我完成了它,即如果我按TAB,它会完成“下载”;再次点击 TAB,它变为“下载”。

0 投票
1 回答
37 浏览

emacs - 如何在eshell中查看带有特殊字符的目录或文件?

$在目录名称的开头有一个目录。我如何在 eshell 中 cd 进入它?

0 投票
0 回答
182 浏览

emacs - 在 Eshell 中启动 shell 命令没有提示干扰

我正在尝试自定义我的 eshell 来拦截python做两件事:

  1. 如果没有给出参数,则打开一个新窗口并运行 python(例如,$ python
  2. 如果给出了参数,则“按惯例”运行命令(例如,$ python foobar.py

到目前为止,我有这样的东西

我尝试用(message ...)一​​些不同的东西替换:

根据eshell-parse-command "python test.py"我试过的输出

但它达到了递归限制。

既然*python test.py做了我想要的,然后我尝试了

但这会将python进程置于后台并用我的输出中断标准输出eshell-prompt-function.

最后,我摆弄了一下,shell-command但我无法让它写入 eshell 缓冲区。尤其是,

给我一条Text is read only消息并将点移动到 eshell 缓冲区的开始。

我正在寻找的可能吗?

编辑 1在未定义的 情况下运行eshell/python,我试图避免别名问题:

如果test.py

当我回复提示时,在 eshell 中运行gvr test.py失败,因为 eshell 尝试执行输入而不是将其交给 python,但运行python test.py顺利进行。

我怎样才能在 eshell 中运行我自己的子进程,就像它们默认发生的那样?

0 投票
1 回答
671 浏览

emacs - Launching eshell when starting up emacs from terminal with cwd

I added a hook to my init.el to launch Emacs on eshell.

The thing is, I often launch Emacs from the terminal and would love to have eshell working directory being the working directory of the terminal from which I launched Emacs.

Let's say I'm in a directory X, and launch Emacs

I want this to happen

For now, I have added

to my init.el, as a temporary solution (changes emacs path to home), but it's not good enough.

Edit

I want to run Emacs in its gui.

Edit 2

Chris's answer worked if not using open -a emacs to launch the application. But just with the executable path instead.

0 投票
1 回答
151 浏览

emacs - 用于 RTL 文件名的 Eshell

默认情况下,Emacs 24 可以处理阿拉伯语、希伯来语和其他从右到左 (RTL) 的语言。我有多语言术语模拟器可以在 X 中处理这个问题,但我想在 emacs 中使用 eshell 来查看非英文字符文件名(我有很多)。当我使用 eshell 时,字符的顺序不正确,并且拼写成乱码。 (setq-default bidi-display-reordering t)(这是默认设置)显然没有区别。

这可能吗?

0 投票
1 回答
164 浏览

bash - 如何在我的 eshell 提示符中包含返回码和命令号?

我在使用 Emacs 时经常需要一个 shell。最近,我一直在尝试从 切换shelleshell,这样无论平台如何,我都可以使用相同的命令。

我想做的第一件事就是自定义我的提示以匹配我的bash提示。为此,我正在自定义eshell-prompt-function. 我唯一仍然缺少的是当前命令计数和最后一个返回码。我可以bash通过分别设置PS1为例如\!和来做到这一点$?。我已经尝试(eshell/echo "$?")过后者,但它不起作用(尽管如果我在 eshell 中手动执行命令它会起作用)。

编辑:我当前提示
的一部分的示例是 ,当前命令号在哪里(因此,如果我键入命令并点击它将显示),并且是返回码。bash[~][501:0]501Enter5020