One needs to use a tool to enter and modify source code. On this page we discuss the different tools and their pros and cons.
To start nano
on a Research Computing system:
$ nano
nano
is easy to learn and widely available. Do not use nano
if you regularly write code. Instead, use a more advanced tool.
To start vim
on a Research Computing cluster:
$ vim
vim
has a scripting language that allows for plugin-like extensions to enable IDE behavior, syntax highlighting, colorization as well as other advanced features. With vim
and emacs
you keep your hands on the keyboard and rarely use the mouse. Some find this helpful not only for productivity but to reduce repetitive strain injury (RSI) such as carpal tunnel syndrome. vim
takes some time to learn. Visit the vim website.
In January 2026, look for the Wintersession workshop Intermediate vim. See a vim
configuration file for macOS on iscinumpy.dev.
Neovim is a fork of vim with refactoring and modernizing the codebase and feature set. See an overview of Neovim on YouTube in 100 seconds. Plugins in Neovim are written in Lua. LazyVim is a Neovim setup powered by lazy.nvim
to make it easy to customize and extend your config. Read about Vim versus Neovim.
Neovim offers these benefits:
- plugins written in Lua
- built-in language server protocol (LSP) for code completion
- scriptable terminal emulator
- telescope: a fuzzy file finder plugin
- treesitter for syntax highlighting
On Della and Tiger, one can install Neovim by running these commands:
$ wget https://github.com/neovim/neovim/releases/download/v0.11.2/nvim-linux-x86_64.tar.gz
$ tar -C . -xzf nvim-linux-x86_64.tar.gz
$ cd nvim-linux-x86_64/bin
$ ./nvim
One can also install it using conda
:
$ conda create --name nvim-env nvim -c conda-forge -y
On Stellar and older systems, you may need to use an older version or build from source.
To start emacs
on a Research Computing system:
$ emacs
emacs
can be used for many tasks beyond text editing. It can be configured to mimic an IDE. Some find that a finely-tuned emacs
configuration can outpace any IDE for software engineering. Visit the emacs website. emacs
takes some time to learn.
What is an IDE? An integrated development environment (IDE) is a software application that helps programmers develop software code efficiently. It increases developer productivity by combining capabilities such as software editing, building, testing, and packaging in an easy-to-use application.
Visual Studio Code or VS Code is a popular IDE for Python and several other languages. After installing, see the getting started materials.
Upcoming workshop Connecting Visual Studio Code to the Research Computing Clusters Thursday, June 26, 2025 at 2:30-4:00 PM Location: Lewis Library 121 Instructor: Mattie Niznik, Research Software & Programming Analyst, Research Computing |
Remote development is possible on the Research Computing systems. This allows you work with files on a remote system with VS code installed locally on your laptop.
Another way to use VS Code on the Research Computing clusters is via Open OnDemand. In the main menu, choose "Interactive Apps" then "CodeServer on Vis Nodes".
vim
users should be aware of VSCodeVim which is an extension that provides vim
emulation for Visual Studio Code.
Users can work on a GitHub repo in a browser-based VS Code environment. To do this just browse to a GitHub repo and press the period key on your keyboard.
JetBrains provides IDEs for Python, Java, JavaScript, .NET, and more. See PyCharm for Python. Get the Professional edition by using your princeton.edu
email address. With the professional version you can do remote development.
Princeton Research Computing encourages researchers using the high-performance computing clusters to know one or more tools for simple editing and IDE-like work for software engineering. Here are some good possibilities:
- VS Code and nano/emacs/vim
- vim (fully configured as an IDE)
- emacs (fully configured as an IDE)
- PyCharm and nano/emacs/vim
The general idea is to know a simple text editor and something with IDE features. It is a good idea to use the same tools as your research group.
This page was created by Jonathan Halverson and members of Princeton Research Computing.