Hi! I tried to integrate notebooks-related functionality in my daily workflow. Not everything was smooth and I returned to JupyterLab in the end. However, the transition was very close to becoming successful, I really liked some features! I would like to share some feedback.
I realized that "cells" within .py-files is the best form of a "Notebook" to me. Reasons:
In fact, all listed reasons can be compressed to one: "I strongly prefer .py files to .ipynb".
I mean the "# %%" thing that I praised above 馃槃 I had the following problems with it:
In fact, only the first reason is a major blocker for me.
For now, I prefer JupyterLab for working with .ipynb, however, I spent some time with Notebook Editor and here are some things I would like to mention:
1, 2, 3 and 5 seem to be caused by the same fact that the editor is different from the native VSCode editor.
Software:
Visual Studio Code: 1.45.0
Python (VSCode extension): 2020.5.78807
python==3.7.7
jupyterlab==2.1.2
Microsoft Data Science for VS Code Engineering Team: @rchiodo, @IanMatthewHuff, @DavidKutu, @DonJayamanne, @greazer
/cc @jmew @claudiaregio @ronglums
Thanks for the feedback. Some of what you asked for is actually already there:
There are a number of cell level commands. They're accessible from the VS code command palette. Try opening the palette and typing Python :

We don't do splitting or selecting an entire cell in a python file. Not a bad idea though. Might be hard to discover if not in a code lens though.
Shutting down the kernel happens when you close the interactive window.
Restart kernel is a command in VS code:

We've had other complaints of a slowdown. The slowdown might be related to this:
https://github.com/microsoft/vscode-python/issues/9596#issuecomment-597181499.
Can you try putting this into your python.dataScience.runStartupCommands:
%config Completer.use_jedi = False
Oh and most of your issues with the notebook editor are on our backlog. VS code is working on supporting notebooks natively (instead of the big hack we use). This should fix things like:
You can track our work to switch to this new API here:
https://github.com/microsoft/vscode-python/issues/10496
Thanks for the detailed answer! I will remember the trick with searching desired command in the palette :)
There are a number of cell level commands
Here are the examples of commands that are missing and that I use in JupyterLab:
We need to go through and split into separate issues for those that we don't already know about.
@Yura52 thank you for writing this feedback! It captures many of the things I was thinking. I'm a long time Jupyter notebook user and am now trying out VS Code. Definitely some huge benefits and with the added functionality of the Python Interactive # %%. I agree with the statement "I strongly prefer .py files to .ipynb". There are so many benefits you get from a fully developed text editor that Jupyter has to hack together (code diff, undo/redo, suggestions, linting, shortcuts, navigation, etc).
I want to through my support behind the "Cells in .py" but as @Yura52 pointed out there are some limitations (in order of priority).
# %%\n)cellType="markdown" it could have functionality specifically to that cell. Mentioned previously was "No notebook-shortcuts" which is a problem; however, if the above have commands for them which could be referenced in the keybindings.json then key shortcuts are basically solved.
Closing thought: it may be nice to make this functionality work withing if __name__ == '__main__'. With Python scripts it's not ideal to have them all defined on the root because then it'll execute when imported. If you could define # %% cells within the if..main.. block then it would align close with best practices for Python.
Thanks for all the great feedback! The biggest takeaway I'm getting from this is that the interactive experience could literally be a replacement for notebook development, IF it supported/emulated some of the same experiences that are possible in a notebook. In addition, @earthastronaut, your closing thought is really interesting new idea about enabling a mix of standard python script with embedded "cells". I'm generalizing your suggestion beyond just doing it for the if..main.. block, say for example if you could define a function and within that function have a concept of cells. This sounds like it could become a complicated problem, but I believe it's worth thinking about.
I'm going to turn this issue into one that is specifically designed to exist as an "idea-factory" for things we could do to make the current script cell experience more powerful and useful. From this issue, ideas that have merit for further investigation should be pulled out into separate issues.
The notebook-specific feedback here is covered by what @rchiodo said above -- those limitations will be addressed when we finally can move to the VS Code native notebook API.
Thanks @greazer for making the tickets to tackle these issues. I had some time and started coding up a solution for the cell edits and navigation. I'll have a branch and can make a PR. Thought I'd provide a heads up.
For me the biggest benefit of working with ipynb files over py files is interactivity of the kernel when coding. The autocomplete/intellisense is much smarter when using the notebook editor or the interactive window. If we could get kernel-based intellisense in the editor window, it think that would really improve my coding experience and I would have no reason to keep working in notebooks.
I'd like to make another suggestion. A cool thing about Google Colab is that they show the RAM and disk usage in the toolbar.
Toolbar

Clicking on the toolbar opens this popup with more details

Disk usage isn't that relevant when working locally but the RAM and CPU usage coming from the interactive window would be great to know.

Most helpful comment
Thanks for all the great feedback! The biggest takeaway I'm getting from this is that the interactive experience could literally be a replacement for notebook development, IF it supported/emulated some of the same experiences that are possible in a notebook. In addition, @earthastronaut, your closing thought is really interesting new idea about enabling a mix of standard python script with embedded "cells". I'm generalizing your suggestion beyond just doing it for the if..main.. block, say for example if you could define a function and within that function have a concept of cells. This sounds like it could become a complicated problem, but I believe it's worth thinking about.
I'm going to turn this issue into one that is specifically designed to exist as an "idea-factory" for things we could do to make the current script cell experience more powerful and useful. From this issue, ideas that have merit for further investigation should be pulled out into separate issues.
The notebook-specific feedback here is covered by what @rchiodo said above -- those limitations will be addressed when we finally can move to the VS Code native notebook API.