6
votes

Emacs: point de déplacement sur le dernier caractère sans espacement

m-m ( back-to-indentation ) déplace le point sur le premier caractère non blancheur de la ligne. J'aimerais faire le contraire: Déplacer le point sur le dernier personnage non blancheur de la ligne. J'ai été incapable de trouver une commande "intégrée" pour cela et je ne suis pas assez familier avec Elisp pour écrire quelque chose, alors toute aide serait appréciée s'il vous plaît.


0 commentaires

5 Réponses :


6
votes
(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:]]"))

1 commentaires

Merci. J'ai ajouté (transfert-char) à la fin afin que je puisse simplement utiliser c-k pour supprimer le blancheur.



1
votes

Je pense que les Phils ont déjà répondu à votre question. Juste un autre pow ... Les espaces blancs traînants sont très ennuyeux, invisibles et sujets aux bugs (?). Donc, j'ai un crochet pour avant-sauvegarde-crochet pour les supprimer. xxx

de sorte que votre opération en retrait devienne simplement c-e pour moi.


4 commentaires

Que vous pouvez écrire plus simplement comme (add-hook 'avant-enregistrement-grow' 'Supprimer-whitespace) , BTW.


@sanityinc oui. vous avez raison. supprimé la Lambda redondante. Merci


Je recommande l'excellent ws-trim-mode (Inclut également global - variante) pour la rupture des espaces de fin. C'est tout à fait personnalisable, mais la configuration par défaut ne modifiera que des lignes que vous modifiez, ce qui en fait la version de contrôle de la version (c'est-à-dire ne présentera pas de masses de modifications non pertinentes si vous éditez un fichier qui a eu beaucoup de blancheurs de fuite). FTP.LYSATOR.LIU.SE/PUB/EMACS/WS-TRIM. El


@Plushs bon de savoir à ce sujet. Je pense que ce serait très utile lors de la modification des fichiers d'autres. Merci d'avoir informé



5
votes

Normalement dans cette situation, je veux accéder au dernier personnage non-blancspace et supprimer également l'espace de fuite, alors j'utilise ceci:

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


3 commentaires

Ceci est utile, mais nécessite que cela ait déjà été déplacé vers la bonne position.


Bon point. Si ce n'est pas déjà à la fin de la ligne, vous devez ajouter un c-e à l'avance.


Oui, donc c-e `m- \` est une solution alternative qui passe pointe vers la fin de la ligne, puis supprime l'espacement supplémentaire. Merci.



1
votes

J'ai écrit cette fonction pour se lier à C-E (généralement MOVI-FIND-DE-LINE CODE>). CE fonctionne comme d'habitude, mais si votre pointeur est déjà à la fin de la ligne, il supprimera le suivi des espaces suivants. XXX PRE>

REMAP CE: P>

;; remap C-e to 'smarter-move-end-of-line'
(global-set-key [remap move-end-of-line]
        'my/smarter-move-end-of-line)


0 commentaires

0
votes

Ma version: Déplacez-vous à la fin de la ligne ou du dernier non-espace (en supprimant les espaces de fin) xxx

[fin] et "\ Touches CE " (Control + e):

  • Déplacez le curseur (point) à la fin de la ligne visuelle.
  • Si c'est déjà à la fin de la ligne visuelle, déplacez-le à la fin de la ligne.
  • Si c'est déjà là, déplacez-la au dernier caractère non-blancs de la ligne en supprimant tous ces espaces de fin.
  • en déplaçant, gardez la région ( interactif "^" ).
  • le let (désactivé-marque) est de vous assurer que la région est conservée.

    Ceci est pris de @justinokamoto; Ensuite, j'ajoute la fin de la ligne visuelle. (Désolé pour mon anglais cassé).


0 commentaires