updated Whenever it makes sense, I try to use emacs for my computer-based activities; surely, programs like The Gimp or a graphical web browser cannot yet be replace by emacs, but I'm making progress. I like the ways emacs gives me to automate and speed-up my tasks; I get some return-on-time-investment.
2010 or not, I still spend quite a bit of time on the console. So why not do that from within emacs? There different ways to run shells within emacs.
The simplest one is
M-x shell), which starts a simple shell,
which does not support which does not support 'graphical' console applications,
Then there are
M-x ansi-term) that do support such
ansi-term supporting colors as well (it seems to have
become the default for
term in recent emacs versions).
Another one is the nifty EShell (included with emacs), which is not just a
(simple) terminal, but also a full shell environment, and has integration with
other things in emacs. It's nice, but has some of the limitations that
has - you cannot run 'graphical' applications; also, I don't really need a
shell, as I am quite happy with zsh (zed shell) already, which is more
powerful, and I prefer a shell that works both inside and outside emacs.
For all these reasons, I am using MultiTerm, which has 'graphical' support that
ansi-term has, but adds a nice extra, namely support for multiple terminals
within emacs. I'm not fully up to date with the exact difference in the terminal
support between the two, but I haven't had any problems so far.
You can install
multi-term (put it in your
load-path), and add the
following to your
(autoload 'multi-term "multi-term" nil t) (autoload 'multi-term-next "multi-term" nil t) (setq multi-term-program "/bin/bash") ;; use bash ;; (setq multi-term-program "/bin/zsh") ;; or use zsh... ;; only needed if you use autopair (add-hook 'term-mode-hook #'(lambda () (setq autopair-dont-activate t))) (global-set-key (kbd "C-c t") 'multi-term-next) (global-set-key (kbd "C-c T") 'multi-term) ;; create a new one
C-c t will jump through your
multi-term buffers (create a new one
if it doesn not exist yet), while
C-c T unconditionally creates a new