2010-12-14 71 views
4

Existe-t-il une fonction Emacs à supprimer (avant ou arrière) jusqu'au premier espace? Par exemple, j'ai la ligne suivante, et le curseur est marqué par le caret:Supprimer jusqu'à un espace vide dans Emacs

someword ?(&)!* morewords 
      ^

Je veux supprimer l'arrière la séquence de caractères non alphanumériques, mais pas le mot someword. En utilisant backward-delete-word va effacer le mot aussi bien. La même chose est avec le curseur avant les caractères étranges et kill-word.

+0

Vous savez, vous avez la même passe dans presque tous les domaines de texte, essayez le champ de recherche ici sur la pile, par exemple, ... – Patrick

+1

True, mais je n'écris pas des milliers de lignes de code et de prose dans les champs de recherche. –

+0

@Little: Eh bien non, je voulais juste le signaler. Je pense que c'est une question intéressante. Mais la question est de savoir si emacs ne se conforme pas à "ce que tout le monde fait" et, en tant que tel, ne fournit pas de fonction logique "kill-word". :) – Patrick

Répondre

3

Je ne sais pas d'une fonction, mais il est assez facile de faire un:

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

au moment où j'écris ce commentaire, cela ne va à aucun espace, seulement à un espace. –

+0

@Bryan Oakley: Hm, travaille pour moi. Les onglets et les retours à la ligne devraient avoir une syntaxe d'espace ... Je ne sais pas pourquoi ils ne le feraient pas dans un mode particulier. – scottfrazer

+0

mon erreur. Vous avez raison. Je pensais aux expressions régulières plutôt qu'aux cours de syntaxe. –

19

emacs a la fonction zap-to-char qui effacera tout jusqu'à un caractère spécifique. Donc, cela ne fonctionnera pas pour tous les espaces, mais si votre problème spécifique est tout jusqu'à un espace, vous pouvez utiliser cette fonction. Donnez à la fonction un argument négatif pour zapper en arrière.

+11

Lié à 'M-z' par défaut. – Gilles