Project tool window
The Project tool window lets you take a look at your project from various viewpoints and perform different tasks such as creating new items (directories, files, classes, and so on), opening files in the editor, navigating to the necessary code fragments, and more.
Most of the functions in this tool window are accessed as context menu commands in the content pane and via associated shortcuts.
Also, the view contains the Scratches and Consoles folder that lets you manage created scratch files, database consoles, and extension scripts.
Views
The tool window has several views:
Project view. This view displays all the project items along with their dependencies (SDKs and libraries). The emphasis is on the directory structure, although the packages are also shown.
Scopes views (Project Files, Open Files, and so on). These views display the contents of the predefined and user-defined scopes. In other respects, depending on the currently selected view options, a scope view may resemble the Project view.
The necessary view is selected from the list in the left-hand part of the title bar or, if the views are represented by tabs, by clicking the corresponding tab.

To configure a view, use the corresponding options in the title bar context menu. The necessary options can also be accessed by clicking on the title bar.
Preview files from the tool window
If you want to take a look at a file without opening it in a separate tab, you preview it in a popup. Select the necessary file in the Project tool window and press Space.
You can also use the preview tab to look through files without opening each file in a new tab.
Show tree indent guides
In the Project tool window, you can display vertical lines that mark indent levels and help you better understand the hierarchy of the components in your project. To display these lines, enable Show tree indent guides on the Appearance and Behavior | Appearance page of the Settings/Preferences Ctrl+Alt+S.
Title bar context menu
Item | Shortcut | Description |
---|---|---|
Select Next View or Tab Select Previous View or Tab Show List of Views or Tabs | Alt+Right Alt+Left | These are the commands for switching between different views. |
Edit Scopes | Open the Scopes dialog in which you can create and edit used-defined scopes. Note that this command is available only if the current view is a scope view. | |
Show Members | If this option is on, the files in the tree that contain classes turn into nodes. When such node is unfolded, the contained classes with their fields, methods, and other members of the selected item are shown. ![]() | |
Open Files with Single Click | If this option is on, PyCharm will automatically open the selected item in the editor. Otherwise, you need to double-click items to open them. | |
Always Select Opened File | If this option is on, PyCharm automatically locates documents that you open in the editor in the current view of this window. | |
Sort by Type | If the option is off, the items (files, classes, and so on) are sorted alphabetically. If the option is on, the files are sorted by their extensions. | |
Folders Always on Top | If the option is on, folders are shown above the files. Otherwise, all items are sorted alphabetically, and files and folders appear intermixed. | |
Show Excluded Files | This option is available only in the Project view. Turn this option on or off to show or hide excluded folders and files. ![]() | |
File Nesting | Opens the File nesting dialog where you can configure presentation of files that have same names but different extensions. | |
Group Tabs | If this option is on, there is a list in the left-hand part of the title bar from which you can select the necessary view. If this option is off, the views are represented by tabs which appear in the left-hand part of the title bar. ![]() | |
View Mode | This option lets you control general appearance and behavior of the tool window. See Tool window view modes. | |
Move to | To associate the tool window with a different tool window bar, select this command, and then select the destination tool window bar (Top, Left, Bottom or Right). | |
Resize | To resize the tool window by moving one of its borders, select this command, and then select the necessary Stretch to option. Note that this command is not available for the floating mode. | |
Remove from Sidebar | This command hides the tool window, removes the associated tool window button from the tool window bar and removes the tool window from the quick access menu ( To open the tool window again (and restore the associated features), use the main menu: or press Alt+1. | |
Hide | Shift+Escape | Hide the tool window. |
Title bar buttons
Item | Shortcut | Description |
---|---|---|
Alt+Right Alt+Left | ||
Navigate from a file in the editor to the corresponding node (file, class, field, method, and so on) in the Project tool window. | ||
Ctrl+NumPad - | Collapse all the nodes. | |
Shift+Escape | Hide the tool windowShift+Escape. To hide all the tool windows, press Ctrl+Shift+F12. |
Content pane
The content pane shows the project items such as directories, files, and so on.
The icons for the main categories (node types) are shown and briefly explained in the following table. The icons used for the main symbols (classes, fields, methods, and so on.), visibility modifiers, and bookmarks are shown in Symbols.
Item | Description |
---|---|
A package | |
A folder (directory). Different folder categories have different colors.
| |
External Libraries, a category for grouping third party software associated with the project. The node is only shown when the Project view is selected. | |
Your scratch files and consoles are grouped under this node. |
Context menu commands for the content pane items
Item | Shortcut | Description |
---|---|---|
New | Alt+Insert | Create a new item (directory, file, or class) within the selected one. (project or directory). |
Change Course Information | ||
Generate Course Archive | ||
Upload Course to Stepic | ||
Cut | Ctrl+X | Move the selected item or items from the current location to the clipboard. |
Copy |
| |
Paste | Ctrl+V | Insert the contents of the clipboard into the selected location. |
Jump to Source | F4 | Open the selected file in the editor. If the file is already open, the corresponding editor tab will become active. |
Find Usages | Alt+F7 | Search for the usages of the selected item. (The Find Usages dialog will open.) |
Find in Files | Ctrl+Shift+F | Perform a text search. ( | dialog will open.)
Replace in Files | Ctrl+Shift+R | Perform text search-and-replace. ( | will open.)
Refactor | ||
Add to Favorites | Alt+Shift+F | Add the selected item to an existing or new list of favorite items. |
Show Thumbnails | View thumbnails for image files located in the selected directory. (The Thumbnails tool window will open.) | |
Reformat Code | Ctrl+Alt+L | |
Delete | Delete | |
Run '<item_name>' | Ctrl+Shift+F10 | Run a test configuration. |
Debug '<item_name>' | Ctrl+Shift+D | Debug a test configuration. |
Run '<item_name>' with Coverage | Use this command to run a test configuration with Coverage, select the checkbox in . | . To enable|
Profile '<item_name>' | With this command you can attach a Python profiler to the current run/debug configuration. | |
Concurrency Diagram for '<item_name>' | With this command you can run the concurrency visualization session with the current run/debug configuration. | |
Local History | View local history for the selected file or directory, or to create a label for the current version of your project. | |
Synchronize '<item_name>' | ||
Open in Right Split | Split the editor into two parts and show the file in the right section. For more information, refer to Split screen. | |
Open in | Open a file in your system file manager or in Terminal. | |
Open in terminal | Use this command to open the directory corresponding to the selected item in the terminal. | |
File Path / Directory Path | Ctrl+Alt+F12 | |
Compare With | Ctrl+D | Compare the selected file or directory with another file or directory. See Compare files, folders and text sources and Differences viewer for folders. |
Compare File with Editor | Compare the selected file with the file open on an active editor tab. See Compare files, folders and text sources and Differences viewer for files. | |
Mark Directory As | Make the selected directory a source root or a test source root , to make the directory excluded, and so on. | |
Diagrams | Ctrl+Alt+Shift+U or Ctrl+Alt+U | Open a diagram (for example, a UML diagram) for the selected item. |
Create Gist | Use this command to share code by using gists. |
File status highlights
If VCS integration is enabled for the current project, PyCharm uses colors to denote VCS file status in the Project tool window. The following table presents information about the meaning of the colors.
Color | File Status | Description |
---|---|---|
![]() | Added | The file in the active changelist is scheduled for addition to the repository. |
![]() | Added in not active changelist | The file in an inactive changelist is scheduled for addition to the repository. This file status is available if the Highlight files from non-active changelists option is enabled in . |
![]() | Changelist conflict | The file in an inactive changelist has been modified in the active changelist. In this case, a new dialog will open prompting you to resolve the changelist conflict. This file status is available if all options are enabled in . |
![]() | Copied | If a file is a copy of another file, its metadata is tracked, and such a file is marked as copied. |
![]() | Deleted | The file is scheduled for deletion from the repository. |
![]() | Deleted from file system | The file has been deleted locally, but hasn't been scheduled for deletion, and it still exists in the repository. |
![]() | Have changed descendants | If a file is modified, the IDE will recursively highlight all directories containing that file. This status is available if the Show directories with changed descendants option is enabled in . |
![]() | Have immediate changed children | If a file is modified, the IDE will highlight its parent directory. This status is available if the Show directories with changed descendants option is enabled in . |
![]() | Hijacked | [Perforce, ClearCase, VSS] The file is modified without checkout. |
![]() | Ignored | A file is intentionally untracked by VCS. |
![]() | Merged | The file is merged by your VCS as a result of an update. |
![]() | Merged with conflicts | During the last update, the file has been merged with conflicts. |
![]() | Merged with property conflicts | During the last update, the IDE has detected differences between the properties of the local file and its server version. |
![]() | Merged with text and property conflicts | Text and property conflicts happen when two or more developers modify the same lines of a file and the same file properties. |
![]() | Modified | The file has changed since the last synchronization. |
![]() | Modified in not active changelist | The file in an inactive changelist has been modified. This file status is available if the Highlight files from non-active changelists option is enabled in . |
![]() | Obsolete | The file should no longer be in your working copy of the repository. |
![]() | Renamed | Since the last update, the file has been renamed. |
![]() | Switched | [SVN] The file is taken from a different branch than the whole project. |
![]() | (Unknown) Unversioned | The file exists locally, but is not in the repository, and is not scheduled for addition. |
![]() | Up to date | The file hasn't been changed. |
Color | File Status | Description |
---|---|---|
![]() | Added | The file in the active changelist is scheduled for addition to the repository. |
![]() | Added in not active changelist | The file in an inactive changelist is scheduled for addition to the repository. This file status is available if the Highlight files from non-active changelists option is enabled in . |
![]() | Changelist conflict | The file in an inactive changelist has been modified in the active changelist. In this case, a new dialog will open prompting you to resolve the changelist conflict. This file status is available if all options are enabled in . |
![]() | Copied | If a file is a copy of another file, its metadata is tracked, and such a file is marked as copied. |
![]() | Deleted | The file is scheduled for deletion from the repository. |
![]() | Deleted from file system | The file has been deleted locally, but hasn't been scheduled for deletion, and it still exists in the repository. |
![]() | Have changed descendants | If a file is modified, the IDE will recursively highlight all directories containing that file. This status is available if the Show directories with changed descendants option is enabled in . |
![]() | Have immediate changed children | If a file is modified, the IDE will highlight its parent directory. This status is available if the Show directories with changed descendants option is enabled in . |
![]() | Hijacked | [Perforce, ClearCase, VSS] The file is modified without checkout. |
![]() | Ignored | A file is intentionally untracked by VCS. |
![]() | Merged | The file is merged by your VCS as a result of an update. |
![]() | Merged with conflicts | During the last update, the file has been merged with conflicts. |
![]() | Merged with property conflicts | During the last update, the IDE has detected differences between the properties of the local file and its server version. |
![]() | Merged with text and property conflicts | Text and property conflicts happen when two or more developers modify the same lines of a file and the same file properties. |
![]() | Modified | The file has changed since the last synchronization. |
![]() | Modified in not active changelist | The file in an inactive changelist has been modified. This file status is available if the Highlight files from non-active changelists option is enabled in . |
![]() | Obsolete | The file should no longer be in your working copy of the repository. |
![]() | Renamed | Since the last update, the file has been renamed. |
![]() | Switched | [SVN] The file is taken from a different branch than the whole project. |
![]() | (Unknown) Unversioned | The file exists locally, but is not in the repository, and is not scheduled for addition. |
![]() | Up to date | The file hasn't been changed. |
Color | File Status | Description |
---|---|---|
![]() | Added | The file in the active changelist is scheduled for addition to the repository. |
![]() | Added in not active changelist | The file in an inactive changelist is scheduled for addition to the repository. This file status is available if the Highlight files from non-active changelists option is enabled in . |
![]() | Changelist conflict | The file in an inactive changelist has been modified in the active changelist. In this case, a new dialog will open prompting you to resolve the changelist conflict. This file status is available if all options are enabled in . |
![]() | Copied | If a file is a copy of another file, its metadata is tracked, and such a file is marked as copied. |
![]() | Deleted | The file is scheduled for deletion from the repository. |
![]() | Deleted from file system | The file has been deleted locally, but hasn't been scheduled for deletion, and it still exists in the repository. |
![]() | Have changed descendants | If a file is modified, the IDE will recursively highlight all directories containing that file. This status is available if the Show directories with changed descendants option is enabled in . |
![]() | Have immediate changed children | If a file is modified, the IDE will highlight its parent directory. This status is available if the Show directories with changed descendants option is enabled in . |
![]() | Hijacked | [Perforce, ClearCase, VSS] The file is modified without checkout. |
![]() | Ignored | A file is intentionally untracked by VCS. |
![]() | Merged | The file is merged by your VCS as a result of an update. |
![]() | Merged with conflicts | During the last update, the file has been merged with conflicts. |
![]() | Merged with property conflicts | During the last update, the IDE has detected differences between the properties of the local file and its server version. |
![]() | Merged with text and property conflicts | Text and property conflicts happen when two or more developers modify the same lines of a file and the same file properties. |
![]() | Modified | The file has changed since the last synchronization. |
![]() | Modified in not active changelist | The file in an inactive changelist has been modified. This file status is available if the Highlight files from non-active changelists option is enabled in . |
![]() | Obsolete | The file should no longer be in your working copy of the repository. |
![]() | Renamed | Since the last update, the file has been renamed. |
![]() | Switched | [SVN] The file is taken from a different branch than the whole project. |
![]() | (Unknown) Unversioned | The file exists locally, but is not in the repository, and is not scheduled for addition. |
![]() | Up to date | The file hasn't been changed. |