Pourquoi la commande de soulignement _ est-elle utile?

15

Je suis un peu perplexe quant à la raison pour laquelle la commande de soulignement _, qui saute au début de la (COUNT - 1) ème ligne sous le curseur, obtient sa propre clé. Quand devrais-je l'utiliser plutôt que +ou ^?

Toothrot
la source

Réponses:

16

Bonne question!

Comme une motion en soi, vous avez raison, _n'est pas une clé particulièrement utile.:h _

                            *_*
_  <underscore>     [count] - 1 lines downward, on the first non-blank
            character |linewise|.

Le mot clé ici est "linewise". Donc, si votre objectif est de simplement déplacer le curseur, alors ^, jet +tout le travail est fait, et cela ne sert à rien _. Mais comme argument pour un opérateur, il _est super puissant.

De nombreux raccourcis à double touche ne sont en fait que des raccourcis pour _. Par exemple,

dd -> d_
cc -> c_
yy -> y_
Y  -> y_

etc. Parce que c'est un mouvement en ligne, il sélectionne essentiellement la ligne entière à opérer, quel que soit le point de départ de votre curseur, alors ^qu'il passe simplement de votre personnage au premier non vide.

Cela m'aide lorsque je pense aux mouvements en ligne par rapport aux mouvements en bloc d'imaginer que j'appuie sur l'un vou sur l'autre Vjuste avant le mouvement. J'imagine d^donc être équivalent à v^det j'imagine d_être équivalent à V_dou V^d. Bien sûr, vous pouvez également remplacer un mouvement pour le forcer à être linéaire ou à caractère. Donc, dv_c'est exactement la même chose que d^ou v^d, et dVwc'est comme Vwdce qui est exactement comme d_.

La raison pour laquelle il s'agit spécifiquement de la ligne "count-1th" est que 1dd(ce qui est vraiment d1_) supprime une ligne entière, 2dd(ce qui est vraiment d2_) supprime 2 lignes entières, 3ddsupprime 3 lignes entières, etc.

DJMcMayhem
la source
1
D'accord, mais est-ce que je l'utiliserais jamais? ddest plus facile que d_et 3yjest plus facile que 4y_.
Toothrot
5
@toothrot Si vous créez votre propre opérateur et souhaitez opérer sur les n lignes suivantes.
DJMcMayhem
5
@Toothrot Je suppose que je veux clarifier un peu cela. Dans l'édition quotidienne de vim, non, ce n'est vraiment pas particulièrement utile. Je ne l'ai presque jamais utilisé non plus. La raison pour laquelle il est utile, c'est parce que c'est la définition d'un grand nombre de commandes utiles. ddpourrait être plus pratique que d_, mais c'est parce que ddc'est juste un mappage vers d_. Et c'est aussi utile dans vimscript.
DJMcMayhem
9
Certaines actions qui agissent sur une "motion" peuvent ne pas avoir d'autres raccourcis. Quelque chose comme "gU_" mettra tout en majuscule sur la ligne courante, même si le curseur n'est pas au début de la ligne.
bmb
1
@bmb Et alors gUU? Je pense qu'il serait utile de trouver un exemple réel où <operator>_serait utilisé.
Hotschke