Как мне заставить Emacs показывать пустые места?

Как я могу заставить Emacs отображать пустые места (например, пробел, табуляцию, переход по строке и т. Д.). Многие другие редакторы, такие как Kate и Eclipse, имеют эту функцию, и я считаю очень полезным видеть, когда в коде нарушены отступы из-за сочетания пробелов и табуляции (особенно Python).


person pupeno    schedule 16.11.2008    source источник


Ответы (3)


WhiteSpace - это второстепенный режим Emacs для визуализации всех символов пробелов в текущем буфере. Его можно активировать с помощью M-x whitespace-mode.

Вот снимок экрана WhiteSpace в действии, сделанный непосредственно из вики-страницы Emacs,

режим пробелов в действии

Примечание. WhiteSpaceMode теперь заменяет BlankMode.

person Justin Tanner    schedule 16.11.2008
comment
Спасибо за снимок экрана и ссылку, но вы забыли сообщить нам, как включить эту функцию. (Это M-x whitespace-mode кстати.) - person bug; 15.08.2013

Все возможные настройки для этого, похоже, суммированы здесь (пустой режим) и здесь и здесь (ShowWhiteSpace)

также:

(if (>= emacs-major-version 22)
  (progn
    ;; Mode to use with Emacs 22
    ;; http://emacswiki.org/cgi-bin/wiki/BlankMode
    (require 'blank-mode)
    ;; Mode not active by default: let's activate it
    (global-blank-mode t)
    ;; ... activate it when text mode where color syntax is not active by default
    (add-hook 'text-mode-hook 'blank-mode-on)
    ;; All invisible chars are shown, except newline char.
    (setq blank-chars '(tabs spaces trailing lines space-before-tab))
    ;; Show only for one color, no mark inserted
    (setq blank-style '(color))
    ;; Use for normal space (not shown)
    (set-face-background 'blank-space-face nil)
    (set-face-foreground 'blank-space-face "black")
    ;; used for non breakable space
    (set-face-background 'blank-hspace-face "PaleGreen")
    (set-face-foreground 'blank-hspace-face "black")
    ;; Used for spaces left of a tab
    (set-face-background 'blank-space-before-tab-face "orange")
    (set-face-foreground 'blank-space-before-tab-face "black")
    ;; Used for tab
    (set-face-background 'blank-tab-face "lemonchiffon")
    (set-face-foreground 'blank-tab-face "black")
    ;; used for extra space at the end of a line
    (set-face-background 'blank-trailing-face "gold")
    (set-face-foreground 'blank-trailing-face "black")
    ;; Used for line too long
    (set-face-background 'blank-line-face "snow2")
    (set-face-foreground 'blank-line-face "black")
  )
  (progn
    ;; For older Emacs prior to version 22.
    ;; http://www.emacswiki.org/cgi-bin/wiki/show-wspace.el
    (require 'show-wspace)
    (add-hook 'font-lock-mode-hook 'show-ws-highlight-tabs)
    (add-hook 'font-lock-mode-hook 'show-ws-highlight-hard-spaces)
    (add-hook 'font-lock-mode-hook 'show-ws-highlight-trailing-whitespace)
  )
)
person VonC    schedule 16.11.2008

отступ-сломанный? - никогда не используйте вкладки в коде - в наши дни дисковое пространство дешево.

Поместите (setq-default indent-tabs-mode nil) в ваш файл .emacs. Привыкайте набирать C-x h M-x untabify, чтобы развернуть весь буфер. Для поиска вкладок введите C-s C-i. Если в ваших буферах есть непонятные управляющие символы, вы можете увидеть их с помощью M-x hexl-mode.

Также C-x h M-x indent-region сделает отступ для всего буфера. Некоторые режимы, такие как vhdl-mode, имеют команду украшения региона.

person user37248    schedule 16.11.2008
comment
У разных разработчиков в моей команде разные предпочтения в отношении ширины вкладок. Установка всего на пробелы облажает остальную команду. Тем не менее, спасибо за игру. - person warfangle; 27.08.2010
comment
Для записи: должно быть C-h f untabify вместо C-x h M-x untabify. - person To1ne; 08.02.2011
comment
Emacs хорош не только для кода, но и для других типов файлов (например, файлов данных, разделенных табуляцией)! Аккуратно, а? - person Anne; 09.08.2011
comment
@ To1ne C-h f untabify: справка о untabify. C-x h M-x untabify: отметьте буфер, затем запустите untabify. - person Jerome Baum; 19.01.2012