
Tips & tricks from the maintainers of Positron (Sharon Wang & Melissa Barca) | posit::conf(2025)
Tips & tricks from the maintainers of Positron Speaker(s): Melissa Barca; Sharon Wang Abstract: Positron is Posit’s next-generation IDE for data science. Finding your groove in a new IDE takes time, so we’ve got some tips and tricks to help you feel more at home in Positron! We’ll cover key navigation concepts, helpful features for different workflows, and configuration settings for a pleasant IDE experience. Plus, we’ll show you how to explore what Positron is doing under the hood – so you can understand it more deeply and solve problems with confidence. Whether you’re just getting started or already using Positron, these tips will help you settle into your data science workflow and get the most out of everything Positron has to offer. Materials - https://github.com/sharon-wang/positron-tips-and-tricks posit::conf(2025) Subscribe to posit::conf updates: https://posit.co/about/subscription-management/
image: thumbnail.jpg
Transcript#
This transcript was generated automatically and may contain errors.
Sorry about that. My name is Melissa, and this is Sharon. We are two of the developers working on Positron. Through developing Positron, connecting with users in the GitHub repository, and our own experiences using code editors, we've gathered some tips and tricks to share with you today. Our hope is that there's something in here for everyone, whether you've yet to download Positron, or you've been following along from the dailies from the beginning.
So we've broken the tips and tricks into three sections. First, we'll cover navigating Positron and a few ways you may want to personalize your coding space. Then, we'll dive into how you can set yourself up for a more pleasant data exploration experience with a closer look at our editing and plotting tools. And finally, we'll cover some tricks on how to effectively pair with Positron's AI assistant, currently available as a preview feature, Positron Assistant.
Personalizing your coding space
So let's start with personalizing your coding space. We're going to cover how to effectively navigate through Positron and configure your layout and settings. We'll start out by familiarizing ourselves with the command palette. The command palette is a text-driven interface that allows you to access almost any action that's possible in Positron. It's your gateway to finding and running any command without clicking through menus or memorizing keyboard shortcuts.
It's fuzzy searchable, so even if you don't remember the name of a command or you aren't sure what commands are available, you can type a few letters or words and see what your options are. This feature will allow you to quickly access many of the other commands that we have to share with you today. So if you're not already using the command palette as part of your daily workflow, this is a really great habit to build to help familiarize yourself with Positron.
All right, so let's start building that habit right away. Let's open up the command palette and run the command, welcome open walkthrough. So we ran the command, welcome. We're running the command, welcome open walkthrough. And then we'll type migrating and select one of these walkthroughs. Positron will open up one of these walkthroughs, and these will provide step-by-step guidance on how to get situated in Positron. These are a great way to learn how to migrate from VS Code or from RStudio.
Now if you're looking for, for example, the four-pane data science layout, which you may be familiar with from RStudio, you can run the command, view stacked layout. Once you do that, you'll be presented with your files, your code editor, your variables, console, and plots all in one view. If you want even more customization, you can run the command, customize layout, or here we've searched for view layout, and we've got all these other options for you to try out.
Next up, we'll jump over to the interpreter picker in the top right of Positron. The picker shows the interpreter for the active console session. The active session provides the data you see in the variables pane. The picker is especially helpful when you have multiple console sessions going, so you can tell which session is currently active.
Speaking of multiple sessions, you can create them for various R and Python runtimes by clicking on the plus button in the console. If you click into the dropdown by the plus button, you can select a different interpreter if you don't want to use the active interpreter. Now if you've got a few consoles going, it can start to get confusing which console is for what. So one of Isabelle's favorite features to renaming your console, you can right-click on a console session to rename it, and you can even include emojis if you want.
One more console tip. There's this little info icon in the console, and if you click on that, you will get some metadata about the console, like the interpreter path or some quick links to relevant output channel logs. And as Isabelle mentioned, Ruby is going to be doing a lightning talk later today on multi-console, so stay tuned for that if you want to learn more.
Up next we have key bindings. You're likely already familiar with what a key binding is, but just to review, it's the association of a specific key or a combination of keys with a command. So to get to the key bindings UI, you can run the command preferences open keyboard shortcuts, and you can bind any command that you can run through the command palette.
When you find yourself using the same command frequently, you can check if a key binding exists and add your own if it doesn't. The simplest way to do this is to use the keyboard shortcuts editor. But for more granularity, you may want to edit key bindings.json directly. So you can do this by running the command open keyboard shortcuts json.
In this example, I'm taking advantage of a built-in command, run commands, that allows you to chain together multiple commands into a single key bindings. Here I'm using the kill terminal and new terminal commands to create a quick way to restart my terminal. I'm using the when clause so that the binding is only active when my focus is in the terminal, leaving the key binding available for other scenarios as well.
Exploring your data
So now we're going to move on to tips for exploring your data. We'll start off by introducing the Data Explorer. The interface is divided into a filter bar, data grid, and summary panel. The summary panel shows each column's name, its data type, and the percentage of missing values, and it even includes a small histogram. And you can view data frames you've loaded into your session variables, but you can also click on your data file in the File Explorer, and it will automatically open in the Data Explorer. You can do this with compressed files as well, no manual unzipping required.
What if I just want to see the raw CSV file? Well, you're in luck, because that is also as simple as the click of a button. As we can see here, viewing your plain text file just requires clicking here, and you can easily open two tabs and switch between the Data Explorer and raw text file. The Data Explorer watches your source, so any changes made to your CSV file will be reflected instantly. So if you're interested in learning more about the Data Explorer, stick around in this room. Wes McKinney has a talk for exploring datasets in Positron.
Have you ever found yourself lost in a sea of editor tabs, trying to find that one file? You're scrolling back and forth through all the file tabs. You're starting to forget which file you're even looking for. Wouldn't it be nice if you could just pin the tabs that you care about so much so you don't have to lose them?
You can pin editor tabs. They can be code files. They can be the Settings tab. They can be a Data Explorer that you want easy access to. All you have to do is right-click on the Editor tab and click Pin, and those tabs will be pinned to the beginning of your open editors.
So I really love this feature, but sometimes I still feel like I'm getting lost in a sea of editor tabs. Well, okay. Well, you may want to reevaluate the ones you really need if you're pinning them, but in the meantime, you can use this setting, Pin Tabs on Separate Row. So if you enable this, you get a little bit more real estate, and you get your pinned tabs above your other tabs.
Now on to plots. Do you ever wish you could open up your plot in a larger space? Maybe you want to see the Iris dataset in full screen. You can do this by clicking on this little button here in the Plots pane to open the plot in a new window or an editor tab.
Now we're just going to do a spontaneous theme change, so let's switch over to Positron Dark here. Ooh, sharing. My eyes. What happened to the dark mode? Well, this is what you will get if you export this plot as an image, but during your authoring and editing process, we can de-ruin your dark mode by clicking on this circle button in the Plots pane. This allows you to configure whether plots should have a filter applied to them. By default, no filter is applied, but you can configure this to follow your theme or you can select a dark filter if you are just super into dark plots all the time. So let's go ahead and choose Follow Theme. And all is well now.
Pairing with Positron Assistant
With that, let's move on to talking about effectively pairing with Positron Assistant. Positron Assistant is an AI client that provides LLM integration with Positron through chat and inline completions. It's great for helping with debugging, refactoring, or getting suggestions for the next steps that you should take in your project.
Two concepts that you should really understand to make the best use of Assistant are context and tools. Context refers to the information that Positron Assistant provides to the LLM alongside your prompt. Positron Assistant provides context about files and folders, and it also provides your in-memory data from your session. So this includes your loaded variables, plots pane, active console sessions, and session state. With your permission, Assistant can even run code directly in your active session.
You can take advantage of this context by asking Assistant to plot data frames for you or tweak things like the title or access labels on your plots.
You can view what context Assistant is passing to the LLM in your chat context. So here we ask Assistant about the current plot with the console session enabled as context. Assistant has access to review the plot as well as the code that generated the plot. And you can see this because the open eye icon is open next to the context.
What about closing the eye? What if we want it closed? You can close the eye. You can control exactly what context Assistant sends to the LLM. So whether you have security concerns or the context is just irrelevant to your prompt, you can close your eye by clicking the eye icon. So in this example, we've removed access to the console session context. Assistant is aware that you have a plot, but it cannot see the plot nor the code that generated the plot.
Providing relevant contextual information can yield better results from AI models, so there may be even more context that you want to provide to Assistant. You can do this by clicking add context to attach additional context such as files and folders, and you can even add additional interpreter sessions as well.
Much of this context is provided to the LLM through tool calling. So for example, if you ask a question about the current plot, Positron Assistant will call the get plot tool, and that will allow the active plot image to be included with your question. Without the get plot tool, the AI model isn't actually able to see your image.
If you want to check if Positron Assistant has called a tool, you can keep an eye out for this green check mark followed by some text describing an action. So in this case, we have viewed the active plot. By default, Positron will call tools that seem relevant to your prompt, but it can be helpful to attach tools as context. So if you want Assistant to utilize specific tools with your prompt, you can click on add context in the chat, and then tools, and you'll be able to pick a tool to include as your context.
Let's now take a look at a couple other tools available with Positron Assistant. The get an R help page tool looks at your current R session and loaded packages and retrieves help and vignettes content for that package. The AI model is then provided with this content so that you can get guidance directly based on the package's documentation.
Another tool Positron Assistant provides is the get changed files tool, which retrieves your file modifications from Git. If you want to use this tool, include hashtag changes in your message to Assistant. So for example, here we've asked Assistant, tell me about the hashtag changes I've made.
So if Assistant can understand my changes, does that mean it can just write the commit message for me? Yeah, you could ask Assistant, generate a commit message for my hashtag changes in the chat, or here we've added axolotl and kangaroo to our code, and from the source control panel, we've clicked the sparkles button in the commit message box, and Positron Assistant has generated the commit message for us.
Calling back to attach in context, you can also select source control, and this allows you to choose a specific commit to include as context. Sometimes, like, a lot of code can change in a commit if you're, like, changing a bunch of files, 10,000 lines have changed, or maybe it's just code that you're unfamiliar with, so you can attach that commit as context and then ask Assistant to help you understand or summarize those changes.
With these tips in mind, we welcome you to try out Positron Assistant, which is currently in preview in Positron. You'll need to enable the Positron Assistant enable setting, so search for that in the settings UI and check the checkbox, and for more on Positron Assistant, check out our docs at positron.posit.co.assistant.
Wrap-up and Q&A
All right, we went over a lot of tips and tricks today, so if you did miss anything, the slides will be uploaded post-conf, so keep an eye out for that, and to learn more about Positron at conf, Austin's up next to talk about remote SSH in Positron and Wes shortly after with a talk on the Data Explorer, and here are a few other sessions and demos you might be interested in for more Positron content, so keep an eye out for that in the conf schedule, and if you haven't seen it already, there's a Positron lounge just outside this room where the couches are if you want a hands-on demo of Positron Assistant or to chat with Positron devs, and we'll be there as well. All right, thank you, everyone, and open up for questions.
Thank you so much. I have a couple of questions here. So when defining new key bindings, the autocomplete helps find commands. Where can I find the help slash description for that command, including its arguments?
So just, I guess, general documentation for the commands that are available, if I'm interpreting that properly. So if you're in Positron, a good way to look for key bindings is if you run the open up key bindings command. There is a UI that Melissa showed earlier where you can search for key bindings. There's even a button that you can toggle, and if you do a key binding like Command-C, it will pull up all the commands that that corresponds to. A lot of the commands that you can use are ones that we've inherited from VS Code as well, so VS Code documentation would be a great place to look that up as well.
So I have two related questions. Can Positron Assistant be turned off, and are there data leakage risks with Positron Assistant? Do the LLMs have access to the underlying data, or is that a feature that needs to be selected? Yeah, so as Positron Assistant is currently in preview, it is currently opt-in, so it is disabled by default in builds of Positron. So to enable it, you'll have to enable the Positron Assistant enable setting, and if you do have Positron Assistant enabled, Melissa was talking about the open eye, closed eye icon in the chat pane. That allows you to include or exclude your session context from your prompt. Your session context will have things like the code that you ran in your console, the variables you have loaded in your environment, so if that's not something you want to include, you can disable your context, and that won't be sent over to the LLM.
So can you make keyboard shortcuts available to colleagues, kind of like sharing preferences, sharing key bindings? Is it possible to share a preferences file or something like that, or a key bindings file? Yeah, so the key bindings JSON file? Right, so you can add them to the key bindings.json file, and I believe you can even include that in a project. Yeah, so there's a .vs code directory that will get created if you create the key bindings.json file in your project, and if multiple people are checking out that same project or you're sharing that project, that will be available as part of that specific project. Otherwise, your key bindings are at the user level, so they'll be local to your machine.
So does Positron only allow R and Python coding? Can extensions be used to introduce more interpreters for other languages in the IDE? Yep, so Positron's completely language agnostic, so any of the VS code extensions or language packs will work in Positron, and yeah, that's one of the great things about it is that it's not restricted to R and Python. The only limitation is that the interpreter-specific UI components like the interpreter picker or the console sessions, those right now we only have support for R and Python. Great. Thank you so much.

