A text editor is a program to create and edit text files. Although it is not impossible to edit files without using one, text editors make it easy, and are handy for editing configuration files.
Default, fallback, and virtual packages
As with most things Gentoo, text editor choice is up to the user. As a text editor will be necessary during and just after installation, the virtual package, virtual/editor (part of the system set), will pull in app-editors/nano (as the first "any of many" dependency of the ebuild) as a fallback - until another "virtual/editor" package is emerged.
Thus, after a stage 3 installation, the nano command will be available once chrooted to a newly installed Gentoo. As the stage 3 tarballs only contain packages that are strictly necessary for every system, Nano will be the only text editor available in the stage 3 chroot. A replacement editor may be emerged on the new system, as soon as the Gentoo ebuild repository is installed and optionally updated.
The default editors for the CLI will be used by many programs to determine which text editor to start up, when needed. Programs such as CLI file managers will use this default, or when invoking an editor from bash using Ctrl+x Ctrl+e. The default editors are set using the VISUAL and EDITOR environment variables. Generally, VISUAL will take precedence over EDITOR, which is used for less capable terminals.
See the setting system default section.
The Minimal Installation CD, available for download from the Gentoo website, includes the Nano, Emacs, and vi editors. After chrooting to a new environment for installation, the same editors will not all be available, though any editor of choice may now be installed.
When the first editor that is a dependency of the virtual/editor package is emerged, this will satisfy the "any of many" dependency, so Nano will no longer be required. emerge --select app-editors/nano to add Nano to the world set, to prevent emerge --ask --depclean from uninstalling Nano.
Text editor options can be found online in the app-editors category or by running:
|Emacs||app-editors/emacs||Advanced||Huge||Class of powerful, extensible, self-documenting text editors.|
|Kakoune||app-editors/kakoune||Medium||Advanced||Modern, actively developed editor for the command line, inspired by vi.|
|Micro||app-editors/micro||Easy||Advanced||Modern and intuitive terminal-based text editor. Still in testing branch as of 2022-11.|
|Nano||app-editors/nano||Easy||Advanced||Easy to use text editor.|
|Neovim||app-editors/neovim||Advanced||Huge||Vim fork focused on extensibility and agility.|
|Vim||app-editors/vim||Advanced||Huge||Text editor based on the vi text editor.|
See the vi article for more vi(like) editors.
|Emacs||app-editors/emacs||Class of powerful, extensible, self-documenting text editors.|
|Gedit||app-editors/gedit||Text editor for the GNOME desktop.|
|GVim||app-editors/gvim||GUI-based version of the vi text editor.|
|leafpad||app-editors/leafpad||Simple GTK2 text editor|
|jEdit||app-editors/jedit||jEdit is a programmer's text editor written in Java.|
|Kate||kde-apps/kate||KDE text editor. Development oriented.|
|Mousepad||app-editors/mousepad||Bare-bones text editor for Xfce that starts up extremely quickly.|
|pluma||app-editors/pluma||A fork of Gedit 2 by MATE. Small and lightweight UTF-8 text editor for the MATE environment.|
|scite||app-editors/scite||Very powerful editor for programmers. Oriented towards source editing.|
|VSCode||app-editors/vscode||Highly extensible, electron-based text editor from Microsoft.|
|VSCodium||app-editors/vscodium||Free/Libre Open Source Software Binaries of Microsoft's VSCode.|
Due to the sensitive nature of /etc/sudoers it may only edited via the visudo command which in turn is limited to a predefined selection of editors. Type man visudo for more information.
Setting system default
A system wide default text editor is defined in the /etc/env.d/99editor file, for example:
The system default editor can be set with the eselect utility, which modifies this file automatically. To list available editors (install editor of choice for it to become available with eselect editor):
eselect editor list
Available targets for the EDITOR variable:  /bin/nano  /bin/ed  /usr/bin/emacs  /usr/bin/ex  /usr/bin/vi [ ] (free form)
If using Vim or Neovim, select vi, then see the this article.
To set a new editor, replace
<NUMBER> in the following command with a number corresponding to the text editor of choice:
eselect editor set <NUMBER>
Next, the environment must be updated by running the following command:
User's EDITOR environment variable will now have the default value selected. Users may change this value however, in a running shell, or automatically on login shell startup.
sudo does not preserve the user's environment variables, so when using sudo, expect that the default editor may not be the same as the currently running user's.
To set the VISUAL variable, follow the same procdure, but with eselect visual.
The old method of setting the EDITOR variable in /etc/rc.conf is no longer supported. See this article for details.
- Knowledge Base:Edit a configuration file
- Hex editor — an application to allow viewing and editing of binary files, as opposed to text files.
- Pager — a tool for displaying the contents of files or other output on the terminal, in a user friendly way, across several screens if needed.
- Recommended text editors
- Recommended programming text editors