Think of a text editor. It has been alive since 1976. Still, it shines on the screens of tens of thousands of developers every day. Moreover, while its rivals come and go, it stands tall. Here is the legendary Emacs. It is the heart of the GNU project. Also, it is the symbol of the free software world. This article will not just introduce a tool to you. It will open the door to a completely different work philosophy.
For years, I have tried countless editors in the field. Each one was popular in its time. Some impressed with speed, others with simplicity. But none gave the depth that this text editor offers. Because the point here is not just to write code. The point is to combine every task in your mind into a single environment.
Today, VS Code and JetBrains tools are on the rise. So why do so many people still use GNU Emacs? The answer is simple. Because this device is not an editor. It is almost an operating system. Inside it, you read email, listen to music, and manage your calendar. You can even use it as a window manager.
The innovations in 2025 and 2026 have heated things up even more. Thanks to native compilation, it is now much faster than before. Tree-sitter integration has brought syntax highlighting to a modern IDE level. Moreover, it has leaped forward with built-in JSON support and the LSP protocol.
In this comprehensive guide, I will tell you everything. From setup to configuration, from plugins to AI integration. Also, we will make a ruthless comparison with its rivals. My goal is not to convince you. It is to help you make the right decision. I want you to understand the free software philosophy.

What is Emacs? A Short and Quotable Definition
Let me say it in its simplest form. Emacs is a customizable, extensible, self-documenting text editor. But this definition would be unfair.
Because this environment offers a full-fledged development area. Besides, it hosts an email client, a file manager, and more.
Richard Stallman laid its foundations in 1976 at the MIT AI lab. It has been evolving constantly since that day. The GNU Emacs version appeared in 1985. It carries the pride of being the first software to use the GPL license. In other words, this tool is not just code. It is a manifesto of freedom.
At the base of this ecosystem lies the GNU/Linux ecosystem. To be clear, you must see this whole to grasp the free software world. Both projects aim to give control to the user.
What does this code editor offer you in daily life? First, endless customization. You can change every key, every color, every behavior. Second, universal integration. From Git to Docker, from Python to C, everything runs here. Third, the sense of control that comes with the plain text philosophy. Your data never gets trapped in any closed format.
In my personal experience, the real magic lies here. The steep learning curve challenges you at first. But once you get past it, turning back becomes impossible. Your fingers execute key combinations without thinking. Your mind focuses on your work, not the interface.
Most online sources label this system as ‘hard.’ But my field experience says otherwise. It is not hard. It just requires a different mindset. You need to forget your old shortcuts and learn a new language. Just like learning to play a new instrument. You get back more than what you put in.
The Meaning of the Name EMACS: ‘Editor MACroS’
The name’s origin is technical and modest. It is short for ‘Editor MACroS.’ Macros written for the TECO editor turned into an independent system over time. Richard Stallman gave this name to that macro collection. Later, its meaning became layered.
Funny expansions also emerged in the community. ‘Escape Meta Alt Control Shift’ is my favorite. Another one is ‘Eight Megabytes And Constantly Swapping.’ That joke made sense in the 80s. Today, thanks to native compilation, they have optimized memory usage. Still, the joke’s legacy lives on.
Actually, the name tells us something deep. This system started with macros at its core. That is, with users programming the editor for their own needs. This philosophy continues exactly the same today. Each user builds their own working environment. No two setups are the same.
The History of Emacs: The Free Software Revolution from the 1970s to Today
The story begins in 1972. Researchers at the MIT AI lab used an editor called TECO. TECO was raw and clumsy. Richard Stallman gathered the macros his friends wrote. The first Emacs emerged.
Later, this system spread quickly. Different universities developed their own versions. But commercial pressure increased.
Stallman launched the GNU project in 1984 to protect freedom. GNU Emacs became the first major work of this project. It also witnessed the birth of the GPL license.
In this journey to the present, technology revolutions happened. Graphical interfaces arrived, and mice became common. Even so, this tool never gave up its keyboard‑centric philosophy. On the contrary, it proudly carried its terminal roots into the GUI age. This consistency is the main reason for its loyal user base.
Its terminal roots actually rest on UNIX philosophy. The ‘everything is a file’ idea applies here too. To put it clearly, Emacs brings this tradition to the modern world.
More than 40 years have passed. They still actively develop it today. They released Emacs 30 in 2025. But, they are planning Emacs 31 for 2026. Each release brings next‑gen features. The community is alive, and the MELPA repo updates daily.
No one can argue its place in free software history. It is the cornerstone of the FSF, part of the GNU toolchain. It is a legendary name alongside GCC, GDB, and Bash. Its integration with GCC (GNU Compiler Collection) is especially famous. Together, they form a complete development environment.
So what does this history teach us? That technology is temporary, but philosophy is permanent. Software that gives users control and puts freedom first never dies. It survives for decades. Because people want to master their tools, not be enslaved by them.
The GNU Emacs and XEmacs Fork: The Biggest Split in Free Software History
A major break happened in 1991. The company Lucid wanted to develop its own version. But the FSF rejected their code contributions. As a result, XEmacs was born. The two projects moved in parallel for years.
Developers saw this fork as a philosophical divide. The GNU side defended central control. The XEmacs side wanted a more flexible development model.
Technically, XEmacs was ahead in graphical interfaces. Its GUI widgets and font management were more modern. Even so, the community eventually focused on the GNU version.
XEmacs development effectively stopped in 2009. But its legacy is huge. They transferred many innovations to the GNU side. Looking back today, I see that this split was the growing pain of the free software movement. A healthy competition pushed both sides forward.
2026 Perspective: Emacs 30, 31, and the Future
The future is bright and exciting. Here are the key innovations that came with recent releases and those planned:
- Native Compilation (GccEmacs): Elisp code now compiles directly to machine code. Startup time and runtime have visibly improved. This became the default with Emacs 30.
- Tree-sitter Integration: Syntax‑tree‑based parsing is now built in. Syntax highlighting and code folding are much more precise. Developers write new major modes using tree‑sitter grammars.
- Eglot Official LSP Client: No need for an external package for LSP. Eglot is now part of the core. It offers code completion and analysis at the level of VS Code.
- Android Support: With Emacs 30, it runs directly on Android. A full experience through an APK is possible without Termux.
- use-package in Core: No more external setup for package management. The use-package macro comes built in.
- JSON Support: The system now does JSON parsing and generation at the C level with built‑in functions. Performance on large JSON files is through the roof.
- SQLite Integration: They added built‑in SQLite support. Tools like Org‑roam no longer need an external database.
- Emacs 31 Expectations: Users expect multi‑threading support and Wayland integration from the new release. In short, we see a faster startup.
What Makes Emacs Different? Why Is It Still Used?
There are dozens of modern editors on the market. Many of them are free. Yet this tool stands in a unique place. Why? The answer is that no rival offers the same level of extensibility. None gives you the freedom to rewrite the tool completely.
The difference comes from philosophy. Other editors first deliver a solution, then allow customization. But this code editor first gives you a platform. You build the solution yourself. This approach takes time at the start. But the result is an environment that is entirely yours.
Also, being a self‑documenting system is a unique advantage. You can instantly query any function to see what it does. With the describe-function and describe-key commands. You don’t need to go online. The documentation lives inside the editor.
Another distinctive feature is buffer management. Every file you open, every output, every window is a buffer. No other tool has such centralized buffer management.
Window management lets you split your screen however you like. You open code on one side, a terminal on another, and documentation on a third.
Finally, the minibuffer and mode line systems. All commands work interactively through the minibuffer. The mode line shows real‑time status.
A major mode defines file‑type‑specific behavior. A minor mode lets you turn extra features on or off. This architecture has barely changed in 40 years. Because it works perfectly.
Especially Vim users are surprised when they see this flexibility. For someone from the modal editing world, this is a different universe. But with Evil mode, you can use Vim keys here too. So no one loses, everyone wins.
Emacs Lisp (Elisp): The Language at the Editor’s Heart
The Lisp programming language lies at the center of everything. More specifically, Emacs Lisp, or Elisp. Without this language, this tool is nothing. The system defines all editor behavior with Elisp functions. When you press a key, you actually trigger an Elisp function.
Over the years, I have worked with many languages. Python, JavaScript, C, Rust… But Elisp has a special place. It feels strange at first to learn. Parentheses tire you, prefix notation confuses you. But you get used to it within a week. After that, writing code becomes like writing poetry.
Because Lisp’s macro system is unique. You can treat code as data and generate new syntax. Thanks to this customizability, you can re‑create the editor from scratch.
Indeed, distributions like Doom and Spacemacs prove this. Engineers wrote entire configuration frameworks purely with Elisp macros.
Let me give a small example for beginners. The following line of code changes the font: (set-face-attribute 'default nil :font "Fira Code" :height 140). As you see, everything is a function call. Over time, you build huge systems from these simple building blocks.
Package Management: Modern Emacs with MELPA, ELPA, and use-package
In the past, installing packages was a pain. You had to download them manually and install by hand. Now, thanks to MELPA and ELPA repos, everything is automatic. Thousands of packages are at your fingertips. The package manager comes built in. With a single command, you search, install, and update.
Let’s set up modern package management step by step:
- Add the MELPA repository: Write these lines into your
init.elfile:(require 'package) (add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t) (package-initialize) - Define packages with use-package: It is now built into the core, so no setup is needed; start using it right away.
- Install your first package: For example, for
vertico:(use-package vertico :ensure t :init (vertico-mode 1)) - Add lazy loading: Use
:defer tor:commandsto load packages only when needed. Your startup time will fly. - Manage updates: Open the list with
M-x package-list-packages. PressUto mark,xto update.
My personal experience: I used to use straight.el. But with package-vc and built‑in use-package, I no longer need it. The system has matured enough. I recommend the vanilla experience to beginners.
Performance‑Focused Features: Native Compilation and JSON Support
A revolution in speed is happening. Here are the standout performance features:
- Native Compilation (gccemacs): Elisp compiles to machine code instead of byte code. Large configurations start 3‑5 times faster.
- Tree-sitter: An incremental parser written in C. The system finishes syntax highlighting instantly even on huge files.
- Dynamic module (emacs-module): You can load modules written in C, Rust, and other languages directly. Ideal for performance‑critical tasks.
- JSON Support: The built‑in
json-parse-bufferandjson-serializefunctions process large API responses in seconds. - Lazy Loading: If you load packages only when needed with
use-package, your startup time drops below one second. - SQLite Built In: Database‑heavy packages like Org‑roam are now light and fast.
What Can You Do with Emacs? (Killer Features)
Most people think of this tool as just a code editor. But it is actually a full digital living space. Let’s look at the most striking use cases. What I am about to tell you may surprise you.
From note‑taking to project management, from email to listening to music, everything is possible. These capabilities are ‘killer features’ — unique strengths that rivals lack. Moreover, all of them work together in an integrated way. You stay in one environment and never switch context.
The digital minimalism trend is rising. People are fleeing from distracting tools. At this very point, this platform is worth its weight in gold. You collect all your tasks in a single console app. With the plain text philosophy, your data stays readable forever.
Org-mode: The World’s Most Powerful Plain‑Text Tool
Org‑mode is an ecosystem in itself. I have never seen such a powerful plain‑text format. Here is what it offers:
- Task Tracking and GTD: With org‑agenda, you create daily and weekly plans. You manage your tasks with TODO and DONE states. Adding reminders and due dates is very easy.
- Note‑Taking and Zettelkasten: You build a second brain with Org‑roam. You link notes together using the Zettelkasten method. You explore your knowledge graph with a visual view.
- Academic Writing: You manage references with Org‑ref, Citar, and Helm‑bibtex. You write theses and articles with LaTeX and AucTeX integration. You export to Word, PDF, and HTML with Pandoc.
- Literate Programming: You combine code and documentation with Org‑babel. Python, R, Bash, and SQL blocks live in the same file. You see results instantly.
- Presentation Preparation: To produce a Beamer presentation from Org, you need the ox‑beamer export engine. Also, you must install a LaTeX distribution (like TeXLive). This is not an automatic feature; it requires extra setup.
- Time Tracking: You record the time you spend on projects with org‑clock. You generate weekly reports. For freelancers, it creates a basis for invoices.
Believe me, once you get used to Org‑mode, tools like Notion and Obsidian feel like toys. Because here, your data is truly yours. You are not locked into any cloud service.
Magit: The Best Interface for Git
If you use Git, don’t hesitate to try Magit. I am not exaggerating — this tool is the best interface for Git, much better than the command line or any GUI. You don’t get lost in the terminal. You don’t suffer the slowness of click‑based interfaces.
Magit gives you all of Git’s power in an instant, interactive buffer. Staging, committing, pushing, pulling, rebasing — all are done with a few keys. Even the most complex operations are right in front of you visually. You see instantly which lines are staged. In fact, you can stage individual lines one by one.
Developers also add GitHub and GitLab integration with the Forge package. You manage pull requests and issues right from your editor. No need to switch to a browser. I have used it for years, and it becomes addictive.
EXWM (Emacs X Window Manager): Make Emacs Your Window Manager
This feature blows minds. You can use this environment as a full‑fledged window manager. Yes, you heard that right. It becomes the manager of your Linux desktop.
What EXWM offers:
- Uniform Shortcuts: You manage all windows with Emacs keys. Browser, terminal, file manager — all work with the same logic.
- Windows as Buffers: Open apps behave like Emacs buffers. Thus, you switch between windows with Switch‑to‑buffer.
- Programmability: You customize window behavior with Elisp. You define automatic rules for specific windows.
- Keyboard‑Centric Use: You almost never need a mouse. This protects your wrist and finger health.
- Virtual Desktops: Multi‑workspace support is built in. You organize projects on separate desktops.
I used EXWM for two years. It demands patience at the start, but it increases productivity incredibly. Your hands never leave the keyboard.
Dired, Vterm, Projectile, and Other Essentials
Here are the tools I constantly rely on in daily use:
- Dired: A file manager. Copying, moving, deleting, batch renaming — all from the keyboard. With Wdired mode, you edit file names directly inside the buffer.
- Vterm: A full‑featured terminal emulator. Faster and more integrated than tmux. It behaves like a text buffer, so copy‑paste flows naturally.
- Eshell: A shell written in Elisp. You mix Unix commands and Elisp functions on the same line.
- Projectile: Project management. File search, test running, grep — all in the project context. With Ripgrep and fzf integration, you search at lightning speed.
- Tramp: Transparent access to remote servers. You edit files over SSH. It works as if the file were local.
- Elfeed: An RSS reader. You follow blogs and news. As a result, you don’t waste time in a browser.
- Eww: A built‑in web browser. It is text‑based and fast. Perfect for reading documentation.
- Mu4e / Notmuch: An email client. It indexes thousands of emails in seconds. It works offline, and search is lightning fast.
Doom Emacs, Spacemacs, and Ready‑Made Configurations: Which Is the Best Path for Beginners?
Starting from scratch can be intimidating. Luckily, the community has prepared great starter kits. Developers describe these kits as configuration frameworks.
Starting with Vanilla Emacs is the most educational path. But if you are short on time, ready‑made frameworks are a lifesaver. Let’s look at the two most popular options and a few alternatives. Then I will give a selection guide.
Doom Emacs: Focus on Speed and Minimalism
Doom Emacs is my personal favorite. Henrik Lissner develops this system. Its core philosophy is speed, minimalism, and pragmatism. It loads nothing unnecessary, only what serves you.
Its standout features:
- Startup Time: Thanks to aggressive lazy loading, it starts in 0.8‑1.5 seconds. It stays fast even with hundreds of packages.
- Evil Mode Focus: It comes with Vim keys by default. Ideal for those who love modal editing.
- Module System: You choose the languages and tools you need. You don’t load extras.
- Leader Key: The space bar works as the leader key. This helps you learn mnemonic shortcuts quickly.
- Comprehensive Documentation: Every module has a description and a shortcut map ready.
I think starting with Doom is the smartest choice. You learn fast and become productive. Then you gradually build your own configuration.
Spacemacs: Mnemonic Shortcuts and Comprehensive Documentation
Spacemacs is a huge framework developed by the community. Its goal is to make Emacs accessible to everyone. It targets especially those coming from Vim.
Spacemacs strengths:
- Layer System: Each language and tool is a layer. You add or remove them with one line.
- Mnemonic Shortcuts: All commands are grouped logically. You can guess what a key will do.
- Ready Configuration: Right after installation, you get a full‑featured IDE. You don’t need to adjust any settings.
- Large Community: You find quick solutions to your problems. The documentation is very detailed.
- Beautiful Interface: The default theme and modeline are very attractive. First impressions are perfect.
The downside is that startup time is longer than Doom’s. Besides, the system loads many packages. Moreover, you never use some of those packages.
Doom vs Spacemacs: Which Should You Choose?
| Criteria | Doom Emacs | Spacemacs |
|---|---|---|
| Startup Time | 0.8‑1.5 seconds | 2‑5 seconds |
| Philosophy | Minimal, fast, pragmatic | Comprehensive, accessible |
| Learning Curve | Moderate | Moderate to low |
| Customization | Easy, modular | Easy, layered |
| Default Shortcuts | Evil (Vim) | Evil (Vim) |
| Documentation | Good, concise | Very good, detailed |
| Community | Large, active | Very large |
To decide, apply this rule. If speed is your priority, choose Doom. If you want comprehensive documentation and a smooth start, choose Spacemacs. Either way, you won’t regret it. As a starting guide, I recommend trying both for two weeks.
I should also mention other options. Centaur Emacs is popular in the Chinese community. Prelude and Better‑defaults offer light starters. Experienced users usually build their own configurations with Vanilla Emacs. This path is long but the most educational.
Emacs and Artificial Intelligence: GPTel, Copilot, and LLM Integration
We are in 2026. AI is everywhere now. This tool has also kept up with the revolution. Moreover, it does so in a way that respects open‑source philosophy. Your data stays under your control. That is, you never send this data to any company.
Using AI inside Emacs is maturing quickly. A few years ago, there were only simple completions. Now, full‑featured chat, code generation, and analysis exist. Let’s look at the best tools.
Installing and Using GPTel: Bring ChatGPT to Emacs
GPTel is currently the most popular AI package. It offers multi‑provider support. It works with OpenAI, Anthropic, Ollama, and others. You choose where to send your data. This control freedom is priceless.
Let’s set it up step by step:
- Install the package:
(use-package gptel :ensure t :config (setq gptel-api-key "your-api-key")) - Open a chat buffer: Type
M-x gptel. The chat interface appears. - Ask a question: Start typing directly. Press Enter to send, and the response flows in.
- Interact with code blocks: You can run and edit code blocks in the response directly.
- Add context: You can add the open file or selected region as context.
I use this tool constantly in my daily workflow. It is great for code reviews, writing regex, and scanning documentation. Moreover, all chat history is saved as plain text. You can version it with Git.
Automatic Code Completion with Copilot.el
GitHub Copilot now works in Emacs too. With the copilot.el package, smart code completion comes directly to your editor. Setup is simple, and use is intuitive.
It offers contextual suggestions based on the code you write. When you write a function, it predicts the next lines. You accept with the Tab key. You quickly reject wrong suggestions. It saves time especially on boilerplate code.
My personal experience: trusting Copilot completely is dangerous. You must examine its suggestions with a critical eye. Still, when used right, it clearly boosts productivity. Especially when learning a new language, it acts like a syntax guide.
Other AI Tools and Future Perspective
The market is active, and new tools keep appearing. Here are other solutions I follow:
- llm.el: Provides a single interface to multiple LLM providers. It also works with local models. With Ollama integration, offline use is possible.
- chatgpt-shell: Connects directly to the ChatGPT API. It acts like a shell buffer. Ideal for quick Q&A.
- org-ai: AI use inside Org‑mode. It auto‑completes blocks and summarizes texts. It speeds up your note‑taking process.
- Emacspeak: Speech synthesis for the visually impaired. Combined with AI, interaction becomes much more natural.
- Future: Developers aim to offer built‑in LLM support, smart code transformations, and a contextual help system. As open‑source models get stronger, integration will deepen.
Emacs vs Rivals: Vim, VS Code, and Modern IDEs
Editor wars are legendary. Everyone defends their own tool. But I will make this comparison objective. Far from fanaticism, based on data. Here is an honest accounting of this code editor and its rivals.
First, let me state that every tool has a purpose and a target audience. There is no such thing as ‘the best.’ There is only the one that best fits your workflow. So read the comparisons, then try them yourself. You make the decision.
Emacs vs Vim: Modal Editing vs Non‑Modal
The rivalry between these two editors has exceeded 30 years. In fact, Vim and GNU Emacs represent different design philosophies. Here is a detailed comparison:
| Feature | Emacs | Vim |
|---|---|---|
| Editing Model | Non‑modal (default) | Modal editing |
| Extension Language | Elisp (full programming language) | Vimscript / Lua |
| Startup Speed | 0.5‑3 seconds (instant with daemon) | 0.1‑0.3 seconds |
| Number of Plugins | 5000+ (MELPA) | 3000+ |
| IDE‑Like Features | Built‑in (Magit, Dired, Org) | Via plugins |
| Learning Curve | Steep | Steep but short |
| Key Combinations | Multi‑key chords | Modal (Normal/Insert) |
Note that with Evil mode, you can use Vim keys one‑to‑one inside this tool. That means you combine Emacs power with Vim’s fast editing model. This hybrid approach gives you the best of both worlds. I have worked this way for years, and it is perfect.
VS Code vs Emacs: Speed, Plugin Richness, and Learning Curve
VS Code is today’s most popular editor. It stands out with Microsoft’s support, a huge plugin marketplace, and a low entry barrier. So how does this comparison turn out?
| Criteria | Emacs | VS Code |
|---|---|---|
| Performance | Light, low resource use | Electron‑based, medium to heavy |
| Plugin System | Elisp, MELPA | JavaScript, Marketplace |
| Customization | Unlimited, everything can change | Limited, themes and settings |
| Keyboard Focus | Full keyboard, mouse‑independent | Mouse‑oriented |
| Learning Time | 2‑6 months | 1‑7 days |
| Integrated Tools | Email, RSS, PDF, Music | Development only |
| Data Control | Completely yours | Telemetry, cloud account |
VS Code is ideal for those who want a quick start. If your team uses VS Code, there is no point in resisting. But in the long run, this text editor gives you more control and productivity. The decision depends on your priorities.
How to Get Started with Emacs? (Installation, Basic Shortcuts, Config)
The start is the most critical phase. Wrong steps can turn you off. If you start with the right method, your path will be clear. I will draw you the most solid starting route based on years of experience.
My first advice: don’t rush. Don’t expect to be productive right away. Give yourself two weeks to get used to it. Practice 30 minutes a day. You will reap the rewards of this investment for a lifetime.
Installing Emacs on Linux, Windows, and macOS (Latest Versions)
Installation is now very easy on every platform. Follow these steps to install the latest versions (30.x series):
Linux:
- Debian/Ubuntu:
sudo apt update && sudo apt install emacsThe repo usually has the latest version. If not, add a PPA.
- Fedora:
sudo dnf install emacs - Arch:
sudo pacman -S emacs - Source Code: For the very latest, do
git clone, then./configure && make && sudo make install. Add the--with-native-compilationflag for native compilation.
macOS:
- Homebrew:
brew install --cask emacsThis is enough for the GUI version.
- Emacs-plus: For more features:
brew tap d12frosted/emacs-plus && brew install emacs-plus
Windows:
- Download the
.exeinstaller from the official GNU FTP server. - Follow the setup wizard.
- Alternatively, use the command
winget install GNU.Emacs. - You can also run the Linux version on WSL2.
After installation, enable daemon mode. Run emacs --daemon to keep it in the background. Open files instantly with emacsclient. This zeros out startup time. This method also optimizes memory usage thanks to server mode.
Basic Shortcuts You Need to Learn in the First 20 Minutes
Start with basic shortcuts like Ctrl+X Ctrl+S. Here is your survival guide:
- Open File:
C-x C-f(find-file). The most basic command. Creates the file if it doesn’t exist. - Save:
C-x C-s(save-buffer). Make it a habit. - Quit:
C-x C-c(save-buffers-kill-terminal). Asks to save when exiting. - Run Command:
M-x(Meta key + x). Doorway to all commands. - Undo:
C-/orC-_. Unlimited undo, integrated with kill ring. - Search:
C-s(incremental search). Searches as you type. - Split Window:
C-x 2(horizontal),C-x 3(vertical). - Switch Between Windows:
C-x o(other window). - Switch Buffer:
C-x b(switch-to-buffer). - Get Help:
C-h kthen press a key. Shows that key’s function. - Copy‑Paste Shortcuts:
C-spaceto select,M-wto copy,C-yto paste. Navigate kill ring history withM-y. - Beginning/End of Line:
C-aandC-e.
Memorize these shortcuts. Spend your first day only on these. Don’t rush to learn more. Auto‑completion and syntax highlighting are already on by default. You will discover other features over time.
Your First init.el File: Package Management with use-package
The configuration file is at ~/.emacs.d/init.el. This init file is your control panel. Let’s create your first configuration step by step:
- Write basic settings:
;; Package archives (require 'package) (add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t) (package-initialize) ;; Turn off unnecessary UI elements (tool-bar-mode -1) (menu-bar-mode -1) (scroll-bar-mode -1) ;; Line numbers (global-display-line-numbers-mode 1) - Add your first package:
;; use-package is now built in, use it directly (use-package vertico :ensure t :init (vertico-mode 1)) (use-package orderless :ensure t :custom (completion-styles '(orderless basic))) - Load a theme:
(use-package doom-themes :ensure t :config (load-theme 'doom-one t)) - Add LSP mode:
(use-package eglot :ensure t :hook ((python-mode . eglot-ensure) (rust-mode . eglot-ensure))) - Install Tree-sitter:
(use-package treesit-auto :ensure t :config (global-treesit-auto-mode 1))
This basic configuration gets you started. It grows over time according to your needs. The important thing is that you understand what each package you add does.
Emacs on Android: A Full Emacs Experience on Mobile Devices
Android support is now official. With the Android port, it works on tablets or phones. Steps for installation:
- Install the F‑Droid store.
- Download the Emacs APK. Choose the 30.x version.
- Set up the keyboard. I recommend Hacker’s Keyboard or Unexpected Keyboard. You will need Ctrl and Meta keys.
- Termux support: Optionally, you can also run Emacs with Termux. However, the APK is more integrated.
- Sync your configuration: Copy your
init.elfile to the device.
Writing code on a phone is not practical, but taking notes with Org‑mode on a tablet is great. You capture your ideas on the road and continue at your desk. It acts as a bridge between mobile and desktop.
Literate Programming: Combine Code and Documentation with org-babel
Donald Knuth’s concept of literate programming finds its body here. With org‑babel, code and explanations live in the same file. This approach changes the way you think. First you think, then you write, then you code.
In classic development, you write code and then add comments. With this method, you first tell the story, then embed the code. The result is both working code and readable documentation. I have worked this way for years, and my code quality has clearly improved.
Multi‑Language Support with org-babel (Python, R, Bash, SQL)
Org‑babel lets you run multiple programming languages in a single file. Each code block runs in an independent session. The system adds the results instantly inside the document. Let’s set it up step by step:
- Enable language support:
(org-babel-do-load-languages 'org-babel-load-languages '((python . t) (R . t) (shell . t) (sql . t))) - Add a code block: In an Org file, type
#+begin_src pythonand press Enter. The block appears. - Run the code: Inside the block, press
C-c C-c. The system runs the code and writes the result on the next line. - Share variables: Use the
:varheader to pass data between blocks. - Session management: Use
:sessionto open a persistent session. This preserves variables across blocks.
This capability is golden for data science projects. You run Python and R code in the same file and visualize the results. You test SQL queries instantly by connecting to a database.
Preparing Reports, Presentations, and Theses with org-babel
Org‑babel is perfect for academic writing. Here are use cases:
- Technical Report: Get professional PDF output with LaTeX. The system automatically colors code blocks. Besides, it adds graphics to your document instantly.
- Academic Thesis: Write chapters in separate Org files. Combine them in a master file. Manage the bibliography with Citar and Helm‑bibtex.
- Presentation: Produce a Beamer presentation from Org. Define each slide under a heading. Even embed live code demos in your slides.
- Web Publication: Convert the Org file to HTML. Produce blog posts and documentation pages.
- Jupyter Alternative: The Org file acts like a notebook. You run code cell by cell and see the outputs.
You set up a full academic writing environment with Org‑ref and AucTeX. With Pandoc integration, you can even convert to a Word file. This saves the day when you need to send something to your advisor.
Common Problems and Their Solutions
Like any powerful tool, this system has its annoying sides. Over the years, I have wrestled with countless issues. Luckily, every one has a solution. Let me share the most common problems and their practical fixes.
How to Prevent Emacs Pinky Syndrome (RSI)? (Solution Steps)
Emacs pinky is a famous problem. Constantly pressing the Ctrl key makes the little finger hurt. RSI, or repetitive strain injury, is a serious risk. But prevention is possible. Let’s solve it step by step:
- Make Caps Lock into Ctrl: Change it in your OS settings. The little finger stays in a natural position.
- Use God mode: Works with a sticky modifier logic. Instead of holding Ctrl, you press and release Ctrl first, then press the key.
- Switch to Evil mode: Vim keys don’t need chords. You work with single‑key commands, and your fingers rest.
- Use an ergonomic keyboard: Split keyboards like the Kinesis Advantage are great. You can use Ctrl with your thumb.
- Assign shortcuts to a pedal: Map keys like Ctrl and Meta to USB pedals. Your hands rest.
- Take regular breaks: Stretch for 5 minutes every hour. Do finger exercises.
- Adopt Vim keys with Evil mode: Switch to modal editing. Minimize chorded shortcuts.
Turkish Character Problem and UTF-8 Support
The Turkish character problem was a headache in the past. Luckily, UTF‑8 is now the default. Modern versions need no extra settings. Still, files coming from older systems may have issues.
To fix it, add this line to your init.el: (prefer-coding-system 'utf-8). Also set the language environment with (set-language-environment "Turkish"). On a Turkish keyboard, use the left Alt instead of AltGr for the Meta key. If needed, add turkish-postfix as an input method.
Note for US audience: The Turkish character issue is specific to that locale. For English‑language setups, UTF‑8 works without any extra configuration. This section is kept as a courtesy to Turkish‑speaking readers who may use Emacs with Turkish input.
Optimization Tips for a Slow Emacs
As your configuration grows, slowdown is inevitable. Luckily, the solutions are simple:
- Use daemon mode: Run Emacs in the background. Open files instantly with emacsclient.
- Apply lazy loading: Defer packages with
:defer t. Load them only when needed. - Clean out unnecessary packages: Remove everything you don’t use. Minimalism brings speed.
- Enable native compilation: Install with the
--with-native-compilationflag. It makes a big difference. - Optimize GC settings: Raise the garbage collection threshold with
(setq gc-cons-threshold 100000000). - Ways to run fast on an old computer: Use the terminal version, avoid the GUI. Keep themes and font settings simple.
When Not to Choose Emacs? (A Critical Look)
Let’s be honest. This tool is not suitable for every situation. Don’t be a fanatic; choose the right tool at the right time. Speaking from years of experience: sometimes it is smarter not to use this editor.
Here are cases where you should not use it. I will be objective; I am not from the crowd that treats it as flawless. Every tool has weaknesses. Knowing them makes you a better engineer.
Data Science and Working with Large Datasets
Jupyter notebooks have a special place in data science projects. Visual graphs, interactive outputs, and cell‑based work are smoother in Jupyter. You can do data science with Emacs. But in some cases, it becomes torture.
Especially opening very large CSV files is a pain in this editor. Memory consumption increases on million‑row datasets. Although special modes help, RStudio or JupyterLab are more efficient. Matplotlib integration for data visualization is limited.
Still, org‑babel integration with R and Python is strong. It is ideal for small‑ and medium‑scale data analyses. The decision depends on your project’s scale.
Teamwork and Project Sharing
If you are doing pair programming or your team uses VS Code, resisting is pointless. Your configuration is personal, and sharing it is hard. Everyone has their own shortcuts and plugins.
You can standardize shared project settings with .editorconfig. But deep configuration alignment is difficult. Following team norms is professional. In fact, use this editor when working alone; switch to the common tool when on a team.
Mobile and Frontend Development
With modern frameworks like React and Flutter, reaching the level of integration that VS Code offers is hard. Features like hot reload, visual preview, and component tree are lacking.
LSP mode and tree‑sitter integration are closing the gap. But they still don’t deliver a smooth experience. Especially syntax highlighting on JSX/TSX files is not perfect. If you do frontend‑heavy work, a specialized IDE is more suitable.
Advanced Reading Resources for Emacs
If you liked this guide, you may want to dive deeper. Here are authoritative resources that will take you to the next level:
The official GNU Emacs manual always provides the most current and accurate information. You can access all documentation at GNU Emacs Manual. It is a reference, and every user should have it at their bedside.
To learn Emacs Lisp, An Introduction to Programming in Emacs Lisp is an excellent start. Published by the Free Software Foundation, it is reliable. You enter the world of Elisp with step‑by‑step examples.
The Emacs News newsletter, updated for years by Sacha Chua, is invaluable for following developments in the community. Moreover, it is published weekly, so you discover new packages and tips.
10 Most Frequently Asked Questions About Emacs
Is Emacs a text editor?
Which programming languages can you use with Emacs?
Is Emacs hard to learn?
What are the most popular alternatives to Emacs (Vi/Vim, VS Code)?
Do you need to know a programming language to customize Emacs?
How to solve the Turkish character problem in Emacs?
How do you install Emacs on Windows, macOS, and Linux?
What Turkish documentation and training resources are available for Emacs?
Which Emacs distribution (starter kit) is best for beginners?
What is Org‑mode in Emacs, and what tasks can it handle?
Conclusion: Emacs Is Much More Than an Editor
We have come to the end of this long chat. I hope I have conveyed why this tool is so special. It is not a text editor. It is a way of thinking. In short, it teaches you not just to write code, but to program your working environment.
Over the years, I have tried hundreds of tools. None gave me the same sense of control. None offered such complete sovereignty over my data. This is the final stop in my search for digital minimalism. I manage all my tasks in a single window, from the keyboard.
The learning curve is steep, yes. But the view from the top is breathtaking. It requires cognitive investment, true. But that investment returns to you as self‑efficacy. You are no longer enslaved by tools; you master them.
Software freedom may sound like an abstract concept. But what this editor offers is exactly that. Your code, your notes, your emails belong to you. No format can hold you captive.
Now the decision is yours. Start with Doom or with Vanilla. Use Vim keys or traditional shortcuts. What matters is to take this journey. Because this tool will teach you not just to write code, but to think!

Be the first to share your comment