With this so called Semantic History feature you can configure iTerm2 to open folders and files in their default application when you press Cmd and then click on them.
So if you click on a folder name it will open in the Finder, and if you click on a
.py file, for example, it will open in your editor.
The amazingly cool part is that this also works with line numbers, so if you click on something like
test_myapp.py:42 in the terminal your editor opens
test_myapp.py and moves the cursor to line 42! 😀
This unbelievably handy if you’re running your unit tests from the command line. I use it all the time to click and jump to failed test cases with the Pytest test runner, for example.
Here’s how to set up Semantic History in iTerm2:
- Open the iTerm2 preferences by clicking on iTerm2 → Preferences in the menu bar (or press Cmd+,)
- Click on Profiles in the top row, then click Advanced all the way to the right. Find the section that says Semantic History.
- Under Semantic History, set the first option to Open with editor… and then pick your favorite editor (I use Sublime Text 3).
- Close the preferences window – that’s it!
If you need some more help setting this up and a quick demo of what you can do with this feature, watch my video below:
» Subscribe to the dbader.org YouTube Channel for more Python tutorials.
Like I said, I found this “click to jump to file” feature extremely helpful for working with tests.
I usually run my Python tests with Pytest and it prints test failure messages in a format that iTerm2 understands. So I can simply Cmd+click on a failed test assertion and that’ll open up the test case Sublime Text, placing the cursor at the exact line that caused the test to fail.
This feature should be completely language agnostic by the way. You’ll be able to use it with any test runner or programming language – and any editor.
P.S. Unfortunately iTerm2 is only available on macOS. I’d love to learn if there’s a way to get the same functionality on Windows or Linux, so far I haven’t been able to find anything. If you know how to do this on Linux or Windows please get in touch and tell me how to do it :) Thanks!