В sublime есть одна вещь, которой мне очень не хватало в emacs, при выравнивании текста пробелами, клавиша <backspace> удаляла не один пробел, а сразу столько, сколько входило в один "tab". Это легче показать:
Emacs из коробки так к сожалению не умеет, но как всегда исправить это совсем не сложно…
(defun cfg:backward-delete-tab-whitespace () (interactive) (let ((p (point))) (if (and (eq indent-tabs-mode nil) (>= p tab-width) (eq (% (current-column) tab-width) 0) (string-match "^\\s-+$" (buffer-substring-no-properties (- p tab-width) p))) (delete-backward-char tab-width) (delete-backward-char 1))))
и вешаем ее на <backspace> (про продвинутое использование горячих клавиш, я рассказывал в предыдущей статье):
(global-set-key (kbd "<backspace>") 'cfg:backward-delete-tab-whitespace)
Это вполне очевидно, но все же уточню когда backspace будет удалять пробелы "пачками":
- Должно быть отключено выравнивание табами "indent-tabs-mode == nil"
- Курсор должен быть на столбце кратном ширине таба (tab-width) от начала строки
- Ну и конечно перед курсором должно быть пробелов не меньше чем (tab-width)
Вот и все, еще один шаг на пути к идеальному редактору сделан.
Комментариев нет:
Отправить комментарий