Заставить Emacs работать так же, как у Vim - PullRequest
6 голосов
/ 24 июня 2011

Я изучаю Emacs и пытаюсь настроить файл инициализации. В настоящее время это выглядит так (нашел это где-то в сети):

(setq indent-tabs-mode t)
(setq-default indent-tabs-mode t)
(global-set-key (kbd "TAB") 'self-insert-command)
(setq default-tab-width 4)
(setq tab-width 4)
(setq c-basic-indent 4)

Но он не ведет себя как стиль вкладок Vim.

Я просто хочу, чтобы при использовании вкладок он вел себя как Vim. Это означает не заменять табуляции пробелами (я думаю, что Emacs делает это по умолчанию).

Так что каждый может редактировать файлы в нужной им ширине вкладки. Я обычно использую 4 для ширины вкладки. И что, когда я нажимаю клавишу Backspace, она возвращается на ту же цифру назад, что означает, что если я установил tab на 4 и нажимаю клавишу Tab, он вернется на 4 символа после нажатия Backspace. Также следует всегда использовать 4 пробела для табуляции. Потому что иногда в emacs этого не происходит.

1 Ответ

6 голосов
/ 25 июня 2011

Обработка вкладок Vim может быть настроена, так что это не очень хорошее описание того, что вы хотите сделать, но остальная часть вашего описания по большей части содержит достаточно информации.

Самый простой способ справиться сВкладки никогда не использовать их.Так что не удивляйтесь, если настройка вкладок так, как вам нравится, занимает немного времени.

Вы установили клавишу Tab для вставки символа табуляции.В Emacs это не принято: обычно для отступа текущей строки используется клавиша Tab .То, что вы сделали, достаточно для настройки по умолчанию, но режимы, зависящие от языка, могут по-прежнему делать отступ Tab .Я предполагаю, что вы включили c-basic-indent, что вы работаете над кодом C;поэтому вы должны указать режиму C, что вы не хотите, чтобы Tab делал отступ.Это должно сделать это:

(eval-after-load "cc-mode"
  '(define-key c-mode-map (kbd "TAB") 'self-insert-command))

Другая вещь, с которой вы столкнулись, заключается в том, что по умолчанию клавиша Backspace пытается перейти назад на один столбец, а не на один символ.Следующее должно заставить его удалить один символ:

(global-set-key (kbd "DEL") 'backward-delete-char)
(setq c-backspace-function 'backward-delete-char)
...