Linux online course

Linux Text Editors: Command-Line and GUI Options

Learn what Linux text editors do, how plain-text files differ from formatted documents, and how to edit files with nano, vi, Vim, gedit, and KWrite.

A text editor is a program for creating and modifying plain-text files. Plain text contains characters without document-style formatting such as fonts, page layout, or embedded images. A word processor creates formatted documents that may contain styling, images, tables, and layout information.

A text file stores readable character data. Linux uses text files for source code, notes, shell scripts, logs, and configuration. A configuration file is a text file containing settings used by Linux, services, or applications.

Why Text Editors Matter in Linux

Many Linux and application settings are stored in text-based configuration files. Editing one of these files can change how a service starts, how an application behaves, or how a user account is configured.

Common tasks include changing configuration values, writing shell scripts, editing user files, and creating notes or documentation. System-owned files may require appropriate permissions. Permissions are rules controlling who can read, modify, or execute a file.

Command-Line and GUI Editors

Linux text editors fall into two broad categories. A command-line editor runs inside a terminal, the text-based interface used to run commands and terminal applications. A GUI editor is a graphical text editor that runs in a desktop environment.

CategoryExamplesWhere It RunsBest Use CasesKey Considerations
Command-line editorsvi/Vim, nano, picoTerminal sessions, SSH connections, servers, and minimal installationsRemote administration, system recovery, scripts, and machines without a desktopAvailable over text-only connections, but some editors have a learning curve
GUI editorsgedit, KWriteLocal graphical desktopsComfortable interactive editing with windows, menus, mouse input, and keyboard shortcutsRequire a graphical session and the editor package to be installed

Availability depends on the Linux distribution, installed packages, and desktop environment. A server may have no GUI editor, while a desktop installation may offer several choices.

Command-Line Text Editors

vi and Vim

vi is a traditional terminal editor known for separate command and insert modes. Vim is an enhanced implementation of vi commonly installed or available on Linux systems. These editors are useful on remote systems because they operate entirely in a terminal.

vi and Vim are modal: keystrokes can either insert text or issue editing commands, depending on the current mode. This design is powerful but can surprise beginners.

vi textfile.txt
vim textfile.txt

In Vim, press i to enter insert mode and type text. Press Esc to return to command mode. In command mode, type :w and press Enter to save. Type :q and press Enter to exit. To save and exit, use :wq. To exit without saving, use :q!.

nano

nano is a beginner-friendly terminal editor. It displays common keyboard shortcuts at the bottom of the screen, making basic editing easier to learn.

nano textfile.txt

In nano, type normally to edit. The notation Ctrl+O means hold the Control key and press O; it writes, or saves, the file. Press Enter to confirm the filename. Use Ctrl+X to exit. If unsaved changes exist, nano asks whether to save them.

pico

pico is a terminal text editor historically associated with the Pine mail program. It may not be installed on modern Linux systems. When it is unavailable, nano is often a practical alternative.

Graphical Text Editors

GUI editors run in a desktop environment and are operated with windows, menus, mouse input, and keyboard shortcuts. They are often convenient when editing files on a local workstation.

gedit is a graphical text editor commonly associated with GNOME, a Linux desktop environment. KWrite is associated with KDE, a Linux desktop environment and software ecosystem. Names, defaults, and installed applications can vary across distributions and desktop environments.

gedit textfile.txt
kwrite textfile.txt

Opening a File

The general pattern is to start an editor followed by a filename or file path:

editor-name path/to/file

For example:

nano textfile.txt
vi /home/alex/notes/textfile.txt

A file path expresses the location of a file. A relative path is interpreted from the current working directory, such as textfile.txt or notes/today.txt. An absolute path begins at the filesystem root, such as /home/alex/notes/today.txt.

Opening an existing file loads it for modification. If the specified file does not exist, most editors open a new editing buffer; saving then creates the file at that path. Check the filename and directory carefully before saving.

EditorExample CommandInterface TypeNotes
geditgedit textfile.txtGUIAvailable where the gedit package and graphical session are present
nanonano textfile.txtCommand lineSimple controls and visible shortcut hints
vi or Vimvi textfile.txt or vim textfile.txtCommand lineModal editing; vi or Vim is often available on Linux systems
KWritekwrite textfile.txtGUIAvailable where KWrite is installed

Basic Editing Workflow

  1. Choose an editor that is installed and suitable for the current environment.
  2. Open the file with the editor and its path.
  3. Make the required text changes.
  4. Save the file using the editor's save command.
  5. Exit the editor.
  6. Verify the resulting contents and, when useful, the file's ownership and permissions.

For a simple practice exercise, create a notes file with nano:

nano my-notes.txt

Enter a short note, press Ctrl+O, confirm the filename with Enter, and press Ctrl+X. Then verify the contents and existence:

cat my-notes.txt
ls -l my-notes.txt

cat displays the file contents. ls -l confirms that the file exists and shows ownership and permissions.

Practice: Safely Edit a Configuration-Style File

Do not begin by changing a live system file. Instead, copy a sample into a user-owned location, edit the copy, and compare the content:

cp sample.conf ~/sample-practice.conf
cat ~/sample-practice.conf
nano ~/sample-practice.conf
cat ~/sample-practice.conf

Change one setting in the copy, save it, and use cat to inspect the before-and-after result. This demonstrates configuration editing without changing an active system setting.

Choosing an Editor

SituationRecommended Editor TypeReason
Remote server over SSHnano or vi/VimSSH commonly provides a terminal but no graphical desktop
Desktop system with GNOMEgedit or another installed GUI editorWorks naturally in a GNOME desktop session
Desktop system with KDEKWrite or another installed GUI editorWorks naturally in a KDE desktop session
Minimal Linux installationvi/Vim or nanoTerminal editors do not require a graphical environment
Beginner terminal editingnanoShortcut hints and straightforward controls reduce the initial learning curve

Choose a GUI editor when a local desktop is available and visual controls are helpful. Choose a command-line editor for SSH, servers, recovery shells, and minimal installations. Learning at least one terminal editor, especially nano or basic vi/Vim commands, is valuable for Linux administration.

Troubleshooting

The editor command is not found

The editor may not be installed, its command name may differ on the distribution, or a GUI editor may be unavailable. Check which editors are installed, try an available terminal editor such as vi or nano, and install the desired package with the distribution's package manager when permitted.

A GUI editor does not open

No graphical desktop session may be running, the remote session may lack graphical display forwarding, or the machine may be a headless server. Use a command-line editor, or edit the file locally and transfer it when that is appropriate.

Changes cannot be saved

The user may lack write permission, the filesystem may be read-only, or another user or the system may own the file. Inspect ownership and permissions with ls -l. When practicing, edit a copy in your home directory. Use elevated privileges only when necessary and take extra care with system files.

The wrong file opened

A mistyped filename, unexpected current directory, or incorrect relative path can cause an empty new file to appear. List files before editing, check the current working directory, and use an absolute path for important files.

I cannot exit vi or Vim

Press Esc to leave insert mode and return to command mode. Then use :wq to save and quit, or :q! to quit without saving. Press Enter after each command.

Key Points

  • A text editor creates and modifies plain-text files, not formatted word-processing documents.
  • Linux uses text files for scripts, logs, notes, source code, and configuration.
  • Command-line editors work in terminals, including SSH sessions and minimal installations.
  • GUI editors require a graphical desktop session and the appropriate installed package.
  • Always check paths and permissions before editing important files.
  • Save, exit, and verify the result as part of a consistent editing workflow.

For related study, review Linux text editors alongside file navigation, permissions, shell scripting, and SSH administration.