7
votes

Dans VIM, il y a une commande correspondante de changement (c) pour la pâte (p)?

Avec des insertions, il est très facile de nettoyer un mot / une section et d'insérer dessus, comme

  • cw supprimer jusqu'à la fin du mot (avec espace) puis passer à l'insertion MODE
  • CE Supprimer jusqu'à la fin du mot (sans espace) puis passer à l'insertion MODE
  • c3w Supprimer jusqu'à la fin des 3 mots suivants (avec espace) puis accédez au mode Insérer
  • ct. Supprimer jusqu'à la période avant la période d'insérer
  • C $ Supprimer jusqu'à la fin de la ligne, puis passez en mode Insérer

    Comment puis-je faire cela avec des opérations de pâte? Souvent, j'ai une ligne comme si tellement xxx

    et je le change à xxx

    et yank ( yw ) "Lee", mais maintenant si je supprime ( dw ) "Smith" de "Jane Smith", je n'ai plus "Lee" dans le registre pour coller. Je sais que je peux utiliser les registres nommés. De plus, je suis sûr que je peux utiliser le mode visuel. Cependant, j'ai pensé que cela est une tâche assez courante, il y aurait un moyen d'utiliser les opérateurs de mouvement ( E , w , t / t , f / f , $ , 0 ) avec la commande Coller à spécifier quoi coller.


0 commentaires

4 Réponses :


10
votes

OH Oui, ce que vous voulez est le registre ultra pratique (sarcasme) Blackhole: sélectionnez en mode visuel La pièce que vous souhaitez remplacer, à l'aide du mouvement que vous souhaitez (comme vw ), puis " _ x p .

Le registre de trou noir _ est un registre spécial s'apparente à / dev / null . L'opération " définit le registre de destination du texte que vous êtes sur le point de remplacer, et donc " _ garantit que le registre "Smith" non désiré atteint le registre Blackhole. Ainsi, "Lee" est préservé dans le registre ". Je vous recommande d'utiliser des macros pour aider si vous le faites plusieurs fois de suite.


2 commentaires

Je réalise que cette réponse est compliquée et mélange plusieurs concepts - espérons que c'est utile cependant, et j'aimerais voir s'il y a de meilleurs moyens d'accomplir cela. C'est simplement le meilleur moyen que je puisse penser (et que j'utilise assez souvent).


C'est vraiment une façon différente d'aborder la pâte aux registres. +1 pour référencer / dev / null



14
votes

Je pense que le mode visuel est la voie à suivre. Vous activez simplement le mode visuel avec v ou v (si vous souhaitez écraser les lignes entières à l'heure), utilisez les opérateurs de mouvement de la manière habituelle pour sélectionner la zone à être remplacé puis collez. Vous profitez de ce que vous savez déjà.

v p écrase la ligne actuelle. v w p écrase le mot actuel.

Vous pouvez trouver un aperçu des alternatives du Vim Wikia . < / p>


0 commentaires

4
votes
I no longer have "Lee" in the register to paste back.
Actually, Lee is in reg:0, there are at least two ways to paste back.Method 1
move cursor to Lee, yw
move cursor to Smith, dw
"0P
Method 2
move cursor to Lee, yw
move cursor to Smith, cw
Ctrl-R+0

0 commentaires

0
votes

Vous pouvez toujours faire une cartographie personnalisée, j'ai les suivants:

nnoremap, pw viw "0P

Quelles pâtes sur le mot intérieur ) le dernier texte timoré. Notez que j'utilise le registre 0, je peux donc coller autant de fois que je veux, sans perdre le texte tiré. Malheureusement, vous devez écrire quelques autres mappages. J'aime avoir Un mappage à la coller à l'intérieur de la citation , entre les crochets internes et à l'intérieur des parenthèses : xxx


1 commentaires

Je me demande s'il est pratique de savoir un mappage qui accepte des arguments puis utilise toujours le registre 0