Skip to content

The nvim command

Most of the time we will open Neovim in a terminal emulator using the nvim command.

Now, Neovim doesn't have the concept of a project (yet). Using the nvim command without any argument won't restore the last session or project or anything like that.

When we want to work on a project is best to navigate to that directory before opening Neovim. We should use the cd command to go to our project and then execute the nvim command.

Open a file

The command nvim some-file will show the content of some-file if it exists, else it'll show an empty "buffer" with the name some-file.

Open a directory

If the first argument of the nvim command is a directory Neovim will use its own file explorer to show the content of the directory.

Relative paths work just fine. So, nvim . is a valid way to see the content of the current directory.

How to exit

Follow these steps if you ever find yourself inside Neovim against your will:

  1. Do not panic!
  2. If you actually did panic, press the Escape key repeatedly like a maniac for 2 seconds
  3. Type :
  4. Write quitall!
  5. Press the Enter key

This process is 100% compatible with Vim, by the way.

If you are curious about the details: the Escape key makes the editor go into normal mode. Typing : while in normal mode will take you to command-line mode. Command-line mode is where you write ex-commands. quitall! is the ex-command that closes all windows and exits without save.

Headless mode

Headless mode is Neovim without the UI. We can use this in scripts to make Neovim do stuff and then quit.

Here's a somewhat useful example. Executing the following command on the terminal will show the location of Neovim's config directory.

sh
nvim --headless -c 'echo stdpath("config") . "\n"' -c 'quit'

Change your config directory

It seems these days is common for users to have multiple Neovim configurations. Since Neovim v0.9 we can change the sub-directories Neovim will use to store configuration files and other data. We do this by setting an environment variable called NVIM_APPNAME.

So let's say we want a special config with many plugins and we want to call this nvim-ide. On any POSIX shell like bash or zsh the following command would work just fine.

sh
NVIM_APPNAME=nvim-ide nvim

Now every "standard directory" in Neovim will have a different path from the regular nvim command.

We can verify the location of the new config using this command.

sh
NVIM_APPNAME=nvim-ide nvim --headless -c 'echo stdpath("config") . "\n"' -c 'quit'

Unfortunately on Windows' cmd.exe environment variables don't work like that.