unofficial mirror of help-gnu-emacs@gnu.org
 help / color / mirror / Atom feed
* Run multiple shells in Emacs.
@ 2021-05-31 23:13 Hongyi Zhao
  2021-05-31 23:18 ` Jean Louis
  2021-05-31 23:23 ` Óscar Fuentes
  0 siblings, 2 replies; 7+ messages in thread
From: Hongyi Zhao @ 2021-05-31 23:13 UTC (permalink / raw)
  To: help-gnu-emacs

What's the preferable way to open multiple shell windows at the same
time in Emacs?

After searching with Google, I find the discussion here:

<https://stackoverflow.com/questions/6532998/how-to-run-multiple-shells-on-emacs>

Basically, there are two types of methods to accomplish this:

1. Write a simple function, just as the one suggested on the above website:

(defun create-shell ()
    "creates a shell with a given name"
    (interactive);; "Prompt\n shell name:")
    (let ((shell-name (read-string "shell name: " nil)))
    (shell (concat "*" shell-name "*"))))

2. Use an Emacs plugin/package, and I've found the following one:
<https://github.com/manateelazycat/aweshell>.

What are the recommended ways to use Emacs based on this kind of technique?

Regards
-- 
Assoc. Prof. Hongyi Zhao <hongyi.zhao@gmail.com>
Theory and Simulation of Materials
Hebei Vocational University of Technology and Engineering
NO. 552 North Gangtie Road, Xingtai, China



^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Run multiple shells in Emacs.
  2021-05-31 23:13 Run multiple shells in Emacs Hongyi Zhao
@ 2021-05-31 23:18 ` Jean Louis
  2021-05-31 23:23 ` Óscar Fuentes
  1 sibling, 0 replies; 7+ messages in thread
From: Jean Louis @ 2021-05-31 23:18 UTC (permalink / raw)
  To: Hongyi Zhao; +Cc: help-gnu-emacs

* Hongyi Zhao <hongyi.zhao@gmail.com> [2021-06-01 02:14]:
> What's the preferable way to open multiple shell windows at the same
> time in Emacs?

Just C-u M-x shell is enough to span a new shell.


-- 
Jean

Take action in Free Software Foundation campaigns:
https://www.fsf.org/campaigns

Sign an open letter in support of Richard M. Stallman
https://stallmansupport.org/



^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Run multiple shells in Emacs.
  2021-05-31 23:13 Run multiple shells in Emacs Hongyi Zhao
  2021-05-31 23:18 ` Jean Louis
@ 2021-05-31 23:23 ` Óscar Fuentes
  2021-05-31 23:54   ` Hongyi Zhao
  1 sibling, 1 reply; 7+ messages in thread
From: Óscar Fuentes @ 2021-05-31 23:23 UTC (permalink / raw)
  To: help-gnu-emacs

Hongyi Zhao <hongyi.zhao@gmail.com> writes:

> What's the preferable way to open multiple shell windows at the same
> time in Emacs?
>
> After searching with Google, I find the discussion here:
>
> <https://stackoverflow.com/questions/6532998/how-to-run-multiple-shells-on-emacs>
>
> Basically, there are two types of methods to accomplish this:
>
> 1. Write a simple function, just as the one suggested on the above website:
>
> (defun create-shell ()
>     "creates a shell with a given name"
>     (interactive);; "Prompt\n shell name:")
>     (let ((shell-name (read-string "shell name: " nil)))
>     (shell (concat "*" shell-name "*"))))
>
> 2. Use an Emacs plugin/package, and I've found the following one:
> <https://github.com/manateelazycat/aweshell>.
>
> What are the recommended ways to use Emacs based on this kind of technique?

Aweshell does a lot of things and works with Eshell, not `shell' as your
first method.

Plain `eshell' already supports multiple instances (see its docstring),
as well as `shell' (see its docstring).

So if you want to open multiple shell buffers, you don't need neither a
new function nor a new package.




