You'd be surprised.
Suppose I want to "go to definition" for a class named Saver.
/^class Saver\>
19 times out of 20, this works. It's also instant; my vim will likely get me there faster than your IDE's go to definition functionality. (Looking at you, pycharm!)
Here's my flow.
>>> import tensorflow as tf
>>> tf.train.Saver
<class 'tensorflow.python.training.saver.Saver'>
>>> from tensorflow.python.training import saver
>>> saver
<module 'tensorflow.python.training.saver' from '/usr/local/lib/python3.7/site-packages/tensorflow_core/python/training/saver.py'>
Then I open /usr/local/lib/python3.7/site-packages/tensorflow_core/python/training/saver.py.
Suppose I want to know: Where are all the places that Saver is used in all of tensorflow?
time find . -type f -name '*.py' | xargs merge | ft py
Vim: Reading from stdin...
real 0m0.930s
user 0m0.243s
sys 0m0.414s
/\<Saver(
:%v//d
Boop:
https://i.imgur.com/EJ5bZSW.pngLiterally every usage of Saver in all of Tensorflow.
So let's say you're interested in a specific line. This one, for example:
# being added to the GLOBAL_VARIABLES collection, so that Saver()
Boop:
https://i.imgur.com/YSAzhCJ.pngI did that by highlighting "being added to the GLOBAL_VARIABLES", ctrl-c, then pressing "u" to undo the :%v//d, then / followed by ctrl-v.
That might sound hard, but with muscle memory I don't even think about it -- it's like explaining how you open a can of food. Do you really think about where you place your fingers, or the pressure of your nail on the flap of the can? No, you just open it up. Same thing here; it's automatic.
Way faster than IDEs, and I get just as much (or more) info.
I'd love to use pycharm, but the slowness keeps pushing me back to this technique.