Aweshell 1.0 发布

这个函数是引入的第三方package吗?

就在仓库里面的呀。

没在github仓库里搜到:sleepy:

今天抽空花了5分钟用 profiler-start/profiler-report 分析了 aweshell 启动会卡一秒的问题, 发现主要时间都耗费在 eshell-did-you-mean 这个插件上了, 主要卡在 (pcomplete-completions) 函数上.

最新版用下面的代码解决问题:

(add-hook 'eshell-mode-hook
          (lambda ()
            (run-with-idle-timer
             1 nil
             #'(lambda ()
                 (require 'eshell-did-you-mean)
                 (eshell-did-you-mean-setup)
                 ))))

在 shell 启动的时候添加一个 run-with-idle-timer 延时执行的代码, 既保证用户在发愣的时候就加载了新插件, 又保证了 aweshell 快速启动.

现在 aweshell 又是秒起了, 哈哈哈.

1 个赞

多产啊,感谢你的贡献🍺

如何在eshell prompt中添加上一个进程的exit status,就如这个bash prompt一样?

这个功能很有用,省了检查$?的时间了。

报bug.

启动aweshell之后, 如果输入 cat ~/.bashrc, 在 .bashrc之后用TAB启用补全, 会将整行命令替换成~/.bashrc的绝对路径形式. (复现bug的条件是存在文件.bashrc,当然,其它文件也可以).

就像下面两张图所示.

经排查, 我发现是函数aweshell-validate-command的锅, 只要把代码中使用它的hook注释掉,就没这个问题了.

但具体是那个函数哪里写错了,我没看出来 :thinking:

bug 报 github 吧, 这里我会忘记.

欢迎提交 PR

用aweshell一直有个痛点:删除的时候会不小心删掉输入区域以外的内容,这时会报错“args out of range”,请问可以解决吗?

我看eshell在删除内容超出范围时会显示“read-only”无法删除,当光标在输入区域外时按“Tab”键或者输入文字都会自动跳转到正确的输入位置。

我用过其他的eshell插件也没解决这个问题,反而原生的eshell支持的最好。是不是在实现上有什么困难。

刚刚看了一下,eshell没有按tab或键入跳转到输入区域的功能,我记错了,这是我理想的状态。不过eshell在输入区域外按删除键会正确跳转。

eshell 只会保护 Shell prompt 的区域,其他命令输出的区域并不会保护。 目前我个人不觉得这个问题是一个很严重的问题,如果真的对这点很在意,可以用我写的另外一个终端模拟器插件 multi-term.el

2 个赞

改了一个小时,终于把 multi-term-dedicated-toggle 的功能搬到 Aweshell 里面了: Add `aweshell-dedicated-toggle' command. · manateelazycat/aweshell@883e97a · GitHub

以后可以用 aweshell-dedicated-toggle 命令了。

底部小窗口

3 个赞

新版 aweshell-dedicated-toggle 的优势是,当打开底部终端窗口以后,完全不受 delete-other-windows 这种命令的影响,该怎么分屏怎么分屏,终端窗口一直在底部。

cd 切换目录的时候会有问题,Fix #37 issue: aweshell-dedicated-toggle failed after user use cd com… · manateelazycat/aweshell@3a79826 · GitHub 这个补丁修复了。

2 个赞

好的,我取一下

远程登录自动输入tab的bug解决了么,这个很痛苦。

目前调试的,和aweshell内置的aweshell-autosuggest有关系

可以尝试一下aweshell最新版,应该修复了。

用了一天,真的很好用。 现在就有个主要的问题,无法实现远程登录后的自动补全。 一天了没解决,但这是个大问题。 再问个使用技巧,我每次C-a都回到行首,这样想输入指令又得再移动到标识符位置。 想问下大佬是怎么直接一步到位到标识符位置的。

eshell 的 C-a 是eshell-bol,会跳到符合eshell-prompt-regexp 之后位置。 你的需求可能是要调整一下eshell-prompt-regexp