2010-12-14 3 views
4

Есть ли функция Emacs для удаления (вперед или назад) до первого пробела? Например, у меня есть следующие строки, а курсор отмечен кареткой:Удалить до пробела в Emacs

someword ?(&)!* morewords 
      ^

Я хочу, чтобы удалить обратную последовательность не буквенно-цифровых символов, а не слово someword. Использование backward-delete-word также уничтожит слово. То же самое с курсором перед странными символами и kill-word.

+0

Вы знаете, у вас есть то же самое происходит почти каждый текстовой области, попробуйте поле поиска здесь на стеке, например, ... – Patrick

+1

Правда, но я не пишу тысячи строк кода и прозы в полях поиска. –

+0

@ Маленький: Ну нет, я просто хотел указать на это. Я думаю, что это интересный вопрос. Но вопрос в том, что emacs просто не соответствует «тем, что делают все остальные» и как таковой не предоставляет логической функции «kill-word». :) – Patrick

ответ

3

Я не знаю, какой-либо функции, но это достаточно легко сделать один:

(defun my-delete-backward-to-ws() 
    (interactive) 
    (delete-region (point) (save-excursion (skip-syntax-backward "^ ") (point)))) 
+0

с того момента, как я напишу этот комментарий, который не попадает ни в какие пробелы, а только в пространство. –

+0

@ Брайан Оукли: Хм, работает для меня. Вкладки и новые строки должны иметь синтаксис пробелов ... Я не знаю, почему они не будут в каком-то определенном режиме. – scottfrazer

+0

мой ошибка. Ты прав. Я думал о регулярных выражениях, а не о синтаксических классах. –

19

emacs имеет функцию zap-to-char, которая удалит все до определенного персонажа. Таким образом, это не будет работать для всех пробелов, но если ваша конкретная проблема - это все до места, вы можете использовать эту функцию. Дайте функции отрицательный аргумент zap назад.

+11

Связано с 'M-z' по умолчанию. – Gilles

Смежные вопросы