### Summary

```
$ ansible-vault encrypt_string secret
Encryption successful
!vault |
          $ANSIBLE_VAULT;1.1;AES256
          61633966613365393435663962393261376338336136313065376437373838636336623565363239
          6630383564363634636364613830613561316333623739380a653764333864666363663539363363
          65316331636165353761626461386166633330623835316362393361343333396234663638653666
          3163373561623331340a633161373437343563333135343933376634643638613332643964313135
          3430%                                                                                                                    
 
```
If you look at the end of the printed data, it contains a `%`, which is a character that is added by the terminal in order to inform user that the executed command did not end-up with a newline.

Now you can easily guess that when user will copy/paste that yaml block, their will have a surprise, as decoding will not work,.... because of the extra `%` at the end.


This bug can easily be avoided by ensuring that we add a newline at the end of the dumped data, as this will not affect the validity of the dumped YAML, but will avoid having the terminal add the `%` character at the end of the last line, a character which will render the entire block invalid for decryption.

### Issue Type

Bug Report

### Component Name

encrypt

### Ansible Version

```console
$ ansible --version
ansible [core 2.14.0b1]
  config file = /Users/ssbarnea/.ansible.cfg
  configured module search path = ['/Users/ssbarnea/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /Users/ssbarnea/.pyenv/versions/3.11-dev/lib/python3.11/site-packages/ansible
  ansible collection location = /Users/ssbarnea/.ansible/collections:/usr/share/ansible/collections
  executable location = /Users/ssbarnea/.pyenv/versions/3.11-dev/bin/ansible
  python version = 3.11.0rc2+ (heads/3.11:8e2bda8227, Sep 19 2022, 10:59:25) [Clang 14.0.0 (clang-1400.0.29.102)] (/Users/ssbarnea/.pyenv/versions/3.11-dev/bin/python3.11)
  jinja version = 3.1.2
  libyaml = True
```


### Configuration

```console
-
```


### OS / Environment

MacOS

### Steps to Reproduce

Just configure a ANSIBLE_VAULT_PASSWORD_FILE=.vault_pass and put a password inside the vault file, so you can easily encrypt and decypt.

Try to encrypt a secret like `ansible-vault encrypt_string secret`, select the output and paste it inside a playbook for use.

### Expected Results

Be able to copy/paste the output and be able to use it.

### Actual Results

```console
Vault format unhexlify error: Odd-length string
```


### Code of Conduct

- [X] I agree to follow the Ansible Code of Conduct
super(VaultCLI, self).init_parser(
            desc="encryption/decryption utility for Ansible data files",
            epilog="\nSee '%s <command> --help' for more information on a specific command.\n\n" % os.path.basename(sys.argv[0])
        )
        common = opt_help.argparse.ArgumentParser(add_help=False)
        opt_help.add_vault_options(common)
        opt_help.add_verbosity_options(common)
        subparsers = self.parser.add_subparsers(dest='action')
        subparsers.required = True
        output = opt_help.argparse.ArgumentParser(add_help=False)
        output.add_argument('--output', default=None, dest='output_file',
                            help='output file name for encrypt or decrypt; use - for stdout',
                            type=opt_help.unfrack_path())
        
        vault_id = opt_help.argparse.ArgumentParser(add_help=False)
        vault_id.add_argument('--encrypt-vault-id', default=[], dest='encrypt_vault_id',
                              action='store', type=str,
                              help='the vault id used to encrypt (required if more than one vault-id is provided)')
        create_parser = subparsers.add_parser('create', help='Create new vault encrypted file', parents=[vault_id, common])
        create_parser.set_defaults(func=self.execute_create)
        create_parser.add_argument('args', help='Filename', metavar='file_name', nargs='*')
        decrypt_parser = subparsers.add_parser('decrypt', help='Decrypt vault encrypted file', parents=[output, common])
        decrypt_parser.set_defaults(func=self.execute_decrypt)
        decrypt_parser.add_argument('args', help='Filename', metavar='file_name', nargs='*')
        edit_parser = subparsers.add_parser('edit', help='Edit vault encrypted file', parents=[vault_id, common])
        edit_parser.set_defaults(func=self.execute_edit)