diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 41ea1a5d5a1dc6e8fe58cae4810e2b9fb6be5ebd..797bfc63b906b06477d6bedf2c8d937c0acc2082 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -24,13 +24,6 @@ repos:
     hooks:
       - id: detect-secrets
 
-  - repo: https://github.com/amperser/proselint.git
-    rev: 0.10.2
-    hooks:
-      - id: proselint
-        types: [plain-text]
-        exclude: LICENSE
-
   - repo: https://gitlab.com/devopshq/gitlab-ci-linter.git
     rev: v1.0.2
     hooks:
diff --git a/README.rst b/README.rst
index 97bf73a3f1df09c65132c0a94929037a82990f5a..7520f22eb41b60b0d9cb4dabee15b216c1dc8c85 100644
--- a/README.rst
+++ b/README.rst
@@ -16,20 +16,28 @@ Usage
 
 .. code:: shell
 
-   usage: yt [-h] [infile] [outfile]
+    usage: yt [-h] [-i] [files ...]
 
-   YAML tool, a clone of the json.tool Python module for YAML.
+    YAML tool, a clone of the json.tool Python module for YAML.
 
-   This tool provides a simple command line interface to validate and pretty-print
-   YAML documents while trying to preserve as much as possible from the original
-   documents (like comments and anchors).
+    This tool provides a simple command line interface to validate and pretty-print
+    YAML documents while trying to preserve as much as possible from the original
+    documents (like comments and anchors).
 
-   positional arguments:
-     infile      a YAML file to be validated or pretty-printed
-     outfile     write the output of infile to outfile
+    positional arguments:
+      files           a YAML file to be validated or pretty-printed
 
-     optional arguments:
-       -h, --help  show this help message and exit
+    optional arguments:
+      -h, --help      show this help message and exit
+      -i, --in-place  Perform the pretty-print in place, overwriting the existing files.
+
+    When enabling --in-place, all files are processed as input files.
+    When --in-place is not enabled and there are more then 2 files
+    passed, the last files is considered as the output file. If you
+    wish to pretty-print multiple files and output to standard out,
+    specify the last file as "-" .
+    Please note that specifying multiple input files will concatenate
+    them, resulting in a single file that has multiple documents.
 
 License
 -------
diff --git a/yamltool/__main__.py b/yamltool/__main__.py
index a978124242148e6be1316a86befc35d5315c08a6..11df57d2c7db534ce9b70c291aa0e7c9daba5e47 100644
--- a/yamltool/__main__.py
+++ b/yamltool/__main__.py
@@ -9,43 +9,72 @@ documents (like comments and anchors).
 import argparse
 import pathlib
 import sys
+import textwrap
 import ruamel.yaml  # pylint: disable=import-error
 
 
 def main():
     """Main entrypoint."""
+    epilog = textwrap.dedent(
+        """
+        When enabling --in-place, all files are processed as input files.
+        When --in-place is not enabled and there are more then 2 files
+        passed, the last files is considered as the output file. If you
+        wish to pretty-print multiple files and output to standard out,
+        specify the last file as "-" .
+        Please note that specifying multiple input files will concatenate
+        them, resulting in a single file that has multiple documents."""
+    )
     parser = argparse.ArgumentParser(
         description=__doc__,
+        epilog=epilog,
         formatter_class=argparse.RawDescriptionHelpFormatter,
     )
     parser.add_argument(
-        "infile",
-        nargs="?",
-        type=argparse.FileType(encoding="utf-8"),
+        "files",
+        nargs="*",
+        type=pathlib.Path,
         help="a YAML file to be validated or pretty-printed",
-        default=sys.stdin,
     )
     parser.add_argument(
-        "outfile",
-        nargs="?",
-        type=pathlib.Path,
-        help="write the output of infile to outfile",
-        default=None,
+        "-i",
+        "--in-place",
+        help="Perform the pretty-print in place, overwriting the existing files.",  # noqa: E501
+        action="store_true",
     )
     options = parser.parse_args()
-    with options.infile as infile:
-        try:
-            yaml = ruamel.yaml.YAML(typ="rt")
-            yaml.explicit_start = True
-            yaml.indent(mapping=2, sequence=4, offset=2)
-            yaml.preserve_quotes = True
-            if options.outfile is None:
-                out = sys.stdout
+    try:
+        yaml = ruamel.yaml.YAML(typ="rt")
+        yaml.explicit_start = True
+        yaml.indent(mapping=2, sequence=4, offset=2)
+        yaml.preserve_quotes = True
+        if options.in_place:
+            if len(options.files) == 0:
+                raise Exception("You must provide a list of files to process.")
+            for file in options.files:
+                with open(file, "r", encoding="utf-8") as infile:
+                    docs = list(yaml.load_all(infile))
+                with open(file, "w", encoding="utf-8") as outfile:
+                    yaml.dump_all(docs, outfile)
+        else:
+            if len(options.files) < 2:
+                outfile = sys.stdout
+            elif options.files[-1] == "-":
+                outfile = sys.stdout
+                options.files.pop(-1)
+            else:
+                outfile = open(  # pylint: disable=consider-using-with
+                    options.files[-1], "w", encoding="utf-8"
+                )
+                options.files.pop(-1)
+            if options.files:
+                for file in options.files:
+                    with open(file, "r", encoding="utf-8") as infile:
+                        yaml.dump_all(yaml.load_all(infile), outfile)
             else:
-                out = options.outfile.open("w", encoding="utf-8")
-            yaml.dump_all(yaml.load_all(infile), out)
-        except Exception as ex:
-            raise SystemExit(ex)  # pylint: disable=raise-missing-from
+                yaml.dump_all(yaml.load_all(sys.stdin), outfile)
+    except Exception as ex:
+        raise SystemExit(ex)  # pylint: disable=raise-missing-from
 
 
 if __name__ == "__main__":