42 votes

Commande Emacs pour supprimer jusqu'au caractère non blanc

Je souhaite souvent effectuer un appel de fonction multiligne et le réduire à une seule ligne. Par exemple, convertissez ...

 function_call(
     'first_arg',
     'second')
 

à

 function_call('first_arg', 'second')
 

Emacs a-t-il des commandes pour vous aider? Plus précisément, existe-t-il une commande qui supprimera tous les espaces du point au premier caractère non espace?

60voto

Bill White Points 1133

Vous pouvez essayer de l' delete-indentation, mon préféré de commande pour la jonction de plusieurs lignes en une seule ligne. Dans votre exemple, placez le curseur sur la ligne "deuxième" et appuyez sur M-^ deux fois. Voici les docs:

M-^ exécute la commande delete-indentation, ce qui est interactif compilé Lisp fonction en simple.el.

Il est lié à la M-^.

(delete-indentation &optional arg)

Rejoindre la ligne précédente et de réparer les espaces à la rejoindre. Si il y a un préfixe de remplissage, de le supprimer à partir du début de cette ligne. Avec l'argument, se joindre à cette ligne à la ligne suivante.

29voto

Brian Clapper Points 11222

Jetez un œil à la fonction fixup-whitespace . Il est livré avec Emacs, en simple.el . Ses documents sont:

Correction de l'espace blanc entre les objets autour du point. Laissez un espace ou aucun, selon le contexte.

Cette fonction est généralement liée à M-Space.

19voto

Jouni K. Seppänen Points 15129

Plus précisément, est-il une commande qui supprime tous les espaces de la pointer vers le premier caractère non-blanc?

Il y a une commande qui n'a presque que:

M-\ exécute la commande delete-horizontal-espace un outil interactif compilé Lisp fonction simple.el'.

Il est lié à la M-\.

(supprimer-horizontal-espace et facultatif en arrière seulement)

Supprimez tous les espaces et les tabulations autour du point. Si en arrière-seulement est non-nul, seulement de les supprimer avant le point.

6voto

Chris Conway Points 24671

J'ai utiliser la macro suivante pour "tirer" la ligne suivante à la fin de la ligne courante, la compression de l'espace blanc.

(defun pull-next-line() 
  (interactive) 
  (move-end-of-line 1) 
  (kill-line)
  (just-one-space))

C'est exactement le contraire de @jrockway de l' move-line-up et de la delete-indentation, que je trouve plus naturel. L' just-one-space commande dans la macro est exactement @Mike M-SPACE.

- Je lier pull-next-line de M-J (en analogie avec Vim de l' J, pour "rejoindre", de commande) à l'aide de la suite dans mon .emacs.

(global-set-key (kbd "M-J") 'pull-next-line)

Exemple. Appelant pull-next-line sur la première ligne de

function_call(
     'first_arg',
     'second')

les rendements

function_call( 'first_arg',
     'second')

Appeler un deuxième temps, les rendements

function_call( 'first_arg', 'second')

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X