Ваша клавиша Backspace (<DEL>
), вероятно, связана с командой backward-delete-char-untabify
. Свяжите это с чем-то другим, например, delete-backward-char
.
Из руководства Elisp, узел Режимы программы :
В большинстве языков программирования отступы должны отличаться отстрока за строкой, чтобы проиллюстрировать структуру программы. Следовательно, в большинстве режимов языка программирования ввод <TAB>
обновляет отступ текущей строки.
Кроме того, <DEL>
обычно привязывается к backward-delete-char-untabify
, что удаляет обратную обработку каждой вкладки, как если быэто было эквивалентное количество пробелов , так что вы можете удалить один столбец отступа, не беспокоясь, состоит ли пробел из пробелов или табуляций.
IOW, поведение, которое вам не нравится,предоставляется по умолчанию в используемом вами режиме программирования.
На самом деле, если вы находитесь в c++-mode
, <DEL>
привязан к команде c-electric-backspace
. Документ для этой функции (C-h f c-electric-backspace
) сообщает вам:
c-electric-backspace
- это интерактивная скомпилированная функция Lisp в cc-cmds.el
.
(c-electric-backspace ARG)
Удалите предыдущий символ или пробел.
Если c-hungry-delete-key
не является nil
(обозначено "/h"
в строке режима), тогда все предшествующие пробелы используются. Однако, если указывается префиксный аргумент, или c-hungry-delete-key
равен nil
, либо точка находится внутри литерала, вызывается функция в переменной c-backspace-function
.
И по умолчанию кажется, что значение пользовательской опции c-backspace-function
(C-h v
) равно ... backward-delete-char-untabify
. Таким образом, вы можете просто настроить эту опцию, чтобы установить ее для какой-либо другой функции, такой как delete-backward-char
. Это изменит поведение только для режимов C ++ и C.