Можете ли вы иметь умное поведение для домашнего ключа в Emacs? Умным я подразумеваю, что вместо перехода к символьному номеру 0 он должен перейти к первому непустому символу и перейти к 0 при втором нажатии и вернуться к первому непустому в третьем и так далее. У умного конца было бы неплохо.Умный дом в Emacs
ответ
(defun smart-beginning-of-line()
"Move point to first non-whitespace character or beginning-of-line.
Move point to the first non-whitespace character on this line.
If point was already at that position, move point to beginning of line."
(interactive "^") ; Use (interactive) in Emacs 22 or older
(let ((oldpos (point)))
(back-to-indentation)
(and (= oldpos (point))
(beginning-of-line))))
(global-set-key [home] 'smart-beginning-of-line)
Я не совсем уверен, какой умный конец будет делать. У вас обычно есть много отстающих пробелов?
Примечание: Основное отличие этой функции от Роберта Вуковича состоит в том, что он всегда перемещается к первому непустому символу при первом нажатии клавиши, даже если курсор уже существует. В этом случае шахта переместилась бы в колонку 0.
Кроме того, он использовал (beginning-of-line-text)
, где я использовал (back-to-indentation)
. Они очень похожи, но между ними есть некоторые различия. (back-to-indentation)
всегда перемещается к первому символу без пробелов в строке. (beginning-of-line-text)
иногда перемещается мимо символов без пробелов, которые он считает несущественными. Например, в строке только для комментариев он перемещается к первому символу текста комментария, а не к маркеру комментариев. Но любая функция может использоваться в любом из наших ответов, в зависимости от того, какое поведение вы предпочитаете.
Это работает с GNU Emacs, я не пробовал его с XEmacs.
(defun My-smart-home() "Odd home to beginning of line, even home to beginning of text/code."
(interactive)
(if (and (eq last-command 'My-smart-home)
(/= (line-beginning-position) (point)))
(beginning-of-line)
(beginning-of-line-text))
)
(global-set-key [home] 'My-smart-home)
Обратите внимание, что уже есть функция спина к отступа, который делает то, что вы хотите, чтобы первая функция смарт-дома, чтобы сделать, то есть перейти к первому символу в строке. По умолчанию он привязан к M-m.
Спасибо за эту удобную функцию. Я использую его все время и люблю его. Я сделал только одно небольшое изменение: (интерактивный) становится: (интерактивные "^")
С помощью Emacs: Если строка начинается с ^' and
Shift-выбора режима»не является нулевым, Emacs сначала вызывает функцию `handle-shift-select '.
В основном это позволяет выбрать shift-home из текущей позиции в начало строки, если вы используете режим выбора shift. Это особенно полезно в минибуфере.
Я адаптировать @Vucovic код, чтобы перейти к первому beggining-of-line
:
(defun my-smart-beginning-of-line()
"Move point to beginning-of-line. If repeat command it cycle
position between `back-to-indentation' and `beginning-of-line'."
(interactive "^")
(if (and (eq last-command 'my-smart-beginning-of-line)
(= (line-beginning-position) (point)))
(back-to-indentation)
(beginning-of-line)))
(global-set-key [home] 'my-smart-beginning-of-line)
Существует в настоящее время пакет, который делает именно это, mwim
(Move Где я имею в виду)
- 1. Многоквартирный дом в SugarCRM
- 2. Многоквартирный дом в Laravel4
- 3. Дом разборе в андроида
- 4. Многоквартирный дом в Кассандре
- 5. дом манипуляция
- 6. умный указатель в функции
- 7. умный указатель в конструкторе
- 8. «Умный» автопрокат в Java?
- 9. умный токенизатор в с
- 10. Действительно умный помощник рельсы нужен
- 11. Многоквартирный дом в ASP MVC
- 12. Многоквартирный дом в хосте xbox
- 13. Реализация кнопки «Дом» в SWReavealViewController
- 14. дом готов событие в React
- 15. Запуск emacs в emacs
- 16. дом-изменения не розжига для шаблонов дом-связывания
- 17. [дом повтора :: дом-повтора]: Ожидается массив для `` деталей, найденный объект
- 18. Умный автоотступник доступен в geany?
- 19. Автоматический указатель (умный) в векторе
- 20. Умный способ вставить в php
- 21. полимер Домовый дом загружен
- 22. Дом загружается два раза
- 23. Многоквартирный дом с Виндзором
- 24. Многоквартирный дом без субдоменов
- 25. Баша сжать весь дом
- 26. Многоквартирный дом с GATE
- 27. Дом аукционная система
- 28. Дом манипуляция не работает
- 29. дом анализатор getElement
- 30. Дом заменить весь узел
К сожалению, это не работает с CuA включено, и в этом случае сдвиг для выбора не работает, сдвиг дома для выбора полной строки не работает. Какие-либо предложения? – 2010-05-27 08:40:28
@ Александр Штольц, я никогда не использую cua-mode, но попробуйте добавить `(поместите 'умное начало-в-линию' CUA 'move)` после `defun` (т.е. перед` global-set-key` линия). – cjm 2010-05-27 09:18:14