+### As external tool
+
+1. Install `black`.
+
+ ```console
+ $ pip install black
+ ```
+
+1. Locate your `black` installation folder.
+
+ On macOS / Linux / BSD:
+
+ ```console
+ $ which black
+ /usr/local/bin/black # possible location
+ ```
+
+ On Windows:
+
+ ```console
+ $ where black
+ %LocalAppData%\Programs\Python\Python36-32\Scripts\black.exe # possible location
+ ```
+
+ Note that if you are using a virtual environment detected by PyCharm, this is an
+ unneeded step. In this case the path to `black` is `$PyInterpreterDirectory$/black`.
+
+1. Open External tools in PyCharm/IntelliJ IDEA
+
+ On macOS:
+
+ `PyCharm -> Preferences -> Tools -> External Tools`
+
+ On Windows / Linux / BSD:
+
+ `File -> Settings -> Tools -> External Tools`
+
+1. Click the + icon to add a new external tool with the following values:
+
+ - Name: Black
+ - Description: Black is the uncompromising Python code formatter.
+ - Program: \<install_location_from_step_2>
+ - Arguments: `"$FilePath$"`
+
+1. Format the currently opened file by selecting `Tools -> External Tools -> black`.
+
+ - Alternatively, you can set a keyboard shortcut by navigating to
+ `Preferences or Settings -> Keymap -> External Tools -> External Tools - Black`.
+
+### As file watcher
+
+1. Install `black`.
+
+ ```console
+ $ pip install black
+ ```
+
+1. Locate your `black` installation folder.
+
+ On macOS / Linux / BSD:
+
+ ```console
+ $ which black
+ /usr/local/bin/black # possible location
+ ```
+
+ On Windows:
+
+ ```console
+ $ where black
+ %LocalAppData%\Programs\Python\Python36-32\Scripts\black.exe # possible location
+ ```
+
+ Note that if you are using a virtual environment detected by PyCharm, this is an
+ unneeded step. In this case the path to `black` is `$PyInterpreterDirectory$/black`.
+
+1. Make sure you have the
+ [File Watchers](https://plugins.jetbrains.com/plugin/7177-file-watchers) plugin
+ installed.
+1. Go to `Preferences or Settings -> Tools -> File Watchers` and click `+` to add a new
+ watcher:
+ - Name: Black
+ - File type: Python
+ - Scope: Project Files
+ - Program: \<install_location_from_step_2>
+ - Arguments: `$FilePath$`
+ - Output paths to refresh: `$FilePath$`
+ - Working directory: `$ProjectFileDir$`
+
+- In Advanced Options
+ - Uncheck "Auto-save edited files to trigger the watcher"
+ - Uncheck "Trigger the watcher on external changes"
+