Changing Your Default CLI Text Editor in Ubuntu/Debian

Choosing the right text editor for command-line interface (CLI) tasks on Ubuntu or Debian systems is crucial for developers, system administrators, and power users alike. A suitable text editor not only enhances productivity but also makes CLI tasks more manageable and enjoyable. In the Linux world, there are several popular text editors, each with its unique set of features. Some of the most widely used CLI text editors include Vim, Nano, and Emacs, catering to different preferences and expertise levels.

In this tutorial you will learn:

  • How to set Vim, Nano, or another text editor as your default CLI text editor using update-alternatives.
  • How to configure your preferred text editor as the default for your user account using environment variables.
  • How to use the ~/.selected_editor file to specify your default text editor for certain applications.
Changing Your Default CLI Text Editor in Ubuntu/Debian
Changing Your Default CLI Text Editor in Ubuntu/Debian
Software Requirements and Linux Command Line Conventions
Category Requirements, Conventions or Software Version Used
System Ubuntu/Debian Linux
Software Vim, Nano, Emacs (or any CLI text editor of your choice)
Other A terminal and access to a user account
Conventions # – requires given linux commands to be executed with root privileges either directly as a root user or by use of sudo command
$ – requires given linux commands to be executed as a regular non-privileged user

When it comes to choosing a default text editor for use in the command-line interface (CLI) on Ubuntu or Debian, it’s essential to consider the features, user interface, and learning curve of each option. Below is a short overview of several popular text editors, including their full path locations, to help you make an informed decision before setting your default CLI text editor.

  • Nano: Ideal for beginners due to its simplicity and ease of use, Nano offers a straightforward text editing experience without a steep learning curve. It’s equipped with basic features suitable for simple text editing tasks. /usr/bin/nano
  • Ed: As the original Unix text editor, Ed is a line editor that operates without a graphical interface. It’s best suited for those who need to make quick modifications to files in a non-interactive mode or are interested in using a piece of computing history. /usr/bin/ed
  • Vim: Known for its power and flexibility, Vim caters to experienced users who demand efficiency and a robust set of features. It offers a modal editing experience and a wide array of plugins and customizations. /usr/bin/vim
  • Emacs: Emacs stands out for its extensibility and the ability to function as more than just a text editor; it can be customized into a full-fledged development environment. Its steep learning curve is offset by its powerful set of features. /usr/bin/emacs

Whether you prefer the user-friendly interface of Nano, the minimalist approach of Ed, the efficiency of Vim, or the extensive capabilities of Emacs, your choice of text editor should align with your workflow and editing needs. Understanding the path to each editor’s binary is crucial when configuring your system to recognize your preferred editor as the default, especially when employing methods that require specifying the full path.

Among the lesser-known aspects of Linux text editors is Vim’s playful nod to “The Hitchhiker’s Guide to the Galaxy.” By entering the command :help 42 in Vim, users are treated to a whimsical reference stating that “the meaning of life, the universe, and everything equals 42.” This hidden gem is a testament to the developers’ sense of humor, blending functionality with fun.

Setting the Default CLI Text Editor on Ubuntu/Debian

Whether you prefer the simplicity of Nano, the power of Vim, or the extensibility of Emacs, setting your favorite text editor as the default can streamline your workflow. Follow these methods to configure your preferred text editor:

  1. Using update-alternatives for System-wide Configuration: To set, for example, Vim as the default editor for all users
    # sudo update-alternatives --config editor
    Using update-alternatives to set a System-wide Configuration text editor preference
    Using update-alternatives to set a System-wide Configuration text editor preference

    Then select Vim from the list provided. This approach changes the default editor across the system, affecting all users and applications that utilize /usr/bin/editor.

  2. Configuring Environment Variables for User-specific Settings: To set Vim as your default editor
    $ echo "export EDITOR='/usr/bin/vim'" >> ~/.bashrc
    $ source ~/.bashrc

    Replace '/usr/bin/vim' with the path to your preferred text editor (e.g., /usr/bin/nano or /usr/bin/emacs). This sets the default editor for your user account and is respected by many command-line applications.
  3. Utilizing ~/.selected_editor for Specific Applications: To choose Vim through the select-editor utility
    $ select-editor
    Using select-editor command to set a Specific Applications text editor preference
    Using select-editor command to set a Specific Applications text editor preference

    Select Vim from the options presented. This choice is saved in the ~/.selected_editor file and primarily influences utilities that explicitly check this file, like crontab -e.

After setting your preferred text editor as the default for CLI operations on Ubuntu or Debian, it’s important to verify that the change has been implemented correctly. This ensures that your system uses the specified editor for various command-line tasks, such as editing configuration files or committing changes in version control systems. Understanding the precedence of different configuration methods can also help you troubleshoot any discrepancies in expected behavior.

Testing Your Default Text Editor Setting

To confirm that your default text editor has been set correctly, you can perform a simple test using a command that requires text editing. One common method is to attempt editing the crontab:

$ crontab -e

This command opens your crontab file for editing. If your preferred text editor launches, then your default editor is set correctly. If it doesn’t, you may need to review your configuration steps.

Understanding Configuration Precedence

When multiple methods have been used to set default text editors, it’s essential to know which configuration takes precedence:

  1. Environment Variables (EDITOR and VISUAL): Setting the EDITOR or VISUAL environment variables in your shell configuration file (e.g., ~/.bashrc or ~/.zshrc) usually takes the highest precedence. This method affects the current user and is respected by many command-line applications.
  2. User-Specific Settings (~/.selected_editor): For applications that utilize the select-editor mechanism, such as crontab -e, the choice stored in ~/.selected_editor takes precedence. This file’s settings are specific to your user account.
  3. System-Wide Configuration (update-alternatives): The default editor set by update-alternatives for the system (providing /usr/bin/editor) affects all users. However, this setting is overridden by the user-specific configurations mentioned above.

If you’ve configured your default text editor using multiple methods, remember that environment variables (EDITOR and VISUAL) will usually override other settings for the current user session. Meanwhile, update-alternatives provides a system-wide default that can be superseded by user-specific configurations.

By understanding how to test your default text editor setting and the precedence of different configuration methods, you can ensure that your preferred editor is always used in your CLI environment. This knowledge allows for a more tailored and efficient workflow on Ubuntu or Debian systems.


Setting a default text editor that aligns with your preferences and workflow is a foundational step in optimizing your CLI experience on Ubuntu or Debian systems. By following the methods outlined in this guide, you can ensure that tasks requiring text editing are both efficient and suited to your preferences, whether you’re working on a personal project or managing servers.

Comments and Discussions
Linux Forum