Repository: pypa/pipenv

Issue:
Output of `pipenv scripts` is not separated by newlines
### Issue description

Output of the new `pipenv scripts` from [pipenv 2020.11.4](https://github.com/pypa/pipenv/releases/tag/v2020.11.4) is not separated by newlines.

On my Pipfile, I have these multiple `[scripts]` block.

```
[scripts]
mode1 = "echo 1"
mode2 = "echo 2"
mode3 = "echo 3"
```

### Expected result

```
$ pipenv scripts
command script
mode1   echo 1
mode2   echo 2
mode3   echo 3
```

### Actual result

```
$ pipenv scripts
command script
mode1   echo 1mode2     echo 2mode3     echo 3
```

### Steps to replicate

1. Create a Pipfile with multiple entries for the `[scripts]` block
    ```
    [scripts]
    mode1 = "echo 1"
    mode2 = "echo 2"
    mode3 = "echo 3"
    ```
1. Run `pipenv scripts`

-------------------------------------------------------------------------------

<details><summary>$ pipenv --support</summary>

Pipenv version: `'2020.11.4'`

Pipenv location: `'/usr/local/Cellar/pipenv/2020.11.4/libexec/lib/python3.9/site-packages/pipenv'`

Python location: `'/usr/local/Cellar/pipenv/2020.11.4/libexec/bin/python'`

Python installations found:

  - `3.9.0`: `/usr/local/bin/python3`
  - `3.9.0`: `/usr/local/bin/python3.9`
  - `3.8.6`: `/Users/gino.mempin/.venvs/Personal-bPFDGn20/bin/python3`
  - `3.8.6`: `/Users/gino.mempin/.venvs/Personal-bPFDGn20/bin/python3.8`
  - `3.8.6`: `/Users/gino.mempin/.venvs/Personal-bPFDGn20/bin/python3`
  - `3.8.6`: `/Users/gino.mempin/.venvs/Personal-bPFDGn20/bin/python3.8`
  - `3.8.6`: `/usr/local/bin/python3.8`
  - `3.8.2`: `/usr/bin/python3`
  - `2.7.16`: `/usr/bin/python2`
  - `2.7.16`: `/usr/bin/python2.7`

PEP 508 Information:

```
{'implementation_name': 'cpython',
 'implementation_version': '3.9.0',
 'os_name': 'posix',
 'platform_machine': 'x86_64',
 'platform_python_implementation': 'CPython',
 'platform_release': '19.6.0',
 'platform_system': 'Darwin',
 'platform_version': 'Darwin Kernel Version 19.6.0: Mon Aug 31 22:12:52 PDT '
                     '2020; root:xnu-6153.141.2~1/RELEASE_X86_64',
 'python_full_version': '3.9.0',
 'python_version': '3.9',
 'sys_platform': 'darwin'}
```

System environment variables:

  - `PATH`
  - `GREP_COLOR`
  - `TERM_PROGRAM`
  - `TERM`
  - `PIP_PYTHON_PATH`
  - `PIPENV_VERBOSITY`
  - `SHELL`
  - `VENV_DIR`
  - `CLICOLOR`
  - `TMPDIR`
  - `TERM_PROGRAM_VERSION`
  - `ORIGINAL_XDG_CURRENT_DESKTOP`
  - `LC_ALL`
  - `USER`
  - `SSH_AUTH_SOCK`
  - `__CF_USER_TEXT_ENCODING`
  - `VIRTUAL_ENV`
  - `WORKON_HOME`
  - `LSCOLORS`
  - `PIPENV_ACTIVE`
  - `_`
  - `PWD`
  - `LANG`
  - `XPC_FLAGS`
  - `PYTHONDONTWRITEBYTECODE`
  - `XPC_SERVICE_NAME`
  - `GPG_TTY`
  - `SHLVL`
  - `HOME`
  - `VSCODE_GIT_ASKPASS_MAIN`
  - `GREP_OPTIONS`
  - `LOGNAME`
  - `PIP_DISABLE_PIP_VERSION_CHECK`
  - `VSCODE_GIT_IPC_HANDLE`
  - `GIT_ASKPASS`
  - `VSCODE_GIT_ASKPASS_NODE`
  - `HISTTIMEFORMAT`
  - `COLORTERM`
  - `BASH_FUNC_mkvenv%%`
  - `BASH_FUNC_dnvenv%%`
  - `BASH_FUNC_mkcd%%`
  - `BASH_FUNC_pythonpath-append%%`
  - `BASH_FUNC_pythonpath-reset%%`
  - `BASH_FUNC_print-du-sorted%%`
  - `BASH_FUNC_export-bmaas-sapi-secrets%%`
  - `BASH_FUNC_find-broken-symlinks%%`
  - `BASH_FUNC_rmvenv%%`
  - `BASH_FUNC_upvenv%%`
  - `BASH_FUNC_docker-query-image-tags%%`
  - `BASH_FUNC_docker-query-images%%`
  - `PIP_SHIMS_BASE_MODULE`
  - `PYTHONFINDER_IGNORE_UNSUPPORTED`

Pipenv–specific environment variables:

 - `PIPENV_VERBOSITY`: `-1`
 - `PIPENV_ACTIVE`: `1`

Debug–specific environment variables:

  - `PATH`: `/usr/local/Cellar/pipenv/2020.11.4/libexec/tools:/Users/gino.mempin/.venvs/Personal-bPFDGn20/bin:/usr/local/Cellar/pipenv/2020.11.4/libexec/tools:/usr/local/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/sbin`
  - `SHELL`: `/usr/local/bin/bash`
  - `LANG`: `en_US.UTF-8`
  - `PWD`: `/Users/gino.mempin/Personal`
  - `VIRTUAL_ENV`: `/Users/gino.mempin/.venvs/Personal-bPFDGn20`


---------------------------

Contents of `Pipfile` ('/Users/gino.mempin/Personal/Pipfile'):

```toml
[[source]]
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true

[dev-packages]

[packages]

[requires]
python_version = "3.8"

[scripts]
mode1 = "echo 1"
mode2 = "echo 2"
mode3 = "echo 3"

```


Contents of `Pipfile.lock` ('/Users/gino.mempin/Personal/Pipfile.lock'):

```json
{
    "_meta": {
        "hash": {
            "sha256": "7f7606f08e0544d8d012ef4d097dabdd6df6843a28793eb6551245d4b2db4242"
        },
        "pipfile-spec": 6,
        "requires": {
            "python_version": "3.8"
        },
        "sources": [
            {
                "name": "pypi",
                "url": "https://pypi.org/simple",
                "verify_ssl": true
            }
        ]
    },
    "default": {},
    "develop": {}
}

```
</details>




Discussion:

Resolving patch:
diff --git a/pipenv/cli/command.py b/pipenv/cli/command.py
--- a/pipenv/cli/command.py
+++ b/pipenv/cli/command.py
@@ -9,6 +9,7 @@
 )
 
 from ..__version__ import __version__