^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Run multiple shells in Emacs.
  2021-05-31 23:23 ` Óscar Fuentes
@ 2021-05-31 23:54   ` Hongyi Zhao
  2021-06-01  3:23     ` Abhiseck Paira
  0 siblings, 1 reply; 7+ messages in thread
From: Hongyi Zhao @ 2021-05-31 23:54 UTC (permalink / raw)
  To: Óscar Fuentes; +Cc: help-gnu-emacs

On Tue, Jun 1, 2021 at 7:24 AM Óscar Fuentes <ofv@wanadoo.es> wrote:
>
> Hongyi Zhao <hongyi.zhao@gmail.com> writes:
>
> > What's the preferable way to open multiple shell windows at the same
> > time in Emacs?
> >
> > After searching with Google, I find the discussion here:
> >
> > <https://stackoverflow.com/questions/6532998/how-to-run-multiple-shells-on-emacs>
> >
> > Basically, there are two types of methods to accomplish this:
> >
> > 1. Write a simple function, just as the one suggested on the above website:
> >
> > (defun create-shell ()
> >     "creates a shell with a given name"
> >     (interactive);; "Prompt\n shell name:")
> >     (let ((shell-name (read-string "shell name: " nil)))
> >     (shell (concat "*" shell-name "*"))))
> >
> > 2. Use an Emacs plugin/package, and I've found the following one:
> > <https://github.com/manateelazycat/aweshell>.
> >
> > What are the recommended ways to use Emacs based on this kind of technique?
>
> Aweshell does a lot of things and works with Eshell, not `shell' as your
> first method.
>
> Plain `eshell' already supports multiple instances (see its docstring),
> as well as `shell' (see its docstring).
>
> So if you want to open multiple shell buffers, you don't need neither a
> new function nor a new package.
>

I want to use Emacs as an advanced terminal multiplexer similar to
tmux. Now, I find the method described here:
<https://iloveemacs.wordpress.com/2014/09/10/emacs-as-an-advanced-terminal-multiplexer/comment-page-1/>.
Any hints/comments/suggestions will be highly appreciated.

Regards
-- 
Assoc. Prof. Hongyi Zhao <hongyi.zhao@gmail.com>
Theory and Simulation of Materials
Hebei Vocational University of Technology and Engineering
NO. 552 North Gangtie Road, Xingtai, China



^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Run multiple shells in Emacs.
  2021-05-31 23:54   ` Hongyi Zhao
@ 2021-06-01  3:23     ` Abhiseck Paira
  2021-06-01 11:21       ` Leo Butler
  0 siblings, 1 reply; 7+ messages in thread
From: Abhiseck Paira @ 2021-06-01  3:23 UTC (permalink / raw)
  To: Hongyi Zhao; +Cc: Óscar Fuentes, help-gnu-emacs

[-- Attachment #1: Type: text/plain, Size: 1971 bytes --]


> I want to use Emacs as an advanced terminal multiplexer similar to
> tmux. Now, I find the method described here:
> <https://iloveemacs.wordpress.com/2014/09/10/emacs-as-an-advanced-terminal-multiplexer/comment-page-1/>.
> Any hints/comments/suggestions will be highly appreciated.

When I first started using Emacs, I wanted to recreate tmux+terminal
workflow with Emacs. So I tried to use *shell* and found it inadequate
because I tried to run TUI (not CLI) applications and it would complain
that terminal wasn't fully operational. Also if I use *term* then I
don't get to use the Emacs keybindings.

Then I read this article[1] and it opened my eyes.
[1] https://ambrevar.xyz/emacs-eshell/index.html

I was thinking it wrong, why does terminal emulator and POSIX shell
should go together? I should be able to use POSIX shell without using a
terminal emulator.

So the first thing I did was to remove all TUI applications. So I use
Emacs packages and CLI programs. CLI programs can easily be used in
*shell* (with Bash running) without any problem. The benefits are:

1. You can have as many buffers running shell as you want.
"C-u M-x shell" will create as many shell buffers as you want.

2. You get to use Emacs keybindings and other Emacs perks everywhere in
a buffer. (See shell manual for details).

I also added this option in my init.el file:
(setq shell-command-switch "-ic")

This makes it possible to type "M-!" and "M-&" and run shell commands
from anywhere in Emacs. Also in dired mode you can type ! and & to run
shell commands with the file at point.

So this is what I have done with my workflow, sometimes I go by weeks
without needing to open a proper terminal emulator. I was even
considering uninstalling it, but thought it may come in handy in
emergency situations.

-- 
Abhisek Paira
E34E 825B 979E EB9F 8505  F80E E93D 353B 7740 0709
"There is no system but GNU, and Linux is one of its kernels."

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 832 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Run multiple shells in Emacs.
  2021-06-01  3:23     ` Abhiseck Paira
@ 2021-06-01 11:21       ` Leo Butler
  2021-06-02  0:52         ` Hongyi Zhao
  0 siblings, 1 reply; 7+ messages in thread
From: Leo Butler @ 2021-06-01 11:21 UTC (permalink / raw)
  To: Abhiseck Paira; +Cc: Óscar Fuentes, help-gnu-emacs, Hongyi Zhao

Abhiseck Paira <abhiseckpaira@disroot.org> writes:

>> I want to use Emacs as an advanced terminal multiplexer similar to
>> tmux. Now, I find the method described here:
>> <https://iloveemacs.wordpress.com/2014/09/10/emacs-as-an-advanced-terminal-multiplexer/comment-page-1/>.
>> Any hints/comments/suggestions will be highly appreciated.
>
> When I first started using Emacs, I wanted to recreate tmux+terminal
> workflow with Emacs. So I tried to use *shell* and found it inadequate
> because I tried to run TUI (not CLI) applications and it would complain
> that terminal wasn't fully operational. Also if I use *term* then I
> don't get to use the Emacs keybindings.

Not quite. In *term*, one can switch `modes' between char and line entry. One lets
you interact with the terminal as if in a *shell* buffer. This is super
handy.

Leo



^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Run multiple shells in Emacs.
  2021-06-01 11:21       ` Leo Butler
@ 2021-06-02  0:52         ` Hongyi Zhao
  0 siblings, 0 replies; 7+ messages in thread
From: Hongyi Zhao @ 2021-06-02  0:52 UTC (permalink / raw)
  To: Leo Butler; +Cc: Óscar Fuentes, help-gnu-emacs, Abhiseck Paira

On Tue, Jun 1, 2021 at 7:21 PM Leo Butler <leo.butler@umanitoba.ca> wrote:
>
> Abhiseck Paira <abhiseckpaira@disroot.org> writes:
>
> >> I want to use Emacs as an advanced terminal multiplexer similar to
> >> tmux. Now, I find the method described here:
> >> <https://iloveemacs.wordpress.com/2014/09/10/emacs-as-an-advanced-terminal-multiplexer/comment-page-1/>.
> >> Any hints/comments/suggestions will be highly appreciated.
> >
> > When I first started using Emacs, I wanted to recreate tmux+terminal
> > workflow with Emacs. So I tried to use *shell* and found it inadequate
> > because I tried to run TUI (not CLI) applications and it would complain
> > that terminal wasn't fully operational. Also if I use *term* then I
> > don't get to use the Emacs keybindings.
>
> Not quite. In *term*, one can switch `modes' between char and line entry. One lets
> you interact with the terminal as if in a *shell* buffer. This is super
> handy.

This is exactly one of the wonderful features I pursue.

HY
>
> Leo

-- 
Assoc. Prof. Hongyi Zhao <hongyi.zhao@gmail.com>
Theory and Simulation of Materials
Hebei Vocational University of Technology and Engineering
NO. 552 North Gangtie Road, Xingtai, China



^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2021-06-02  0:52 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-05-31 23:13 Run multiple shells in Emacs Hongyi Zhao
2021-05-31 23:18 ` Jean Louis
2021-05-31 23:23 ` Óscar Fuentes
2021-05-31 23:54   ` Hongyi Zhao
2021-06-01  3:23     ` Abhiseck Paira
2021-06-01 11:21       ` Leo Butler
2021-06-02  0:52         ` Hongyi Zhao

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).