Quelle est la différence entre s, c et r de commandes de vi/vim?
Je suis en train d'essayer de clarifier ce à partir de la OReilly livre sur Vim, mais les exemples présentés ne sont pas assez claire.
Clarification au moyen d'exemples/cas d'utilisation au lieu d'une explication directe serait très utile.
L'Échantillon de texte pourrait être:
With a
screen editor,
you can
scroll the page, move the cursor.
- Comment à propos de les essayer par vous-même dans Vim? Je pense que ce serait la meilleure façon de comprendre ce qu'ils font.
- Je l'ai fait. Mais avec toutes les sous-options, ils ont, de percevoir la différence n'est pas si facile pour un débutant comme moi.
- Apprendre à rechercher des commandes et de naviguer dans le haut -
:help
; il est complet et offre de nombreux conseils. Vous n'aurez pas à apprendre Vim aussi rapidement que les autres éditeurs, mais si vous vous engagez à la formation continue, il va se révéler un outil très puissant et efficace de l'éditeur. - N'oubliez pas de o, o, O, O, R, S, C, et j'ai dans votre lecture. Aussi je trouve
tab help
beaucoup plus agréable quehelp
parce qu'il est en plein écran, et me permet de chasser les trous de lapins.
Vous devez vous connecter pour publier un commentaire.
Suppose que vous avez
foo
dans le document, et le curseur est sur lef
.Maintenant, en appuyant sur
rb
va changer cela pourboo
, et vous êtes de retour en mode commande. En appuyant sursb
permettra d'accomplir la même chose, mais vous êtes en mode insertion et d'insérer plusieurs caractères. Enfin,c
nécessite une forme de mouvement; par exemple, vous pouvez tapercw
pour supprimer le mot en entier et de passer en mode insertion. D'autre part,cl
est essentiellement la même ques
.cw
ne vous prendra pas en mode insertion? Voilà qui est étonnant.cw
etciw
par lui-même doit se comporter pour la plupart les mêmes;c3w
etc3iw
n'est pas, cependant: Pouriw
, les espaces sont considérés comme des mots séparés. E. g., en tapantc3w
lorsque le premier caractère dea b c d
va supprimera b c
(trois mots, sans compter les espaces), alors quec3iw
dans la même situation va supprimera b
(trois “mots”, la deuxième étant l'espace). Les deux puis passer en mode insertion.c
, vous devez utiliserv
à la place. Exemple:v3iw
. J'ai aussi remarqué qu'il y a une différence entrev3iw
etvi3w
:v3iw
==v
+ 3 xiw
, tandis quevi3w
==vi
+ 3 xw
. Les deux côtés gauche et droit de l''==', sont exactement les mêmes. C'est une bonne façon de comprendre pourquoi les résultats sont différents.ci
essentiellement la même ques
ou est-elle la même?Facile.
Au lieu de perdre votre temps sur ce livre, apprendre à utiliser Vim est génial documentation interne:
Descriptions
s
(substitute) va supprimer le caractère actuel et la place de l'utilisateur dans le mode insertion avec le curseur entre les deux entouré de caractères.3s
, par exemple, supprimer les trois caractères et de la place de l'utilisateur dans le mode insertion.c
(change) prend un vi/vim mouvement (commew
,j
,b
, etc.). Il supprime les caractères à partir de la position actuelle du curseur jusqu'à la fin du mouvement. Notez que cela signifie ques
est équivalent àcl
(la documentation de vim lui-même affirme que ces sont des synonymes).r
(replace) ne pénètre jamais dans le mode d'insertion à tous. Au lieu de cela, il s'attend à un autre personnage, qui pourront ensuite utiliser pour remplacer le caractère actuellement sous le curseur.Exemples
Prendre votre modèle de texte, d'image et le curseur au début du mot "
can
" (ligne 3).Tapant
spl<Esc>
en vi/vim.Ici, nous avons
s
pour substitute.pl
est le texte à insérer, et<Esc>
quitter le mode insertion. Mis ensemble, il va changercan
àplan
comme ceci:Tapant
cwcould<Esc>
en vi/vim.c
est pour change, etw
ditc
à supprimer par le mot suivant,can
. Ensuite, nous tapez le texte pour insérer mode,could
. Enfin, nous devons type de<Esc>
de nouveau pour quitter le mode insertion. La commande de changement decan
àcould
comme ceci:Tapant
rf
en vi/vim.Ici, nous avons le type de
r
pour replace, puisf
comme le nouveau personnage quir
utilise pour remplacer le caractère original avec. Cela changecan
àfan
comme ceci:Notes
Il y a beaucoup de caché utilise pour les commandes simples en vi/vim qui mettent en évidence plusieurs différences entre ces commandes. Depuis que je suis presque toujours utiliser vim vi, ces fonctionnalités peuvent être vim-exclusive, je ne suis pas certain.
Maximisation de l'utilité des commandes comme
c
,y
, etd
que prendre des motions nécessite d'avoir une bonne compréhension de texte-objets (typehelp text-objects
dans vim. Ce ne sont pas des vi.)Parce que
r
prend un caractère au lieu d'entrer en mode insertion, vous pouvez saisir des caractères qui seraient autrement difficiles à s'ajouter. En tapantr<C-R>
(c'estr
, puis ctrl-r
) remplace le caractère actuel avec un ctrl-r de caractère. Cela peut être surprenant, car en appuyant sur ctrl-r en mode insertion attend une autre clé qui est le registre de la pâte.Tous les trois de ces commandes peut être répété avec la
.
de commande, de remplacement, la modification ou le remplacement de la même région par rapport au curseur avec le texte donné.Lors de la saisie d'un numéro de
n
avant la commande,s
etc
supprimern
éléments (personnages pours
, ou des mouvements pourc
), puis insère le texte une fois. À l'aide d'un numéro den
avantr
, cependant, remplace la prochainen
personnages avec autant de copies du personnage choisi. Par exemple,4r0
pourrait remplacer1234
avec0000
tout à la fois.