I know how to display line numbers (and columns) in the mode-line, but I'd like emacs to display the line numbers for all the lines on the left-hand side. I've seen this done in vim and other text editors. How do I do this for emacs?


For Emacs version >= 26 you should use display-line-numbers-mode or global-display-line-numbers-mode.

You can run the command with M-xdisplay-line-numbers-modeRET or M-xglobal-display-line-numbers-modeRET to try it.

Another good idea is to use (add-hook 'prog-mode-hook 'display-line-numbers-mode) in your init.el to automatically enable that mode in all programming modes.

See EmacsWiki

  • 1
    You might also find (global-display-line-numbers-mode) useful. Jan 14 '19 at 13:15

If you are using Emacs 26 or newer, you can use display-line-numbers-mode.

from etc/NEWS.26:

** Emacs now supports optional display of line numbers in the buffer. This is similar to what 'linum-mode' provides, but much faster and doesn't usurp the display margin for the line numbers. Customize the buffer-local variable 'display-line-numbers' to activate this optional display. Alternatively, you can use the 'display-line-numbers-mode' minor mode or the global 'global-display-line-numbers-mode'. When using these modes, customize 'display-line-numbers-type' with the same value as you would use with 'display-line-numbers'.

  • 2
    I like it so much, but my muscle memory still goes M-x linum-mode - so I did (advice-add 'linum-mode :override 'display-line-numbers-mode). Jun 21 at 22:10

M-x linum-mode will do the trick. If you wish to effect this for all buffers, then M-x global-linum-mode will do this.

  • Do you know a way I can make this permanent? Sep 25 '14 at 22:09
  • 1
    (per the suggestion of nispio and mgoszcz2) addition of (global-linum-mode) to your .emacs.d/init.el file will make it permanent. I find global-linum-mode to be a bit excessive, and mgoszcz2's suggestion for enabling it only in certain modes is a good one.
    – Eric Brown
    Sep 25 '14 at 22:24

nlinum-mode is another option. It has the same interface as linum-mode, so you can use the same hooks, but it uses a different technology to be more performant. Quote from nlinum.el:

;; This is like linum-mode, but uses jit-lock to be (hopefully) more efficient.

You can install it via GNU Elpa via the usual list-packages.



Certainly linum-mode is a good choice. If you don't always want to see line numbers, like me, you can use this trick from the excellent What the .emacs.d!? blog.

This temporarily enables linum-mode when you run goto-line.

Here's the code from his blog:

(global-set-key [remap goto-line] 'goto-line-with-feedback)

(defun goto-line-with-feedback ()   "Show line numbers temporarily, while prompting for the line number input"   (interactive)   (unwind-protect
        (linum-mode 1)
        (goto-line (read-number "Goto line: ")))
    (linum-mode -1)))

This is what my teacher tells us to set line-display-mode always on. Add this in your .emacs file.

(add-hook 'c++-mode-hook 'display-line-numbers-mode)
(add-hook 'c-mode-hook 'display-line-numbers-mode)
(setq linum-format "%3d ")

OTTO: Professor William Knottenbelt

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.