Comment puis-je sélectionner un tas de texte et tout commenter?
Actuellement, je passe à la première ligne, passe en mode insertion puis saisis #
left-arrowdown-arrow puis je répète cette séquence, en enregistrant peut-être quelques touches en utilisant le .
fonction de répétition pour faire chaque ligne.
Existe-t-il de toute façon que je pourrais (par exemple) sélectionner plusieurs lignes en mode visuel ou en utilisant une plage de lignes et une commande ex ('colon') et pour cette plage commenter toutes les lignes avec un #
pour en faire un "commentaire de bloc".
La possibilité de "dé-commenter" rapidement (supprimer le #
) pour un commentaire de bloc serait aussi bien.
Vous pouvez le faire avec les commandes suivantes:
pour commenter:
:66,70s/^/#
pour ne pas commenter:
:66,70s/^#/
Évidemment, nous commentons ici les lignes de 66 à 70 (inclus).
Tout d'abord, déplacez le curseur sur le premier caractère de la première ligne du code de bloc que vous souhaitez commenter, puis tapez:
Ctrl + v
alors vim ira dans VISUAL BLOCK
mode. Utilisez j
pour déplacer le curseur vers le bas jusqu'à atteindre la dernière ligne de votre bloc de code. Tapez ensuite:
Shift + i
maintenant vim passe en mode INSERT
et le curseur est au premier caractère de la première ligne. Enfin, tapez #
puis ESC
et le bloc de code est maintenant commenté.
Pour décomposer, faites les mêmes choses mais au lieu de taper Shift + I
, vous tapez simplement x
pour supprimer tout #
après les avoir mis en surbrillance dans VISUAL BLOCK
mode.
Par souci d'exhaustivité, voici une autre façon:
v
up
/down
flèche ou j
/k
):s/^/# /
qui se traduit par: dans la sélection (:
) remplacer le début de la ligne (^
) avec `# 'Les étapes suivantes sont effectuées en mode commande:
mt
:'t,.s/^/#/
m#
, où #
désigne n'importe quelle lettre, place un marqueur à votre position actuelle. L'emplacement peut être référencé ultérieurement à l'aide de '#
, où #
est la même lettre que précédemment. Dans notre cas, nous avons utilisé la lettre t
:'t,.s/^/#/
se lit comme suit: :
le préfixe des commandes complexes't,.
définit la plage à laquelle la commande suivante doit s'appliquer. Dans notre cas, c'est du marqueur 't
jusqu'à la ligne actuelle .
s/^/#/
est une formule de substitution, remplaçant tous les débuts de ligne ^
avec un caractère littéral #
Utilisez l'un ou l'autre NERDCommenter comme mentionné, mais si ce n'est pas disponible, j'utilise les modes visuels. Je passe en mode Visual Line, fais ma sélection, souvent ses blocs d'espaces, donc je vais V{ puis passez en mode Visual Block avec Ctrl+Q puis insérez le symbole de commentaire au début des lignes avec I, donc pour commenter un bloc de texte, je ferais
V{<C-Q>I#<Esc>