+from .._compat import fix_utf8
 from ..exceptions import PipenvOptionsError
 from ..patched import crayons
 from ..vendor import click_completion, delegator
@@ -721,20 +722,23 @@ def clean(ctx, state, dry_run=False, bare=False, user=False):
     context_settings=subcommand_context_no_interspersion,
 )
 @common_options
-@argument("args", nargs=-1)
-@pass_state
-def scripts(state, args):
+def scripts():
     """Lists scripts in current environment config."""
     from ..core import project
-    if not project:
-        echo(u"project not found", err=True)
-        exit(1)
+
+    if not project.pipfile_exists:
+        echo("No Pipfile present at project home.", err=True)
+        sys.exit(1)
     scripts = project.parsed_pipfile.get('scripts', {})
-    rpt = u"command\tscript\n"
-    for k, v in scripts.items():
-        rpt += u"{0}\t{1}".format(k, v)
-    echo(rpt)
-    return 0
+    first_column_width = max(len(word) for word in ["Command"] + list(scripts))
+    second_column_width = max(len(word) for word in ["Script"] + list(scripts.values()))
+    lines = ["{0:<{width}}  Script".format("Command", width=first_column_width)]
+    lines.append("{}  {}".format("-" * first_column_width, "-" * second_column_width))
+    lines.extend(
+        "{0:<{width}}  {1}".format(name, script, width=first_column_width)
+        for name, script in scripts.items()
+    )
+    echo("\n".join(fix_utf8(line) for line in lines))
 
 
 if __name__ == "__main__":
diff --git a/pipenv/core.py b/pipenv/core.py
--- a/pipenv/core.py
+++ b/pipenv/core.py
@@ -1662,6 +1662,7 @@ def format_help(help):
     help = help.replace("  open", str(crayons.red("  open", bold=True)))
     help = help.replace("  run", str(crayons.yellow("  run", bold=True)))
     help = help.replace("  shell", str(crayons.yellow("  shell", bold=True)))
+    help = help.replace("  scripts", str(crayons.yellow("  scripts", bold=True)))
     help = help.replace("  sync", str(crayons.green("  sync", bold=True)))
     help = help.replace("  uninstall", str(crayons.magenta("  uninstall", bold=True)))
     help = help.replace("  update", str(crayons.green("  update", bold=True)))


Test patch: