getting-to-a-shell.md 1.8 KB

Multishell enables you to get to the input prompt in the shell you want with as few keystrokes as possible.

  • One keybinding, unmodified, gets you to the your current default shell, if not in a shell, or to the input prompt of the current shell, if you're in one.

  • Use the universal argument to select a specific shell buffer, wherever point happens to be residing. Enter an empty line to the prompt to go to your current default shell, or use completing read to go to a shell from your multishell history, or start a new shell at the path you specify - including remote paths, using tramp syntax. (See the multishell-pop-to-shell docstring in multishell.el for details.)

  • Use a doubled universal argument to set the shell you choose to be the current default. (The prompt will indicate that mode with a "<==".)

Here's the decision tree:

  • No universal argument - use:

    • From-buffer is shell buffer: use from-buffer current name/path
    • if shell/connection is stopped, restart/reconnect
    • if not at input prompt, go there
    • From-buffer is not shell buffer:
    • Go to multishell-primary-name current name/path, creating or restarting and/or reconnecting if that shell is not currently running.
  • Universal argument provided - use:

    • No name is specified - use current multishell-primary-name path
    • Name is specified - use named buffer (creating if not already present):
    • Path is also specified:
      • shell is running - ignore new path
      • shell will be started or restarted - use new path
    • No path is specified:
      • Name has history: use path from history
      • Name has no history: use path that target buffer already has or inherits
    • If the universal argument is doubled, set the selected shell as the default one, going forwards.