Getting Started with GNU Emacs: A Powerful Free and Open Source Text Editor
GNU Emacs is one of the most powerful and extensible text editors available, and the best part—it’s completely free and open source. Whether you’re writing code, taking notes, or managing tasks, Emacs can be customized to do nearly anything.
In this post, we’ll introduce GNU Emacs for beginners, explain how to install it—especially on Fedora Linux—and show how it can help with your programming workflow.
What is GNU Emacs?
GNU Emacs is a highly customizable text editor developed as part of the GNU Project. It was created by Richard Stallman and has been maintained by the Free Software Foundation.
- License: GNU General Public License (GPL v3 or later)
- Official website: https://www.gnu.org/software/emacs/
Why Use Emacs?
- Fully free and open source
- Highly extensible with Emacs Lisp
- Available on Linux, macOS, and Windows
- Large package ecosystem
- Ideal for programmers, writers, and researchers
Installing Emacs
Fedora Linux (Recommended)
On Fedora, installing Emacs is simple using the dnf
package manager:
sudo dnf install emacs
Ubuntu/Debian
sudo apt update
sudo apt install emacs
macOS (with Homebrew)
brew install emacs
Windows
- Download from the official GNU Emacs website or via MSYS2.
- Use the
.exe
installer and follow the on-screen instructions.
First Look: Emacs Interface



👉 Screencast showing a beginner session in Emacs—editing, saving files, and navigating buffers.
Requirements For Programming Text Editor
Glossary:
Code Editor
Designed for writing and editing source code.
IDE
Integrated Development Environment combines various tools need for software development.
Plugin
Software component that adds specific functionality.
Theme
Preset package containing graphical appearance to customize look and feel.
Open source
Freely available for possible modification and redistribution.
SCM
Source code management use to manage and track modifications to a source code repository.
LMB
Left Mouse Button (LMB) or left click
Test Tools
Name | Description |
---|---|
CPU | Intel(R) i7 2600 @ 3.40GHz. |
Memory | 16GB DDR3. |
Operating System | Fedora Linux Workstation 42. |
Desktop Environment | Gnome 48. |
Name | Description |
Name | Description |
---|---|
Large File | 1GB human-readable text. |
Regex File | Text with word “Emacs” repeated. |
Syntax File | PHP file containing HTML, CSS & JavaScript. |
Media File | Smiley face or Tux Linux JPEG file. |
Java Version | OpenJDK 21.0.7. |
PHP Version | PHP 8.4.10. |
Python Version | Python 3.13.5. |
Emacs Version | 5.5.7. |
Name | Description |
Test Scoring
- Each feature has two parts.
- Score of zero indicates a missing feature.
- A part of a feature is work a score of 0.5.
Three bias elimination steps were utilized. The editor was used for at least three years on different platforms. Attempts were made to get stable plug-ins for missing features. The same editor was compared between the one in the repository, the developers website, and the compiled version if applicable.
Selecting Editor Version
For this review, Emacs was downloaded from the developers website and it did not require additional plugins.
Features
- The theme can be native for the editor in terms of the background. Emacs dark and light themes can be created or downloaded. The score for the theme was a perfect 1.0.
- Dragging and dropping a text file into the editor opens a new tab or buffer. It is possible to specify the tab location during the drag and drop operation using
M-x tabbar-mode
normally ALT-X or ESC-X . The score for drag and drop into editor was a perfect 1.0. - Opening a very large text file did not crash Emacs. A “Emacs” Warning window is shown with an option to continue. It does remember the last session if using
recentf-mode
and it was possible to edit the large file. The score for opening a large file was 1.0. - Multiple documents can opened in multiple tabs or buffers. Tear-off tabs can be mimicked by having Emacs open the current buffer in a new window as a new instance which is handy for multiple monitors. The score for multiple documents was a perfect 1.0.
- Multiple editors can be opened as new tabs with drag options. Each tab window view can be split either vertically or horizontally as a multiple editor view. The score for multiple editor view was a perfect 1.0.
- Creating non-project files is possible. Non-project files can be opened by the drag and drop operation. The score for creating non-project files was a perfect 1.0.
- Soft word wrap can be enabled on all documents as line wrapping. Automatic soft wrap for documents is available from the Emacs settings. The score for word wrap was a perfect 1.0.
- Spell check works as words are typed. Spelling errors are not shown in opened documents automatically until
M-x flyspell-mode
, but spell check can work if an entire document is selected. The score for spell check was a perfect 1.0. - Word count is available for Emacs. Selection word count is available as
M-x count-words-region
. The score for word count was a perfect 1.0. - Go to line
M-x goto-line
can jump to a specified line. It is possible to jump to either the first or last line. The score for go to line was a perfect 1.0. - Indentation can default to user-defined tab stops. Children are automatically indented. The score for indentation was a perfect 1.0
- Fonts can be dynamically scaled using
C-x C-+
normally CTRL-X. The system font can be bypassed and a new editor font and size can be set. The score for fonts was a perfect 1.0. - Find and replace
M-x replace-string RET
or project-wide using regular expressionsM-x query-replace-regexp-in-files
can be utilized for all open documents in the current session. Find and replace will work for the current document or a selection in the current document. The score for find and replacing using regular expressions was 1.0. - Multiple language syntax highlighting in one file is enabled if the language plug-ins are installed. Each language has code-sensitive syntax colors which can be modified. The score for multiple language syntax highlighting was a perfect 1.0.
- Code folding does not work for markup languages such as HTML. Code folding also does not work for programming languages such as PHP and Java. It can be mimicked using
M-x hs-minor-mode RET
The score for code folding was 0.5 - Selecting rectangular block per column works using
M-x rectangle-mark-mode
. Rectangular block selection works with word wrap enabled. The score for selecting rectangular block was a perfect 1.0. - Multiple selection is available for Emacs using the multiple cursors plugin by Magnar Sveen. Search multiple selection is not available. The score for multiple selection was 0.5.
- Distraction-free mode to hide panes works. Line numbers can be toggled using
M-x display-line-numbers-mode
to improve distraction-free mode. The score for distraction-free was a perfect 1.0. - The file manager is available in Emacs using
M-x dired
. Media files can be dragged and dropped into the file manager pane. The score for file manager was 1.0. - Terminal does not require a plugin and can be invoked using
M-x term
. The terminal can follow folder. Terminal can execute system commands. The score for terminal was a perfect 1.0
Results
Emacs is a very powerful IDE. By default, the Emacs editor worked without tweaks, and any missing required features can not be installed by using plugins. For my required features, the Emacs editor scored 95.0% or 9.50 out of 10.
Learn More With Edward Ojambo
I provide tools and training to help you get the most out of Emacs and other programming tools:
- 📚 Books: Check out my programming books on Amazon
- 🎓 Courses: Take structured programming courses at Ojambo Shop
- 👨🏫 1-on-1 Tutorials: Need personalized help with programming or Emacs? Book an online session with me here
- 🔧 Emacs Setup or Migration: I can install or migrate your Emacs setup. Contact me at Ojambo Services
Final Thoughts
GNU Emacs might look intimidating at first, but with a little guidance, it becomes an incredibly efficient and powerful tool. If you’re using Fedora Linux or any other platform, you can get started with just a few commands.
Whether you’re just exploring Emacs or looking to make it your daily driver, I’m here to help you along the way.