问题标签 [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.
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。
emacs - 从 eslip 向 eshell 发送命令
我正在编写一个 elisp 函数,它将命令发送到现有的 eshell 缓冲区,等待命令完成,然后发送另一个命令。例如,我想发送:
到目前为止,我尝试了以下方法,但均未成功:
1.让eshell进程使用process-send-string
和accept-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"])
所以我真的很困惑这个命令需要什么类型的参数。我还没有找到一个使用这个命令的例子。
为什么这么简单的事情会变得这么复杂?感谢您的任何输入
emacs - 如何向 eshell 添加新的 shell 命令?
请帮我调试以下简单eshell函数的定义。是的,我知道我可以定义l
为别名,但我需要学习如何编写 eshell 函数。
这几乎是正确的。错误是 ls 命令的输出是在新提示之后插入的。
emacs - Eshell 历史操作(快速字符串替换)不起作用
我在 emacs 中使用 eshell。
在 bash 中,当我执行时:
它再次执行最后一个命令,将 ls 更改为 ll,如下所示:
我怎样才能在eshell中做到这一点?当我这样做时:
或者:
eshell 报错:
怎么了?谢谢。
emacs - 使 eshell 选项卡完成的行为类似于 Bash
我如何才能使 eshell 自动完成功能表现得像 Bash 和 Emacs 一样,即它提供了一个选择列表,而不是为你任意选择一个?
例如,如果我有两个目录“Download”和“Downloads”,当我键入“Down”并点击 TAB 时,我希望会弹出另一个缓冲区并向我显示选择。但是eshell只是为我完成了它,即如果我按TAB,它会完成“下载”;再次点击 TAB,它变为“下载”。
emacs - 如何在eshell中查看带有特殊字符的目录或文件?
我$
在目录名称的开头有一个目录。我如何在 eshell 中 cd 进入它?
emacs - 在 Eshell 中启动 shell 命令没有提示干扰
我正在尝试自定义我的 eshell 来拦截python
做两件事:
- 如果没有给出参数,则打开一个新窗口并运行 python(例如,
$ python
) - 如果给出了参数,则“按惯例”运行命令(例如,
$ 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 中运行我自己的子进程,就像它们默认发生的那样?
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.
emacs - 用于 RTL 文件名的 Eshell
默认情况下,Emacs 24 可以处理阿拉伯语、希伯来语和其他从右到左 (RTL) 的语言。我有多语言术语模拟器可以在 X 中处理这个问题,但我想在 emacs 中使用 eshell 来查看非英文字符文件名(我有很多)。当我使用 eshell 时,字符的顺序不正确,并且拼写成乱码。 (setq-default bidi-display-reordering t)
(这是默认设置)显然没有区别。
这可能吗?
bash - 如何在我的 eshell 提示符中包含返回码和命令号?
我在使用 Emacs 时经常需要一个 shell。最近,我一直在尝试从 切换shell
到eshell
,这样无论平台如何,我都可以使用相同的命令。
我想做的第一件事就是自定义我的提示以匹配我的bash
提示。为此,我正在自定义eshell-prompt-function
. 我唯一仍然缺少的是当前命令计数和最后一个返回码。我可以bash
通过分别设置PS1
为例如\!
和来做到这一点$?
。我已经尝试(eshell/echo "$?")
过后者,但它不起作用(尽管如果我在 eshell 中手动执行命令它会起作用)。
编辑:我当前提示
的一部分的示例是 ,当前命令号在哪里(因此,如果我键入命令并点击它将显示),并且是返回码。bash
[~][501:0]
501
Enter
502
0