Emacs: переместить точку к последнему непробельному символу - PullRequest
3 голосов
/ 07 марта 2012

М-м (back-to-indentation) перемещает точку к первому непробельному символу в строке. Я хотел бы сделать наоборот: переместить точку к последнему непробельному символу в строке. Мне не удалось найти «встроенную» команду для этого, и я недостаточно знаком с ELisp, чтобы что-то написать, поэтому любая помощь будет признательна, пожалуйста.

Ответы [ 4 ]

6 голосов
/ 07 марта 2012
(defun my-move-end-of-line-before-whitespace ()
  "Move to the last non-whitespace character in the current line."
  (interactive)
  (move-end-of-line nil)
  (re-search-backward "^\\|[^[:space:]]"))
4 голосов
/ 08 марта 2012

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

M-\ runs the command delete-horizontal-space, which is an interactive
compiled Lisp function in `simple.el'.

В редком случае, когда я хотел бы сохранитьПробел Я просто использую Мб Mf (backward-word, forward-word), что обычно достаточно близко.

1 голос
/ 30 ноября 2018

Я написал эту функцию для привязки к Ce (обычно move-end-of-line).Ce работает как обычно, но если ваш указатель уже находится в конце строки, он удалит конечные пробелы.

(defun my/smarter-move-end-of-line (arg)
  "Move to the last non-whitespace character in the current line.

Move point to end of this line. If point is already there, delete
trailing whitespace from line, effectively moving pointer to last
non-whitespace character while also removing trailing whitespace.

If ARG is not nil or 1, move forward ARG - 1 lines first."
  (interactive "^p")
  (setq arg (or arg 1))

  ;; Move lines first
  (when (/= arg 1)
    (let ((line-move-visual nil))
      (forward-line (1- arg))))
  (let ((orig-point (point)))
    (move-end-of-line 1)
    (when (= orig-point (point))
      (delete-horizontal-space))))

Remap Ce:

;; remap C-e to 'smarter-move-end-of-line'
(global-set-key [remap move-end-of-line]
        'my/smarter-move-end-of-line)
0 голосов
/ 07 марта 2012

Я думаю, что Филс уже ответил на ваш вопрос.Просто еще один военнопленный ... висячие пробелы очень раздражают, невидимы и склонны к ошибкам (?).Так что у меня есть крючок для before-save-hook, чтобы удалить их.

;;; delete nasty hidden white spaces at the end of lines
(add-hook 'before-save-hook 'delete-trailing-whitespace)

Так что ваша операция с отступами становится для меня просто C-e.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...