I created multi-term.el
and use it many years.
Now I'm a big fans of eshell
.
So I wrote aweshell.el
to extend eshell
with these features:
- Create and manage multiple eshell buffers.
- Add some useful commands, such as: clear buffer, toggle sudo etc.
- Display extra information and color like zsh, powered by `eshell-prompt-extras'
- Add Fish-like history autosuggestions.
- Validate and highlight command before post to eshell.
- Change buffer name by directory change.
- Add completions for git command.
- Fix error `command not found' in MacOS.
- Integrate `eshell-up'.
- Unpack archive file.
- Open file with alias e.
- Output "did you mean ..." helper when you typo.
- Make cat file with syntax highlight.
- Alert user when background process finished or aborted.
- Complete shell command arguments like IDE feeling.
- Dedicated shell window like IDE bottom terminal window.
Put aweshell.el
, eshell-prompt-extras.el
, exec-path-from-shell.el
to your load-path.
The load-path is usually ~/elisp/.
It's set in your ~/.emacs like this:
(add-to-list 'load-path (expand-file-name "~/elisp"))
(require 'aweshell)
Bind your favorite key to functions:
aweshell-new
aweshell-next
aweshell-prev
aweshell-clear-buffer
aweshell-sudo-toggle
aweshell-switch-buffer
aweshell-dedicated-toggle
aweshell-dedicated-open
aweshell-dedicated-close
If you prefer to use a package manager, you can use quelpa-use-package.
(use-package aweshell
:quelpa (abc-mode :fetcher github :repo "manateelazycat/aweshell"))
Customize variables below by:
M-x customize-group RET aweshell RET
aweshell-complete-selection-key
aweshell-clear-buffer-key
aweshell-sudo-toggle-key
aweshell-use-exec-path-from-shell
aweshell-dedicated-window-height
Customize prompt as directed in eshell-prompt-extras' README.
You can use command aweshell-dedicated-toggle
to pop dedicated window at bottom of frame.
In alias file:
alias up eshell-up $1
alias pk eshell-up-peek $1
Other customization of eshell-up:
(setq eshell-up-ignore-case nil)
(setq eshell-up-print-parent-dir t)
If you got error that random space insert, you perhaps need turn off aweshell-auto-suggestion-p
with (setq aweshell-auto-suggestion-p nil)
, meantime auto suggestion feature will turn off.