Shell-mode gives access to a shell in a normal emacs buffer, meaning you can move around and edit it as usual. A drawback is that you can not launch programs like htop or other ncurses ones, like you would in term-mode.
Look at the menu: you have several keys to interact with the shell. Some of them are:
- previous input of command line
- go to beginning of output (useful when you have a large output and want to read through the beginning)
- go to beginning of previous output group
- send the C-c command to the shell
- delete the output of last command
To launch a shell in the directory of the current buffer, have a look to shell-here: https://github.com/ieure/shell-here (available through ELPA).
If you have bad colors in the output, try using ansi-mode:
(require 'ansi-color) (defun colorize-compilation-buffer () (toggle-read-only) (ansi-color-apply-on-region (point-min) (point-max)) (toggle-read-only)) (add-hook 'compilation-filter-hook 'colorize-compilation-buffer)
You can highlight some text based on regexp (useful to see "OK" or warnings):
(add-hook 'shell-mode-hook (lambda () (highlight-regexp "\\[OK\\]" "hi-green-b")))
Make URLs clikable
(add-hook 'shell-mode-hook (lambda () (goto-address-mode )))
Make file paths clickable
Every line representing a path to a file will be colorized and made clickable, so that you can jump to that file and that line, like in compilation-mode (specially useful when compiling a program or running tests):
(add-hook 'shell-mode-hook 'compilation-shell-minor-mode)
Now you can use key bindings from the mode: use [C-x `] (or M-x next-error) (backquote) to go to the next error detected in the shell. You can't do that in an xterm !
Change directory with ido-mode
Using ido's completion system for changing directories is a big gain in usability and efficiency for emacs' shell. I urge you to check this Stack Overflow question: http://stackoverflow.com/questions/20952995/emacs-shell-change-directory-with-ido
shell-pop to pop up and pop out a shell buffer window easily (installable via ELPA).