Dans Vim , comment pourrais-je insérer des caractères au début de chaque ligne d'une sélection?
Par exemple, supposons que je veuille commenter un bloc de code en ajoutant //
au début de chaque ligne (en supposant que le système de commentaires de ma langue n'autorise pas les commentaires de bloc comme /* */
). Comment je ferais ça?
Pour plus d'informations et pour lire, consultez cet article connexe sur le wiki vim .
Ceci remplace le début de chaque ligne par "//":
:%s!^!//!
Ceci remplace le début de chaque ligne sélectionnée (utilisez le mode visuel pour sélectionner) par "//":
:'<,'>s!^!//!
Remarque que gv
(en mode normal) restaure la dernière sélection visuelle, cela est pratique de temps en temps.
Le schéma général pour rechercher et remplacer est le suivant:
:s/search/replace/
Remplace la première occurrence de 'search' par 'replace' pour la ligne actuelle
:s/search/replace/g
Remplace toutes les occurrences de 'recherche' par 'remplacer' pour la ligne actuelle, 'g' est l'abréviation de 'global'
Cette commande remplacera chaque occurrence de 'search' par 'replace' pour la ligne actuelle uniquement. Le% est utilisé pour rechercher dans tout le fichier. Pour confirmer chaque remplacement de manière interactive, ajoutez un «c» pour confirmer:
:%s/search/replace/c
Interactive confirme le remplacement de 'search' par 'replace' pour tout le fichier
Au lieu du caractère%, vous pouvez utiliser une plage de numéros de ligne (notez que le caractère '^' est un caractère de recherche spécial pour le début de la ligne) :
:14,20s/^/#/
Insère un caractère '#' au début des lignes 14-20
Si vous voulez utiliser un autre caractère de commentaire (comme //), changez le délimiteur de commande:
:14,20s!^!//!
Insère une séquence de caractères '//' au début des lignes 14-20
Ou vous pouvez toujours simplement échapper aux // caractères comme:
:14,20s/^/\/\//
Insère une séquence de caractères '//' au début des lignes 14-20
Si vous ne voyez pas de numéro de ligne dans votre éditeur, tapez simplement le texte suivant:
:set nu
Une autre façon qui pourrait être plus facile pour les nouveaux arrivants:
some█
code
here
Placez le curseur sur la première ligne, par exemple par
:1Enter
et tapez ce qui suit pour entrer en mode insertion et ajouter votre texte:
I//Space
// █some
code
here
Presse Esc pour revenir en mode commande et utiliser le digraphe:
j.j.
// some
// code
//█here
j est une commande de mouvement pour descendre une ligne et . répète la dernière commande d'édition que vous avez faite.
Et encore une autre façon:
Ceci ajoute #
au début de chaque ligne:
:%s/^/#/
Et les gens vont cesser de se plaindre de votre manque de commentaires appropriés.
Si vous voulez être très chic, mettez ceci dans votre fichier .vimrc:
vmap \c :s!^!//!<CR>
vmap \u :s!^//!!<CR>
Ensuite, chaque fois que vous êtes en mode visuel, vous pouvez appuyer sur \c
pour c omment le bloc et \u
pour u le commenter. Bien sûr, vous pouvez modifier ces raccourcis clavier.
Encore une autre manière:
:'<,'>g/^/norm I//
/^/
est juste un modèle factice pour correspondre à chaque ligne. norm
vous permet d'exécuter les commandes en mode normal qui suivent. I//
dit d'entrer en mode insertion en sautant le curseur au début de la ligne, puis d'insérer le texte suivant (deux barres obliques).
:g
est souvent utile pour faire quelque chose de complexe sur plusieurs lignes, où vous pouvez passer d’un mode à l’autre, supprimer ou ajouter des lignes, déplacer le curseur, exécuter un groupe de macros, etc. qui correspondent à un modèle.
Pour les blocs de code de commentaire, j'aime bien le plugin NERD Commenter .
Sélectionnez du texte:
Shift-V
...select the lines of text you want to comment....
Commentaire:
,cc
Uncomment:
,cu
Ou simplement basculer l'état de commentaire d'une ligne ou d'un bloc:
,c<space>
Je peux recommander le plugin EnhCommentify .
par exemple. mettez ceci à votre vimrc:
let maplocalleader=','
vmap <silent> <LocalLeader>c <Plug>VisualTraditional
nmap <silent> <LocalLeader>c <Plug>Traditional
let g:EnhCommentifyBindInInsert = 'No'
let g:EnhCommentifyMultiPartBlocks = 'Yes'
let g:EnhCommentifyPretty = 'Yes'
let g:EnhCommentifyRespectIndent = 'Yes'
let g:EnhCommentifyUseBlockIndent = 'Yes'
vous pouvez ensuite commenter/décommenter les lignes (sélectionnées) avec ', c'
Si la sélection multiligne de quelqu'un est en réalité un paragraphe, il n'est pas nécessaire de sélectionner manuellement les lignes. Vim peut le faire pour vous:
vip
: sélectionne et marque le paragraphe entiershift-i
: insère le texte au début de la ligneescape
: quitte le mode insertion/passe en mode normal [débuts de ligne toujours sélectionnés]escape
: désélectionne les débuts de ligneMarquez la zone à commenter comme un bloc visuel (<C-V
)
et faire c#<ESC>p
c
changez-le en "#"Si vous le faites souvent, définissez un raccourci (exemple \q
) dans votre fichier .vimrc
:vmap \q c#<ESC>p
Pour insérer "ABC" au début de chaque ligne:
1) Aller en mode commande
2):% norme IN ABC